diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2012-02-26 22:32:48 (GMT) |
---|---|---|
committer | Peter Collingbourne <pcc03@doc.ic.ac.uk> | 2012-02-28 18:12:01 (GMT) |
commit | 3353e5508614598ff18592bda55f68a6223911cf (patch) | |
tree | 0f34480996f8942a120408fa5d31ea2798ecbc85 /src/clean_test.cc | |
parent | eab83e9774330a754e44ba023781e1c0a07d923f (diff) | |
download | Ninja-3353e5508614598ff18592bda55f68a6223911cf.zip Ninja-3353e5508614598ff18592bda55f68a6223911cf.tar.gz Ninja-3353e5508614598ff18592bda55f68a6223911cf.tar.bz2 |
Don't delete phony targets when cleaning a specified target
Also, modify Cleaner::CleanAll to use Edge::is_phony.
Diffstat (limited to 'src/clean_test.cc')
-rw-r--r-- | src/clean_test.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/clean_test.cc b/src/clean_test.cc index fbbe6a1..a93a3b4 100644 --- a/src/clean_test.cc +++ b/src/clean_test.cc @@ -317,3 +317,28 @@ TEST_F(CleanTest, CleanFailure) { Cleaner cleaner(&state_, config_, &fs_); EXPECT_NE(0, cleaner.CleanAll()); } + +TEST_F(CleanTest, CleanPhony) { + ASSERT_NO_FATAL_FAILURE(AssertParse(&state_, +"build phony: phony t1 t2\n" +"build t1: cat\n" +"build t2: cat\n")); + + fs_.Create("phony", 1, ""); + fs_.Create("t1", 1, ""); + fs_.Create("t2", 1, ""); + + // Check that CleanAll does not remove "phony". + Cleaner cleaner(&state_, config_, &fs_); + EXPECT_EQ(0, cleaner.CleanAll()); + EXPECT_EQ(2, cleaner.cleaned_files_count()); + EXPECT_NE(0, fs_.Stat("phony")); + + fs_.Create("t1", 1, ""); + fs_.Create("t2", 1, ""); + + // Check that CleanTarget does not remove "phony". + EXPECT_EQ(0, cleaner.CleanTarget("phony")); + EXPECT_EQ(2, cleaner.cleaned_files_count()); + EXPECT_NE(0, fs_.Stat("phony")); +} |