summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-15 19:54:24 +0000
committerkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-15 19:54:24 +0000
commit9c547dda0009d7f19b594062e5163cd81abdc236 (patch)
tree4b290401f9b080ab7e834050e442e335e87b7189 /chrome
parente8fd41ce6dc124efee89560331f8710aa58393a2 (diff)
downloadchromium_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.cc17
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;