| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "tools/gn/ninja_binary_target_writer.h" | 5 #include "tools/gn/ninja_binary_target_writer.h" | 
| 6 | 6 | 
| 7 #include <sstream> | 7 #include <sstream> | 
| 8 #include <utility> | 8 #include <utility> | 
| 9 | 9 | 
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" | 
| (...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 847 | 847 | 
| 848   EXPECT_FALSE(scheduler.is_failed()); | 848   EXPECT_FALSE(scheduler.is_failed()); | 
| 849 | 849 | 
| 850   std::ostringstream out; | 850   std::ostringstream out; | 
| 851   NinjaBinaryTargetWriter writer(&target, out); | 851   NinjaBinaryTargetWriter writer(&target, out); | 
| 852   writer.Run(); | 852   writer.Run(); | 
| 853 | 853 | 
| 854   // Should have issued an error. | 854   // Should have issued an error. | 
| 855   EXPECT_TRUE(scheduler.is_failed()); | 855   EXPECT_TRUE(scheduler.is_failed()); | 
| 856 } | 856 } | 
|  | 857 | 
|  | 858 // This tests that output extension and output dir overrides apply, and input | 
|  | 859 // dependencies are applied. | 
|  | 860 TEST(NinjaBinaryTargetWriter, InputFiles) { | 
|  | 861   TestWithScope setup; | 
|  | 862   Err err; | 
|  | 863 | 
|  | 864   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/")); | 
|  | 865 | 
|  | 866   // This target has one input. | 
|  | 867   { | 
|  | 868     Target target(setup.settings(), Label(SourceDir("//foo/"), "bar")); | 
|  | 869     target.set_output_type(Target::SOURCE_SET); | 
|  | 870     target.visibility().SetPublic(); | 
|  | 871     target.sources().push_back(SourceFile("//foo/input1.cc")); | 
|  | 872     target.sources().push_back(SourceFile("//foo/input2.cc")); | 
|  | 873     target.inputs().push_back(SourceFile("//foo/input.data")); | 
|  | 874     target.SetToolchain(setup.toolchain()); | 
|  | 875     ASSERT_TRUE(target.OnResolved(&err)); | 
|  | 876 | 
|  | 877     std::ostringstream out; | 
|  | 878     NinjaBinaryTargetWriter writer(&target, out); | 
|  | 879     writer.Run(); | 
|  | 880 | 
|  | 881     const char expected[] = | 
|  | 882         "defines =\n" | 
|  | 883         "include_dirs =\n" | 
|  | 884         "cflags =\n" | 
|  | 885         "cflags_cc =\n" | 
|  | 886         "root_out_dir = .\n" | 
|  | 887         "target_out_dir = obj/foo\n" | 
|  | 888         "target_output_name = bar\n" | 
|  | 889         "\n" | 
|  | 890         "build obj/foo/bar.input1.o: cxx ../../foo/input1.cc" | 
|  | 891           " | ../../foo/input.data\n" | 
|  | 892         "build obj/foo/bar.input2.o: cxx ../../foo/input2.cc" | 
|  | 893           " | ../../foo/input.data\n" | 
|  | 894         "\n" | 
|  | 895         "build obj/foo/bar.stamp: stamp obj/foo/bar.input1.o " | 
|  | 896             "obj/foo/bar.input2.o\n"; | 
|  | 897 | 
|  | 898     EXPECT_EQ(expected, out.str()); | 
|  | 899   } | 
|  | 900 | 
|  | 901   // This target has multiple inputs. | 
|  | 902   { | 
|  | 903     Target target(setup.settings(), Label(SourceDir("//foo/"), "bar")); | 
|  | 904     target.set_output_type(Target::SOURCE_SET); | 
|  | 905     target.visibility().SetPublic(); | 
|  | 906     target.sources().push_back(SourceFile("//foo/input1.cc")); | 
|  | 907     target.sources().push_back(SourceFile("//foo/input2.cc")); | 
|  | 908     target.inputs().push_back(SourceFile("//foo/input1.data")); | 
|  | 909     target.inputs().push_back(SourceFile("//foo/input2.data")); | 
|  | 910     target.SetToolchain(setup.toolchain()); | 
|  | 911     ASSERT_TRUE(target.OnResolved(&err)); | 
|  | 912 | 
|  | 913     std::ostringstream out; | 
|  | 914     NinjaBinaryTargetWriter writer(&target, out); | 
|  | 915     writer.Run(); | 
|  | 916 | 
|  | 917     const char expected[] = | 
|  | 918         "defines =\n" | 
|  | 919         "include_dirs =\n" | 
|  | 920         "cflags =\n" | 
|  | 921         "cflags_cc =\n" | 
|  | 922         "root_out_dir = .\n" | 
|  | 923         "target_out_dir = obj/foo\n" | 
|  | 924         "target_output_name = bar\n" | 
|  | 925         "\n" | 
|  | 926         "build obj/foo/bar.inputs.stamp: stamp" | 
|  | 927           " ../../foo/input1.data ../../foo/input2.data\n" | 
|  | 928         "build obj/foo/bar.input1.o: cxx ../../foo/input1.cc" | 
|  | 929           " | obj/foo/bar.inputs.stamp\n" | 
|  | 930         "build obj/foo/bar.input2.o: cxx ../../foo/input2.cc" | 
|  | 931           " | obj/foo/bar.inputs.stamp\n" | 
|  | 932         "\n" | 
|  | 933         "build obj/foo/bar.stamp: stamp obj/foo/bar.input1.o " | 
|  | 934             "obj/foo/bar.input2.o\n"; | 
|  | 935 | 
|  | 936     EXPECT_EQ(expected, out.str()); | 
|  | 937   } | 
|  | 938 } | 
| OLD | NEW | 
|---|