summaryrefslogtreecommitdiffstats
path: root/src/build_log_test.cc
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2010-12-16 19:52:24 (GMT)
committerEvan Martin <martine@danga.com>2010-12-23 19:20:33 (GMT)
commit9a6fd1a97b64ea1245a7343aee1e584c401a391b (patch)
tree73e83a65f9c157ffdce98d45969cfa7c4f18757e /src/build_log_test.cc
parent12e36285ae52feca764e8fb2a417a87b913fe3e6 (diff)
downloadNinja-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.cc43
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);
+}