summaryrefslogtreecommitdiff
path: root/test/common/testcommon.cpp
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2007-01-16 23:04:03 +0000
committerChris Wilson <chris+github@qwirx.com>2007-01-16 23:04:03 +0000
commitc65a71fb2ab2484525ba702bd219bc36d57156ea (patch)
tree343cac34df831e1b5c1e08f62de968ac7fc77f3a /test/common/testcommon.cpp
parent4df0e43009eeceb8e824122d068853d37279d179 (diff)
Check for exclude entries that end in a path separator, and log a warning
(refs #3)
Diffstat (limited to 'test/common/testcommon.cpp')
-rw-r--r--test/common/testcommon.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/test/common/testcommon.cpp b/test/common/testcommon.cpp
index ec33b003..45473425 100644
--- a/test/common/testcommon.cpp
+++ b/test/common/testcommon.cpp
@@ -30,6 +30,7 @@
#include "CollectInBufferStream.h"
#include "Archive.h"
#include "Timer.h"
+#include "Logging.h"
#include "MemLeakFindOn.h"
@@ -145,6 +146,40 @@ void safe_sleep(int seconds)
{ /* sleep again */ }
}
+class TestLogger : public Logger
+{
+ private:
+ bool mTriggered;
+ Log::Level mTargetLevel;
+
+ public:
+ TestLogger(Log::Level targetLevel)
+ : mTriggered(false), mTargetLevel(targetLevel)
+ {
+ Logging::Add(this);
+ }
+ ~TestLogger()
+ {
+ Logging::Remove(this);
+ }
+
+ bool IsTriggered() { return mTriggered; }
+ void Reset() { mTriggered = false; }
+
+ virtual bool Log(Log::Level level, const std::string& rFile,
+ int line, std::string& rMessage)
+ {
+ if (level == mTargetLevel)
+ {
+ mTriggered = true;
+ }
+ return true;
+ }
+
+ virtual const char* GetType() { return "Test"; }
+ virtual void SetProgramName(const std::string& rProgramName) { }
+};
+
int test(int argc, const char *argv[])
{
// Test self-deleting temporary file streams
@@ -664,6 +699,8 @@ int test(int argc, const char *argv[])
// Test ExcludeList
{
+ TestLogger logger(Log::WARNING);
+
ExcludeList elist;
// Check assumption
TEST_THAT(Configuration::MultiValueSeparator == '\x01');
@@ -721,6 +758,24 @@ int test(int argc, const char *argv[])
#endif
#undef CASE_SENSITIVE
+
+ TEST_THAT(!logger.IsTriggered());
+ elist.AddDefiniteEntries(std::string("/foo"));
+ TEST_THAT(!logger.IsTriggered());
+ elist.AddDefiniteEntries(std::string("/foo/"));
+ TEST_THAT(logger.IsTriggered());
+ logger.Reset();
+ elist.AddDefiniteEntries(std::string("/foo"
+ DIRECTORY_SEPARATOR));
+ TEST_THAT(logger.IsTriggered());
+ logger.Reset();
+ elist.AddDefiniteEntries(std::string("/foo"
+ DIRECTORY_SEPARATOR "bar\x01/foo"));
+ TEST_THAT(!logger.IsTriggered());
+ elist.AddDefiniteEntries(std::string("/foo"
+ DIRECTORY_SEPARATOR "bar\x01/foo"
+ DIRECTORY_SEPARATOR));
+ TEST_THAT(logger.IsTriggered());
}
test_conversions();