Index: tools/gn/ninja_group_target_writer_unittest.cc |
diff --git a/tools/gn/ninja_group_target_writer_unittest.cc b/tools/gn/ninja_group_target_writer_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0aec35c5890354b003c6b2af6e92da1fbc9ed439 |
--- /dev/null |
+++ b/tools/gn/ninja_group_target_writer_unittest.cc |
@@ -0,0 +1,48 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "tools/gn/ninja_group_target_writer.h" |
+#include "tools/gn/target.h" |
+#include "tools/gn/test_with_scope.h" |
+ |
+TEST(NinjaGroupTargetWriter, Run) { |
+ TestWithScope setup; |
+ Err err; |
+ |
+ setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/")); |
+ Target target(setup.settings(), Label(SourceDir("//foo/"), "bar")); |
+ |
+ target.set_output_type(Target::GROUP); |
+ |
+ Target dep(setup.settings(), Label(SourceDir("//foo/"), "dep")); |
+ dep.set_output_type(Target::ACTION); |
+ dep.SetToolchain(setup.toolchain()); |
+ ASSERT_TRUE(dep.OnResolved(&err)); |
+ |
+ Target dep2(setup.settings(), Label(SourceDir("//foo/"), "dep2")); |
+ dep2.set_output_type(Target::ACTION); |
+ dep2.SetToolchain(setup.toolchain()); |
+ ASSERT_TRUE(dep2.OnResolved(&err)); |
+ |
+ Target datadep(setup.settings(), Label(SourceDir("//foo/"), "datadep")); |
+ datadep.set_output_type(Target::ACTION); |
+ datadep.SetToolchain(setup.toolchain()); |
+ ASSERT_TRUE(datadep.OnResolved(&err)); |
+ |
+ target.deps().push_back(LabelTargetPair(&dep)); |
+ target.deps().push_back(LabelTargetPair(&dep2)); |
+ target.datadeps().push_back(LabelTargetPair(&datadep)); |
+ |
+ target.SetToolchain(setup.toolchain()); |
+ ASSERT_TRUE(target.OnResolved(&err)); |
+ |
+ std::ostringstream out; |
+ NinjaGroupTargetWriter writer(&target, out); |
+ writer.Run(); |
+ |
+ const char expected[] = |
+ "build obj/foo/bar.stamp: stamp obj/foo/dep.stamp obj/foo/dep2.stamp || obj/foo/datadep.stamp\n"; |
+ EXPECT_EQ(expected, out.str()); |
+} |