diff options
author | Evan Martin <martine@danga.com> | 2010-12-16 19:52:24 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2010-12-23 19:20:33 (GMT) |
commit | 9a6fd1a97b64ea1245a7343aee1e584c401a391b (patch) | |
tree | 73e83a65f9c157ffdce98d45969cfa7c4f18757e /src/build_log_test.cc | |
parent | 12e36285ae52feca764e8fb2a417a87b913fe3e6 (diff) | |
download | Ninja-9a6fd1a97b64ea1245a7343aee1e584c401a391b.zip Ninja-9a6fd1a97b64ea1245a7343aee1e584c401a391b.tar.gz Ninja-9a6fd1a97b64ea1245a7343aee1e584c401a391b.tar.bz2 |
add a class for logging builds (commands + timing)
Diffstat (limited to 'src/build_log_test.cc')
-rw-r--r-- | src/build_log_test.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/build_log_test.cc b/src/build_log_test.cc new file mode 100644 index 0000000..6807a04 --- /dev/null +++ b/src/build_log_test.cc @@ -0,0 +1,43 @@ +#include "build_log.h" + +#include "test.h" + +struct BuildLogTest : public StateTestWithBuiltinRules { + virtual void SetUp() { + char mktemp_template[] = "BuildLogTest-XXXXXX"; + log_filename_ = mktemp(mktemp_template); + } + virtual void TearDown() { + unlink(log_filename_.c_str()); + } + + string log_filename_; +}; + +TEST_F(BuildLogTest, WriteRead) { + AssertParse(&state_, +"build out: cat mid\n" +"build mid: cat in\n"); + + BuildLog log1; + string err; + EXPECT_TRUE(log1.OpenForWrite(log_filename_, &err)); + ASSERT_EQ("", err); + log1.RecordCommand(state_.edges_[0], 15); + log1.RecordCommand(state_.edges_[1], 20); + log1.Close(); + + BuildLog log2; + EXPECT_TRUE(log2.Load(log_filename_, &err)); + ASSERT_EQ("", err); + + ASSERT_EQ(2, log1.log_.size()); + ASSERT_EQ(2, log2.log_.size()); + BuildLog::LogEntry* e1 = log1.LookupByOutput("out"); + ASSERT_TRUE(e1); + BuildLog::LogEntry* e2 = log2.LookupByOutput("out"); + ASSERT_TRUE(e2); + ASSERT_TRUE(*e1 == *e2); + ASSERT_EQ(15, e1->time_ms); + ASSERT_EQ("out", e1->output); +} |