summaryrefslogtreecommitdiffstats
path: root/src/build_test.cc
diff options
context:
space:
mode:
authorNico Weber <thakis@chromium.org>2013-04-09 04:08:19 (GMT)
committerEvan Martin <martine@danga.com>2013-04-09 04:08:19 (GMT)
commitba1642091f67f3e71da1fe2768dd54146beb9c63 (patch)
treeff7e93d27bf76069735ce195fa52a446efa99d6c /src/build_test.cc
parent0397155218f3d311200ec4e25786028f14c53c6a (diff)
downloadNinja-ba1642091f67f3e71da1fe2768dd54146beb9c63.zip
Ninja-ba1642091f67f3e71da1fe2768dd54146beb9c63.tar.gz
Ninja-ba1642091f67f3e71da1fe2768dd54146beb9c63.tar.bz2
Make deps=gcc without depfile an error.
When I first played with depslog, I accidentally removed the depfile attribute on my cc edges, which had the effect of ninja silently ignoring all depfiles. Instead, let ninja complain about edges that have deps set to gcc and depfile set to nothing. This is done at edge build time, instead of at mainfest load time, because adding this check to ParseEdge() regressed empty build time for target 'chrome' by 30ms. The check is only useful for generator authors, regular users should never see this.
Diffstat (limited to 'src/build_test.cc')
-rw-r--r--src/build_test.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/build_test.cc b/src/build_test.cc
index a227854..7df742f 100644
--- a/src/build_test.cc
+++ b/src/build_test.cc
@@ -1353,6 +1353,24 @@ TEST_F(BuildTest, PhonyWithNoInputs) {
ASSERT_EQ(1u, command_runner_.commands_ran_.size());
}
+TEST_F(BuildTest, DepsGccWithEmptyDeps) {
+ ASSERT_NO_FATAL_FAILURE(AssertParse(&state_,
+"rule cc\n"
+" command = cc\n"
+" deps = gcc\n"
+"build out: cc\n"));
+ Dirty("out");
+
+ string err;
+ EXPECT_TRUE(builder_.AddTarget("out", &err));
+ ASSERT_EQ("", err);
+ EXPECT_FALSE(builder_.AlreadyUpToDate());
+
+ EXPECT_FALSE(builder_.Build(&err));
+ ASSERT_EQ("subcommand failed", err);
+ ASSERT_EQ(1u, command_runner_.commands_ran_.size());
+}
+
TEST_F(BuildTest, StatusFormatReplacePlaceholder) {
EXPECT_EQ("[%/s0/t0/r0/u0/f0]",
status_.FormatProgressStatus("[%%/s%s/t%t/r%r/u%u/f%f]"));