diff options
author | Nico Weber <thakis@chromium.org> | 2013-04-09 04:08:19 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2013-04-09 04:08:19 (GMT) |
commit | ba1642091f67f3e71da1fe2768dd54146beb9c63 (patch) | |
tree | ff7e93d27bf76069735ce195fa52a446efa99d6c /src/build_test.cc | |
parent | 0397155218f3d311200ec4e25786028f14c53c6a (diff) | |
download | Ninja-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.cc | 18 |
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]")); |