summaryrefslogtreecommitdiffstats
path: root/src/depfile_parser_test.cc
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-10-08 13:14:58 (GMT)
committerBrad King <brad.king@kitware.com>2018-11-19 15:23:51 (GMT)
commit8a9edb110354d5468ab42685cfece6a073146f27 (patch)
treeffe78231c4bdc8ad7e3a277a2b6b4f1822f5de0a /src/depfile_parser_test.cc
parent4a4f9d40e178a9a9e88f4cd502d2be49bf7938d8 (diff)
downloadNinja-8a9edb110354d5468ab42685cfece6a073146f27.zip
Ninja-8a9edb110354d5468ab42685cfece6a073146f27.tar.gz
Ninja-8a9edb110354d5468ab42685cfece6a073146f27.tar.bz2
Restore depfile toleration of multiple output paths on distinct lines
Prior to introduction of depfile parser handling of multiple rules, ninja silently accepted a depfile of the form: out: in1 in2 in3 other: otherIn1 otherIn2 otherIn3 and incorrectly treated `other` and `otherIn*` as additional inputs to `out`. Now we prefer to reject this just as we already do for a depfile specifying multiple outputs on one line. However, this can break existing cases where such a depfile was silently tolerated. Add a `-w depfilemulti={err,warn}` option to control this behavior, and make it just a warning by default.
Diffstat (limited to 'src/depfile_parser_test.cc')
-rw-r--r--src/depfile_parser_test.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/depfile_parser_test.cc b/src/depfile_parser_test.cc
index 70e4029..52fe7cd 100644
--- a/src/depfile_parser_test.cc
+++ b/src/depfile_parser_test.cc
@@ -276,8 +276,15 @@ TEST_F(DepfileParserTest, MultipleRulesTolerateMP) {
TEST_F(DepfileParserTest, MultipleRulesRejectDifferentOutputs) {
// check that multiple different outputs are rejected by the parser
// when spread across multiple rules
+ DepfileParserOptions parser_opts;
+ parser_opts.depfile_distinct_target_lines_action_ =
+ kDepfileDistinctTargetLinesActionError;
+ DepfileParser parser(parser_opts);
string err;
- EXPECT_FALSE(Parse("foo: x y\n"
- "bar: y z\n", &err));
- ASSERT_EQ("depfile has multiple output paths", err);
+ string input =
+ "foo: x y\n"
+ "bar: y z\n";
+ EXPECT_FALSE(parser.Parse(&input, &err));
+ ASSERT_EQ("depfile has multiple output paths (on separate lines)"
+ " [-w depfilemulti=err]", err);
}