summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2013-04-19 21:32:29 (GMT)
committerEvan Martin <martine@danga.com>2013-04-19 21:32:59 (GMT)
commit0275ead49797dc5b5723d89205bafcd7c313a76d (patch)
treeb9b4897a37d9afddf5d2ccc387fb0972f71d9a82 /src
parent9b6b1fd44a589c3725947280ff5a2ce8fc50a387 (diff)
downloadNinja-0275ead49797dc5b5723d89205bafcd7c313a76d.zip
Ninja-0275ead49797dc5b5723d89205bafcd7c313a76d.tar.gz
Ninja-0275ead49797dc5b5723d89205bafcd7c313a76d.tar.bz2
make DiskInterfaceTest.StatBadPath quiet
Add a flag to temporarily suppress error output. Fixes issue #281.
Diffstat (limited to 'src')
-rw-r--r--src/disk_interface.cc16
-rw-r--r--src/disk_interface.h4
-rw-r--r--src/disk_interface_test.cc2
3 files changed, 17 insertions, 5 deletions
diff --git a/src/disk_interface.cc b/src/disk_interface.cc
index 7c557cd..ee3e99a 100644
--- a/src/disk_interface.cc
+++ b/src/disk_interface.cc
@@ -80,8 +80,10 @@ TimeStamp RealDiskInterface::Stat(const string& path) {
// MSDN: "Naming Files, Paths, and Namespaces"
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
if (!path.empty() && path[0] != '\\' && path.size() > MAX_PATH) {
- Error("Stat(%s): Filename longer than %i characters",
- path.c_str(), MAX_PATH);
+ if (!quiet_) {
+ Error("Stat(%s): Filename longer than %i characters",
+ path.c_str(), MAX_PATH);
+ }
return -1;
}
WIN32_FILE_ATTRIBUTE_DATA attrs;
@@ -89,8 +91,10 @@ TimeStamp RealDiskInterface::Stat(const string& path) {
DWORD err = GetLastError();
if (err == ERROR_FILE_NOT_FOUND || err == ERROR_PATH_NOT_FOUND)
return 0;
- Error("GetFileAttributesEx(%s): %s", path.c_str(),
- GetLastErrorString().c_str());
+ if (!quiet_) {
+ Error("GetFileAttributesEx(%s): %s", path.c_str(),
+ GetLastErrorString().c_str());
+ }
return -1;
}
const FILETIME& filetime = attrs.ftLastWriteTime;
@@ -107,7 +111,9 @@ TimeStamp RealDiskInterface::Stat(const string& path) {
if (stat(path.c_str(), &st) < 0) {
if (errno == ENOENT || errno == ENOTDIR)
return 0;
- Error("stat(%s): %s", path.c_str(), strerror(errno));
+ if (!quiet_) {
+ Error("stat(%s): %s", path.c_str(), strerror(errno));
+ }
return -1;
}
return st.st_mtime;
diff --git a/src/disk_interface.h b/src/disk_interface.h
index 55f8a21..ff1e21c 100644
--- a/src/disk_interface.h
+++ b/src/disk_interface.h
@@ -55,12 +55,16 @@ struct DiskInterface {
/// Implementation of DiskInterface that actually hits the disk.
struct RealDiskInterface : public DiskInterface {
+ RealDiskInterface() : quiet_(false) {}
virtual ~RealDiskInterface() {}
virtual TimeStamp Stat(const string& path);
virtual bool MakeDir(const string& path);
virtual bool WriteFile(const string& path, const string& contents);
virtual string ReadFile(const string& path, string* err);
virtual int RemoveFile(const string& path);
+
+ /// Whether to print on errors. Used to make a test quieter.
+ bool quiet_;
};
#endif // NINJA_DISK_INTERFACE_H_
diff --git a/src/disk_interface_test.cc b/src/disk_interface_test.cc
index 9b43d0f..55822a6 100644
--- a/src/disk_interface_test.cc
+++ b/src/disk_interface_test.cc
@@ -60,6 +60,7 @@ TEST_F(DiskInterfaceTest, StatMissingFile) {
}
TEST_F(DiskInterfaceTest, StatBadPath) {
+ disk_.quiet_ = true;
#ifdef _WIN32
string bad_path("cc:\\foo");
EXPECT_EQ(-1, disk_.Stat(bad_path));
@@ -67,6 +68,7 @@ TEST_F(DiskInterfaceTest, StatBadPath) {
string too_long_name(512, 'x');
EXPECT_EQ(-1, disk_.Stat(too_long_name));
#endif
+ disk_.quiet_ = false;
}
TEST_F(DiskInterfaceTest, StatExistingFile) {