diff options
author | Nico Weber <nicolasweber@gmx.de> | 2016-02-03 21:07:11 (GMT) |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2016-02-03 21:07:11 (GMT) |
commit | f38a52c8393f5c850e378e8e6ad97ba589c253db (patch) | |
tree | 22d9fa1c9770cc962037a779909925f3aa45ecd1 /src/manifest_parser_test.cc | |
parent | 27c87c5efdb5c5243550a9261c122a1e9d7d0c75 (diff) | |
parent | cc39240a10fb040fca80bf3669245f2f2d5736c5 (diff) | |
download | Ninja-f38a52c8393f5c850e378e8e6ad97ba589c253db.zip Ninja-f38a52c8393f5c850e378e8e6ad97ba589c253db.tar.gz Ninja-f38a52c8393f5c850e378e8e6ad97ba589c253db.tar.bz2 |
Merge pull request #989 from bradking/implicit-outputs
Add support for build statement implicit outputs
Diffstat (limited to 'src/manifest_parser_test.cc')
-rw-r--r-- | src/manifest_parser_test.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/manifest_parser_test.cc b/src/manifest_parser_test.cc index cb9f405..e8c1907 100644 --- a/src/manifest_parser_test.cc +++ b/src/manifest_parser_test.cc @@ -927,6 +927,40 @@ TEST_F(ParserTest, OrderOnly) { ASSERT_TRUE(edge->is_order_only(1)); } +TEST_F(ParserTest, ImplicitOutput) { + ASSERT_NO_FATAL_FAILURE(AssertParse( +"rule cat\n" +" command = cat $in > $out\n" +"build foo | imp: cat bar\n")); + + Edge* edge = state.LookupNode("imp")->in_edge(); + ASSERT_EQ(edge->outputs_.size(), 2); + EXPECT_TRUE(edge->is_implicit_out(1)); +} + +TEST_F(ParserTest, ImplicitOutputEmpty) { + ASSERT_NO_FATAL_FAILURE(AssertParse( +"rule cat\n" +" command = cat $in > $out\n" +"build foo | : cat bar\n")); + + Edge* edge = state.LookupNode("foo")->in_edge(); + ASSERT_EQ(edge->outputs_.size(), 1); + EXPECT_FALSE(edge->is_implicit_out(0)); +} + +TEST_F(ParserTest, NoExplicitOutput) { + ManifestParser parser(&state, NULL, kDupeEdgeActionWarn); + string err; + EXPECT_FALSE(parser.ParseTest( +"rule cat\n" +" command = cat $in > $out\n" +"build | imp : cat bar\n", &err)); + ASSERT_EQ("input:3: expected path\n" + "build | imp : cat bar\n" + " ^ near here", err); +} + TEST_F(ParserTest, DefaultDefault) { ASSERT_NO_FATAL_FAILURE(AssertParse( "rule cat\n command = cat $in > $out\n" |