summaryrefslogtreecommitdiffstats
path: root/src/deps_log_test.cc
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2013-04-09 16:58:54 (GMT)
committerNico Weber <nicolasweber@gmx.de>2013-04-09 16:58:54 (GMT)
commiteee4910fb7189773074e4c89d4ba249704ba5d11 (patch)
tree7507aea9e47e690aca8d6dd7eb07e8de808470e0 /src/deps_log_test.cc
parent8b9e3eaf7e7d2af4539eae167f92993f5ab84b86 (diff)
downloadNinja-eee4910fb7189773074e4c89d4ba249704ba5d11.zip
Ninja-eee4910fb7189773074e4c89d4ba249704ba5d11.tar.gz
Ninja-eee4910fb7189773074e4c89d4ba249704ba5d11.tar.bz2
On invalid depslog header, restart build instead of showing an error.
Also add tests for invalid headers.
Diffstat (limited to 'src/deps_log_test.cc')
-rw-r--r--src/deps_log_test.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/deps_log_test.cc b/src/deps_log_test.cc
index 2d91c0e..06fffeb 100644
--- a/src/deps_log_test.cc
+++ b/src/deps_log_test.cc
@@ -192,4 +192,30 @@ TEST_F(DepsLogTest, Recompact) {
}
}
+// Verify that invalid file headers cause a new build.
+TEST_F(DepsLogTest, InvalidHeader) {
+ const char *kInvalidHeaders[] = {
+ "", // Emtpy file.
+ "# ninjad", // Truncated first line.
+ "# ninjadeps\n", // No version int.
+ "# ninjadeps\n\001\002", // Truncated version int.
+ "# ninjadeps\n\001\002\003\004" // Invalid version int.
+ };
+ for (size_t i = 0; i < sizeof(kInvalidHeaders) / sizeof(kInvalidHeaders[0]);
+ ++i) {
+ FILE* deps_log = fopen(kTestFilename, "wb");
+ ASSERT_TRUE(deps_log != NULL);
+ ASSERT_EQ(
+ strlen(kInvalidHeaders[i]),
+ fwrite(kInvalidHeaders[i], 1, strlen(kInvalidHeaders[i]), deps_log));
+ ASSERT_EQ(0 ,fclose(deps_log));
+
+ string err;
+ DepsLog log;
+ State state;
+ ASSERT_TRUE(log.Load(kTestFilename, &state, &err));
+ EXPECT_EQ("bad deps log signature or version; starting over", err);
+ }
+}
+
} // anonymous namespace