summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2011-01-07 21:54:52 (GMT)
committerEvan Martin <martine@danga.com>2011-01-07 21:54:52 (GMT)
commit681de18033236071e822ca709d912d32cd4b2f83 (patch)
treefb204cdd86ee0937e5f0d1a14eade300e16f1b11
parente5ae916071a4e8467d7649a5cc700ca7310b6b69 (diff)
downloadNinja-681de18033236071e822ca709d912d32cd4b2f83.zip
Ninja-681de18033236071e822ca709d912d32cd4b2f83.tar.gz
Ninja-681de18033236071e822ca709d912d32cd4b2f83.tar.bz2
later entry in build log should overwrite earlier one
-rw-r--r--src/build_log.cc2
-rw-r--r--src/build_log_test.cc16
2 files changed, 17 insertions, 1 deletions
diff --git a/src/build_log.cc b/src/build_log.cc
index ba09b46..65567da 100644
--- a/src/build_log.cc
+++ b/src/build_log.cc
@@ -76,7 +76,7 @@ bool BuildLog::Load(const string& path, string* err) {
start = end + 1;
end = strchr(start, '\n');
entry->command = string(start, end - start);
- log_.insert(make_pair(entry->output, entry));
+ log_[entry->output] = entry;
}
return true;
diff --git a/src/build_log_test.cc b/src/build_log_test.cc
index 6807a04..11c0e09 100644
--- a/src/build_log_test.cc
+++ b/src/build_log_test.cc
@@ -41,3 +41,19 @@ TEST_F(BuildLogTest, WriteRead) {
ASSERT_EQ(15, e1->time_ms);
ASSERT_EQ("out", e1->output);
}
+
+TEST_F(BuildLogTest, DoubleEntry) {
+ FILE* f = fopen(log_filename_.c_str(), "wb");
+ fprintf(f, "0 out command abc\n");
+ fprintf(f, "0 out command def\n");
+ fclose(f);
+
+ string err;
+ BuildLog log;
+ EXPECT_TRUE(log.Load(log_filename_, &err));
+ ASSERT_EQ("", err);
+
+ BuildLog::LogEntry* e = log.LookupByOutput("out");
+ ASSERT_TRUE(e);
+ ASSERT_EQ("command def", e->command);
+}