diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-01 20:50:55 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-01 20:50:55 +0000 |
commit | e11de7254efb71fbe5b26b113a8e2e5bdd8da15f (patch) | |
tree | be8df3ca21aeb1c777d1efbfa6266174c0eb870d /base/vlog_unittest.cc | |
parent | 86b531b3f6d8b5353a159456dba3bc03ebc68060 (diff) | |
download | chromium_src-e11de7254efb71fbe5b26b113a8e2e5bdd8da15f.zip chromium_src-e11de7254efb71fbe5b26b113a8e2e5bdd8da15f.tar.gz chromium_src-e11de7254efb71fbe5b26b113a8e2e5bdd8da15f.tar.bz2 |
Wrote a custom pattern matcher for vmodule.
The custom pattern matcher matches any slash (forward or backward) to any
slash. It also does not do escaping like MatchPattern(). Finally, '?'
matches exactly one character, which matches google-glog behavior
(MatchPattern() matches '?' to 0 or 1 character).
BUG=61123
TEST=New unittests
Review URL: http://codereview.chromium.org/4205005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64661 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/vlog_unittest.cc')
-rw-r--r-- | base/vlog_unittest.cc | 55 |
1 files changed, 52 insertions, 3 deletions
diff --git a/base/vlog_unittest.cc b/base/vlog_unittest.cc index c69f9cc..b3ecde6 100644 --- a/base/vlog_unittest.cc +++ b/base/vlog_unittest.cc @@ -26,6 +26,54 @@ TEST_F(VlogTest, NoVmodule) { EXPECT_EQ(5, VlogInfo("5", "").GetVlogLevel("test6")); } +TEST_F(VlogTest, MatchVlogPattern) { + // Degenerate cases. + EXPECT_TRUE(MatchVlogPattern("", "")); + EXPECT_TRUE(MatchVlogPattern("", "****")); + EXPECT_FALSE(MatchVlogPattern("", "x")); + EXPECT_FALSE(MatchVlogPattern("x", "")); + + // Basic. + EXPECT_TRUE(MatchVlogPattern("blah", "blah")); + + // ? should match exactly one character. + EXPECT_TRUE(MatchVlogPattern("blah", "bl?h")); + EXPECT_FALSE(MatchVlogPattern("blh", "bl?h")); + EXPECT_FALSE(MatchVlogPattern("blaah", "bl?h")); + EXPECT_TRUE(MatchVlogPattern("blah", "?lah")); + EXPECT_FALSE(MatchVlogPattern("lah", "?lah")); + EXPECT_FALSE(MatchVlogPattern("bblah", "?lah")); + + // * can match any number (even 0) of characters. + EXPECT_TRUE(MatchVlogPattern("blah", "bl*h")); + EXPECT_TRUE(MatchVlogPattern("blabcdefh", "bl*h")); + EXPECT_TRUE(MatchVlogPattern("blh", "bl*h")); + EXPECT_TRUE(MatchVlogPattern("blah", "*blah")); + EXPECT_TRUE(MatchVlogPattern("ohblah", "*blah")); + EXPECT_TRUE(MatchVlogPattern("blah", "blah*")); + EXPECT_TRUE(MatchVlogPattern("blahhhh", "blah*")); + EXPECT_TRUE(MatchVlogPattern("blahhhh", "blah*")); + EXPECT_TRUE(MatchVlogPattern("blah", "*blah*")); + EXPECT_TRUE(MatchVlogPattern("blahhhh", "*blah*")); + EXPECT_TRUE(MatchVlogPattern("bbbblahhhh", "*blah*")); + + // Multiple *s should work fine. + EXPECT_TRUE(MatchVlogPattern("ballaah", "b*la*h")); + EXPECT_TRUE(MatchVlogPattern("blah", "b*la*h")); + EXPECT_TRUE(MatchVlogPattern("bbbblah", "b*la*h")); + EXPECT_TRUE(MatchVlogPattern("blaaah", "b*la*h")); + + // There should be no escaping going on. + EXPECT_TRUE(MatchVlogPattern("bl\\ah", "bl\\?h")); + EXPECT_FALSE(MatchVlogPattern("bl?h", "bl\\?h")); + EXPECT_TRUE(MatchVlogPattern("bl\\aaaah", "bl\\*h")); + EXPECT_FALSE(MatchVlogPattern("bl*h", "bl\\*h")); + + // Any slash matches any slash. + EXPECT_TRUE(MatchVlogPattern("/b\\lah", "/b\\lah")); + EXPECT_TRUE(MatchVlogPattern("\\b/lah", "/b\\lah")); +} + TEST_F(VlogTest, VmoduleBasic) { const char kVSwitch[] = "-1"; const char kVModuleSwitch[] = @@ -51,13 +99,14 @@ TEST_F(VlogTest, VmoduleDirs) { EXPECT_EQ(0, vlog_info.GetVlogLevel("baz/grault/qux.h")); EXPECT_EQ(0, vlog_info.GetVlogLevel("/baz/grault/qux.cc")); - EXPECT_EQ(0, vlog_info.GetVlogLevel("baz/grault/qux.cc")); - EXPECT_EQ(0, vlog_info.GetVlogLevel("baz/grault/blah/qux.cc")); + EXPECT_EQ(2, vlog_info.GetVlogLevel("baz/grault/qux.cc")); + EXPECT_EQ(2, vlog_info.GetVlogLevel("baz/grault/blah/qux.cc")); EXPECT_EQ(2, vlog_info.GetVlogLevel("baz\\grault\\qux.cc")); - EXPECT_EQ(2, vlog_info.GetVlogLevel("baz\\grault\\blah\\qux.cc")); + EXPECT_EQ(2, vlog_info.GetVlogLevel("baz\\grault//blah\\qux.cc")); EXPECT_EQ(0, vlog_info.GetVlogLevel("/foo/bar/baz/quux.cc")); EXPECT_EQ(3, vlog_info.GetVlogLevel("/foo/bar/baz/quux/grault.cc")); + EXPECT_EQ(3, vlog_info.GetVlogLevel("/foo\\bar/baz\\quux/grault.cc")); EXPECT_EQ(0, vlog_info.GetVlogLevel("foo/bar/test-inl.cc")); EXPECT_EQ(4, vlog_info.GetVlogLevel("foo/bar/test-inl.h")); |