cjhopman | 1b668a2e9 | 2014-09-09 16:30:40 | [diff] [blame] | 1 | // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #include "testing/gtest/include/gtest/gtest.h" |
| 6 | #include "tools/gn/ninja_group_target_writer.h" |
| 7 | #include "tools/gn/target.h" |
| 8 | #include "tools/gn/test_with_scope.h" |
| 9 | |
| 10 | TEST(NinjaGroupTargetWriter, Run) { |
cjhopman | 1b668a2e9 | 2014-09-09 16:30:40 | [diff] [blame] | 11 | Err err; |
sdefresne | 3fed805 | 2016-07-01 13:29:47 | [diff] [blame] | 12 | TestWithScope setup; |
cjhopman | 1b668a2e9 | 2014-09-09 16:30:40 | [diff] [blame] | 13 | |
cjhopman | 1b668a2e9 | 2014-09-09 16:30:40 | [diff] [blame] | 14 | Target target(setup.settings(), Label(SourceDir("//foo/"), "bar")); |
cjhopman | 1b668a2e9 | 2014-09-09 16:30:40 | [diff] [blame] | 15 | target.set_output_type(Target::GROUP); |
brettw | c2e821a3 | 2014-09-17 01:07:14 | [diff] [blame] | 16 | target.visibility().SetPublic(); |
cjhopman | 1b668a2e9 | 2014-09-09 16:30:40 | [diff] [blame] | 17 | |
| 18 | Target dep(setup.settings(), Label(SourceDir("//foo/"), "dep")); |
| 19 | dep.set_output_type(Target::ACTION); |
brettw | c2e821a3 | 2014-09-17 01:07:14 | [diff] [blame] | 20 | dep.visibility().SetPublic(); |
cjhopman | 1b668a2e9 | 2014-09-09 16:30:40 | [diff] [blame] | 21 | dep.SetToolchain(setup.toolchain()); |
| 22 | ASSERT_TRUE(dep.OnResolved(&err)); |
| 23 | |
| 24 | Target dep2(setup.settings(), Label(SourceDir("//foo/"), "dep2")); |
| 25 | dep2.set_output_type(Target::ACTION); |
brettw | c2e821a3 | 2014-09-17 01:07:14 | [diff] [blame] | 26 | dep2.visibility().SetPublic(); |
cjhopman | 1b668a2e9 | 2014-09-09 16:30:40 | [diff] [blame] | 27 | dep2.SetToolchain(setup.toolchain()); |
| 28 | ASSERT_TRUE(dep2.OnResolved(&err)); |
| 29 | |
| 30 | Target datadep(setup.settings(), Label(SourceDir("//foo/"), "datadep")); |
| 31 | datadep.set_output_type(Target::ACTION); |
brettw | c2e821a3 | 2014-09-17 01:07:14 | [diff] [blame] | 32 | datadep.visibility().SetPublic(); |
cjhopman | 1b668a2e9 | 2014-09-09 16:30:40 | [diff] [blame] | 33 | datadep.SetToolchain(setup.toolchain()); |
| 34 | ASSERT_TRUE(datadep.OnResolved(&err)); |
| 35 | |
brettw | c2e821a3 | 2014-09-17 01:07:14 | [diff] [blame] | 36 | target.public_deps().push_back(LabelTargetPair(&dep)); |
| 37 | target.public_deps().push_back(LabelTargetPair(&dep2)); |
| 38 | target.data_deps().push_back(LabelTargetPair(&datadep)); |
cjhopman | 1b668a2e9 | 2014-09-09 16:30:40 | [diff] [blame] | 39 | |
| 40 | target.SetToolchain(setup.toolchain()); |
| 41 | ASSERT_TRUE(target.OnResolved(&err)); |
| 42 | |
| 43 | std::ostringstream out; |
| 44 | NinjaGroupTargetWriter writer(&target, out); |
| 45 | writer.Run(); |
| 46 | |
| 47 | const char expected[] = |
| 48 | "build obj/foo/bar.stamp: stamp obj/foo/dep.stamp obj/foo/dep2.stamp || obj/foo/datadep.stamp\n"; |
| 49 | EXPECT_EQ(expected, out.str()); |
| 50 | } |