diff options
Diffstat (limited to 'src/build_log_test.cc')
-rw-r--r-- | src/build_log_test.cc | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/build_log_test.cc b/src/build_log_test.cc index 9fb42c9..a6c2a86 100644 --- a/src/build_log_test.cc +++ b/src/build_log_test.cc @@ -20,9 +20,7 @@ #ifdef _WIN32 #include <fcntl.h> #include <share.h> -#endif - -#ifdef linux +#else #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> @@ -32,6 +30,8 @@ const char kTestFilename[] = "BuildLogTest-tempfile"; struct BuildLogTest : public StateTestWithBuiltinRules { virtual void SetUp() { + // In case a crashing test left a stale file behind. + unlink(kTestFilename); } virtual void TearDown() { unlink(kTestFilename); @@ -55,8 +55,8 @@ TEST_F(BuildLogTest, WriteRead) { EXPECT_TRUE(log2.Load(kTestFilename, &err)); ASSERT_EQ("", err); - ASSERT_EQ(2u, log1.log().size()); - ASSERT_EQ(2u, log2.log().size()); + ASSERT_EQ(2u, log1.entries().size()); + ASSERT_EQ(2u, log2.entries().size()); BuildLog::LogEntry* e1 = log1.LookupByOutput("out"); ASSERT_TRUE(e1); BuildLog::LogEntry* e2 = log2.LookupByOutput("out"); @@ -131,8 +131,16 @@ TEST_F(BuildLogTest, Truncate) { ASSERT_GT(statbuf.st_size, 0); // For all possible truncations of the input file, assert that we don't - // crash or report an error when parsing. + // crash when parsing. for (off_t size = statbuf.st_size; size > 0; --size) { + BuildLog log2; + string err; + EXPECT_TRUE(log2.OpenForWrite(kTestFilename, &err)); + ASSERT_EQ("", err); + log2.RecordCommand(state_.edges_[0], 15, 18); + log2.RecordCommand(state_.edges_[1], 20, 25); + log2.Close(); + #ifndef _WIN32 ASSERT_EQ(0, truncate(kTestFilename, size)); #else @@ -142,9 +150,9 @@ TEST_F(BuildLogTest, Truncate) { _close(fh); #endif - BuildLog log2; - EXPECT_TRUE(log2.Load(kTestFilename, &err)); - ASSERT_EQ("", err); + BuildLog log3; + err.clear(); + ASSERT_TRUE(log3.Load(kTestFilename, &err) || !err.empty()); } } @@ -156,7 +164,7 @@ TEST_F(BuildLogTest, ObsoleteOldVersion) { string err; BuildLog log; - EXPECT_FALSE(log.Load(kTestFilename, &err)); + EXPECT_TRUE(log.Load(kTestFilename, &err)); ASSERT_NE(err.find("version"), string::npos); } |