From: Evan Martin Date: Sun, 17 Oct 2010 17:12:46 +0000 (-0700) Subject: refactor, more tests X-Git-Tag: release-120715~765 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cecca8ad7d288247952bec31954a7872fca26f20;p=platform%2Fupstream%2Fninja.git refactor, more tests --- diff --git a/ninja_test.cc b/ninja_test.cc index 2087c0d..3132790 100644 --- a/ninja_test.cc +++ b/ninja_test.cc @@ -81,16 +81,18 @@ TEST(EvalString, OneVariable) { struct BuildTest : public testing::Test, public Shell { - BuildTest() { + BuildTest() : builder_(&state_), now_(1) { LoadManifest(); } void LoadManifest(); + void Touch(const string& path); // shell override virtual bool RunCommand(Edge* edge); State state_; + Builder builder_; int now_; vector commands_ran_; }; @@ -109,6 +111,10 @@ void BuildTest::LoadManifest() { ASSERT_EQ("", err); } +void BuildTest::Touch(const string& path) { + state_.stat_cache()->GetFile(path)->Touch(1); +} + bool BuildTest::RunCommand(Edge* edge) { commands_ran_.push_back(edge->EvaluateCommand()); if (edge->rule_->name_ == "cat") { @@ -125,22 +131,33 @@ bool BuildTest::RunCommand(Edge* edge) { } TEST_F(BuildTest, NoWork) { - Builder builder(&state_); - builder.AddTarget("bin"); + builder_.AddTarget("bin"); string err; - EXPECT_TRUE(builder.Build(this, &err)); + EXPECT_TRUE(builder_.Build(this, &err)); EXPECT_EQ("", err); EXPECT_EQ(0, commands_ran_.size()); } TEST_F(BuildTest, OneStep) { - // Given a dirtytarget with one ready input, + // Given a dirty target with one ready input, + // we should rebuild the target. + Touch("cat1"); + builder_.AddTarget("cat1"); + string err; + EXPECT_TRUE(builder_.Build(this, &err)); + EXPECT_EQ("", err); + + ASSERT_EQ(1, commands_ran_.size()); + EXPECT_EQ("cat in1 > cat1", commands_ran_[0]); +} + +TEST_F(BuildTest, OneStep2) { + // Given a target with one dirty input, // we should rebuild the target. - state_.stat_cache()->GetFile("cat1")->Touch(1); - Builder builder(&state_); - builder.AddTarget("cat1"); + Touch("in1"); + builder_.AddTarget("cat1"); string err; - EXPECT_TRUE(builder.Build(this, &err)); + EXPECT_TRUE(builder_.Build(this, &err)); EXPECT_EQ("", err); ASSERT_EQ(1, commands_ran_.size());