diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-15 19:54:24 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-15 19:54:24 +0000 |
commit | 9c547dda0009d7f19b594062e5163cd81abdc236 (patch) | |
tree | 4b290401f9b080ab7e834050e442e335e87b7189 /chrome | |
parent | e8fd41ce6dc124efee89560331f8710aa58393a2 (diff) | |
download | chromium_src-9c547dda0009d7f19b594062e5163cd81abdc236.zip chromium_src-9c547dda0009d7f19b594062e5163cd81abdc236.tar.gz chromium_src-9c547dda0009d7f19b594062e5163cd81abdc236.tar.bz2 |
Add --gtest_filter negative pattern handling for out_of_proc_test_runner
BUG=66733
TEST=browser_tests with positive and negative filter strings (i.e. --gtest_filter=Positive, --gtest_filter=Positive-Negative, --gtest_filter=-Negative etc)
Review URL: http://codereview.chromium.org/5712010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69300 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/test/out_of_proc_test_runner.cc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/chrome/test/out_of_proc_test_runner.cc b/chrome/test/out_of_proc_test_runner.cc index 39482ab..fbf5ebb 100644 --- a/chrome/test/out_of_proc_test_runner.cc +++ b/chrome/test/out_of_proc_test_runner.cc @@ -349,8 +349,17 @@ bool RunTests() { testing::UnitTest* const unit_test = testing::UnitTest::GetInstance(); - std::string filter_string = command_line->GetSwitchValueASCII( - kGTestFilterFlag); + std::string filter = command_line->GetSwitchValueASCII(kGTestFilterFlag); + + // Split --gtest_filter at '-', if there is one, to separate into + // positive filter and negative filter portions. + std::string positive_filter = filter; + std::string negative_filter = ""; + size_t dash_pos = filter.find('-'); + if (dash_pos != std::string::npos) { + positive_filter = filter.substr(0, dash_pos); // Everything up to the dash. + negative_filter = filter.substr(dash_pos + 1); // Everything after the dash. + } int test_run_count = 0; int ignored_failure_count = 0; @@ -374,7 +383,9 @@ bool RunTests() { test_name.append("."); test_name.append(test_info->name()); // Skip the test that doesn't match the filter string (if given). - if (filter_string.size() && !MatchesFilter(test_name, filter_string)) { + if ((!positive_filter.empty() && + !MatchesFilter(test_name, positive_filter)) || + MatchesFilter(test_name, negative_filter)) { printer.OnTestEnd(test_info->name(), test_case->name(), false, false, false, 0); continue; |