Have the clean tool remove depfiles
authorPeter Collingbourne <peter@pcc.me.uk>
Fri, 25 Nov 2011 15:18:49 +0000 (15:18 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Tue, 6 Dec 2011 09:07:45 +0000 (11:07 +0200)
src/clean.cc
src/clean_test.cc

index 033fa96393f443c9b1803f658fdce31edb4e0396..a89e1f59378a6531d276db50bc7472078f42e407 100644 (file)
@@ -111,6 +111,8 @@ int Cleaner::CleanAll(bool generator) {
          out_node != (*e)->outputs_.end(); ++out_node) {
       Remove((*out_node)->file_->path_);
     }
+    if (!(*e)->rule_->depfile_.empty())
+      Remove((*e)->EvaluateDepFile());
   }
   PrintFooter();
   return status_;
index 86062395378f39ac7b6707db3b5f4d11a41388fd..9cd4a953bd48b309dcc16d374538de63c1f4ec5d 100644 (file)
@@ -234,6 +234,21 @@ TEST_F(CleanTest, CleanRuleGenerator) {
   EXPECT_EQ(2u, fs_.files_removed_.size());
 }
 
+TEST_F(CleanTest, CleanDepFile) {
+  ASSERT_NO_FATAL_FAILURE(AssertParse(&state_,
+"rule cc\n"
+"  command = cc $in > $out\n"
+"  depfile = $out.d\n"
+"build out1: cc in1\n"));
+  fs_.Create("out1", 1, "");
+  fs_.Create("out1.d", 1, "");
+
+  Cleaner cleaner(&state_, config_, &fs_);
+  EXPECT_EQ(0, cleaner.CleanAll());
+  EXPECT_EQ(2, cleaner.cleaned_files_count());
+  EXPECT_EQ(2u, fs_.files_removed_.size());
+}
+
 TEST_F(CleanTest, CleanFailure) {
   ASSERT_NO_FATAL_FAILURE(AssertParse(&state_,
                                       "build dir: cat src1\n"));