Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / tools / gn / ninja_action_target_writer_unittest.cc
index b2b7f7f..8c295c9 100644 (file)
@@ -8,18 +8,26 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "tools/gn/ninja_action_target_writer.h"
 #include "tools/gn/substitution_list.h"
+#include "tools/gn/target.h"
 #include "tools/gn/test_with_scope.h"
 
 TEST(NinjaActionTargetWriter, WriteOutputFilesForBuildLine) {
   TestWithScope setup;
+  Err err;
+
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
+
   Target target(setup.settings(), Label(SourceDir("//foo/"), "bar"));
+  target.set_output_type(Target::ACTION_FOREACH);
   target.action_values().outputs() = SubstitutionList::MakeForTest(
       "//out/Debug/gen/a b{{source_name_part}}.h",
       "//out/Debug/gen/{{source_name_part}}.cc");
 
+  target.SetToolchain(setup.toolchain());
+  ASSERT_TRUE(target.OnResolved(&err));
+
   std::ostringstream out;
-  NinjaActionTargetWriter writer(&target, setup.toolchain(), out);
+  NinjaActionTargetWriter writer(&target, out);
 
   SourceFile source("//foo/bar.in");
   std::vector<OutputFile> output_files;
@@ -31,6 +39,8 @@ TEST(NinjaActionTargetWriter, WriteOutputFilesForBuildLine) {
 // Tests an action with no sources.
 TEST(NinjaActionTargetWriter, ActionNoSources) {
   TestWithScope setup;
+  Err err;
+
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
   Target target(setup.settings(), Label(SourceDir("//foo/"), "bar"));
   target.set_output_type(Target::ACTION);
@@ -41,12 +51,15 @@ TEST(NinjaActionTargetWriter, ActionNoSources) {
   target.action_values().outputs() =
       SubstitutionList::MakeForTest("//out/Debug/foo.out");
 
+  target.SetToolchain(setup.toolchain());
+  ASSERT_TRUE(target.OnResolved(&err));
+
   setup.settings()->set_target_os(Settings::LINUX);
   setup.build_settings()->set_python_path(base::FilePath(FILE_PATH_LITERAL(
       "/usr/bin/python")));
 
   std::ostringstream out;
-  NinjaActionTargetWriter writer(&target, setup.toolchain(), out);
+  NinjaActionTargetWriter writer(&target, out);
   writer.Run();
 
   const char expected[] =
@@ -67,6 +80,8 @@ TEST(NinjaActionTargetWriter, ActionNoSources) {
 // both sources and inputs (ACTION_FOREACH treats the sources differently).
 TEST(NinjaActionTargetWriter, ActionWithSources) {
   TestWithScope setup;
+  Err err;
+
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
   Target target(setup.settings(), Label(SourceDir("//foo/"), "bar"));
   target.set_output_type(Target::ACTION);
@@ -79,6 +94,9 @@ TEST(NinjaActionTargetWriter, ActionWithSources) {
   target.action_values().outputs() =
       SubstitutionList::MakeForTest("//out/Debug/foo.out");
 
+  target.SetToolchain(setup.toolchain());
+  ASSERT_TRUE(target.OnResolved(&err));
+
   // Posix.
   {
     setup.settings()->set_target_os(Settings::LINUX);
@@ -86,7 +104,7 @@ TEST(NinjaActionTargetWriter, ActionWithSources) {
         "/usr/bin/python")));
 
     std::ostringstream out;
-    NinjaActionTargetWriter writer(&target, setup.toolchain(), out);
+    NinjaActionTargetWriter writer(&target, out);
     writer.Run();
 
     const char expected_linux[] =
@@ -112,7 +130,7 @@ TEST(NinjaActionTargetWriter, ActionWithSources) {
     setup.settings()->set_target_os(Settings::WIN);
 
     std::ostringstream out;
-    NinjaActionTargetWriter writer(&target, setup.toolchain(), out);
+    NinjaActionTargetWriter writer(&target, out);
     writer.Run();
 
     const char expected_win[] =
@@ -134,6 +152,8 @@ TEST(NinjaActionTargetWriter, ActionWithSources) {
 
 TEST(NinjaActionTargetWriter, ForEach) {
   TestWithScope setup;
+  Err err;
+
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
 
   // Some dependencies that the action can depend on. Use actions for these
@@ -142,13 +162,20 @@ TEST(NinjaActionTargetWriter, ForEach) {
   // binaries).
   Target dep(setup.settings(), Label(SourceDir("//foo/"), "dep"));
   dep.set_output_type(Target::ACTION);
+  dep.visibility().SetPublic();
+  dep.SetToolchain(setup.toolchain());
+  ASSERT_TRUE(dep.OnResolved(&err));
+
   Target datadep(setup.settings(), Label(SourceDir("//foo/"), "datadep"));
   datadep.set_output_type(Target::ACTION);
+  datadep.visibility().SetPublic();
+  datadep.SetToolchain(setup.toolchain());
+  ASSERT_TRUE(datadep.OnResolved(&err));
 
   Target target(setup.settings(), Label(SourceDir("//foo/"), "bar"));
   target.set_output_type(Target::ACTION_FOREACH);
-  target.deps().push_back(LabelTargetPair(&dep));
-  target.datadeps().push_back(LabelTargetPair(&datadep));
+  target.private_deps().push_back(LabelTargetPair(&dep));
+  target.data_deps().push_back(LabelTargetPair(&datadep));
 
   target.sources().push_back(SourceFile("//foo/input1.txt"));
   target.sources().push_back(SourceFile("//foo/input2.txt"));
@@ -164,6 +191,9 @@ TEST(NinjaActionTargetWriter, ForEach) {
 
   target.inputs().push_back(SourceFile("//foo/included.txt"));
 
+  target.SetToolchain(setup.toolchain());
+  ASSERT_TRUE(target.OnResolved(&err));
+
   // Posix.
   {
     setup.settings()->set_target_os(Settings::LINUX);
@@ -171,7 +201,7 @@ TEST(NinjaActionTargetWriter, ForEach) {
         "/usr/bin/python")));
 
     std::ostringstream out;
-    NinjaActionTargetWriter writer(&target, setup.toolchain(), out);
+    NinjaActionTargetWriter writer(&target, out);
     writer.Run();
 
     const char expected_linux[] =
@@ -196,7 +226,7 @@ TEST(NinjaActionTargetWriter, ForEach) {
         "  source_name_part = input2\n"
         "\n"
         "build obj/foo/bar.stamp: "
-            "stamp input1.out input2.out obj/foo/datadep.stamp\n";
+            "stamp input1.out input2.out || obj/foo/datadep.stamp\n";
 
     std::string out_str = out.str();
 #if defined(OS_WIN)
@@ -212,7 +242,7 @@ TEST(NinjaActionTargetWriter, ForEach) {
     setup.settings()->set_target_os(Settings::WIN);
 
     std::ostringstream out;
-    NinjaActionTargetWriter writer(&target, setup.toolchain(), out);
+    NinjaActionTargetWriter writer(&target, out);
     writer.Run();
 
     const char expected_win[] =
@@ -241,13 +271,15 @@ TEST(NinjaActionTargetWriter, ForEach) {
         "  source_name_part = input2\n"
         "\n"
         "build obj/foo/bar.stamp: "
-            "stamp input1.out input2.out obj/foo/datadep.stamp\n";
+            "stamp input1.out input2.out || obj/foo/datadep.stamp\n";
     EXPECT_EQ(expected_win, out.str());
   }
 }
 
 TEST(NinjaActionTargetWriter, ForEachWithDepfile) {
   TestWithScope setup;
+  Err err;
+
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
   Target target(setup.settings(), Label(SourceDir("//foo/"), "bar"));
   target.set_output_type(Target::ACTION_FOREACH);
@@ -257,8 +289,10 @@ TEST(NinjaActionTargetWriter, ForEachWithDepfile) {
 
   target.action_values().set_script(SourceFile("//foo/script.py"));
 
+  target.SetToolchain(setup.toolchain());
+  ASSERT_TRUE(target.OnResolved(&err));
+
   SubstitutionPattern depfile;
-  Err err;
   ASSERT_TRUE(
       depfile.Parse("//out/Debug/gen/{{source_name_part}}.d", NULL, &err));
   target.action_values().set_depfile(depfile);
@@ -279,7 +313,7 @@ TEST(NinjaActionTargetWriter, ForEachWithDepfile) {
         "/usr/bin/python")));
 
     std::ostringstream out;
-    NinjaActionTargetWriter writer(&target, setup.toolchain(), out);
+    NinjaActionTargetWriter writer(&target, out);
     writer.Run();
 
     const char expected_linux[] =
@@ -315,7 +349,7 @@ TEST(NinjaActionTargetWriter, ForEachWithDepfile) {
     setup.settings()->set_target_os(Settings::WIN);
 
     std::ostringstream out;
-    NinjaActionTargetWriter writer(&target, setup.toolchain(), out);
+    NinjaActionTargetWriter writer(&target, out);
     writer.Run();
 
     const char expected_win[] =