summaryrefslogtreecommitdiffstats
path: root/src/test.h
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2011-03-06 01:39:48 (GMT)
committerEvan Martin <martine@danga.com>2011-03-06 01:39:48 (GMT)
commit37a9390101a73ab518aeac164ab147ee5251af9a (patch)
treee5c0965daa832a00792aabc389a006455e19c02c /src/test.h
parent2f3e5669826574b5e42d2118e539f559977a5ec8 (diff)
downloadNinja-37a9390101a73ab518aeac164ab147ee5251af9a.zip
Ninja-37a9390101a73ab518aeac164ab147ee5251af9a.tar.gz
Ninja-37a9390101a73ab518aeac164ab147ee5251af9a.tar.bz2
move VirtualFileSystem into test.*
Diffstat (limited to 'src/test.h')
-rw-r--r--src/test.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/test.h b/src/test.h
index 646d8f3..89c0974 100644
--- a/src/test.h
+++ b/src/test.h
@@ -28,3 +28,26 @@ struct StateTestWithBuiltinRules : public testing::Test {
};
void AssertParse(State* state, const char* input);
+
+// An implementation of DiskInterface that uses an in-memory representation
+// of disk state. It also logs file accesses and directory creations
+// so it can be used by tests to verify disk access patterns.
+struct VirtualFileSystem : public DiskInterface {
+ // "Create" a file with a given mtime and contents.
+ void Create(const string& path, int time, const string& contents);
+
+ // DiskInterface
+ virtual int Stat(const string& path);
+ virtual bool MakeDir(const string& path);
+ virtual string ReadFile(const string& path, string* err);
+
+ struct Entry {
+ int mtime;
+ string contents;
+ };
+
+ vector<string> directories_made_;
+ vector<string> files_read_;
+ typedef map<string, Entry> FileMap;
+ FileMap files_;
+};