diff options
Diffstat (limited to 'build/util/lib/common/unittest_util.py')
-rw-r--r-- | build/util/lib/common/unittest_util.py | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/build/util/lib/common/unittest_util.py b/build/util/lib/common/unittest_util.py index 189f587..e2ad0e2 100644 --- a/build/util/lib/common/unittest_util.py +++ b/build/util/lib/common/unittest_util.py @@ -132,22 +132,18 @@ def FilterTestNames(all_tests, gtest_filter): positive_patterns = ['*'] if pattern_groups[0]: positive_patterns = pattern_groups[0].split(':') - negative_patterns = None + negative_patterns = [] if len(pattern_groups) > 1: negative_patterns = pattern_groups[1].split(':') tests = [] - for test in all_tests: - # Test name must by matched by one positive pattern. - for pattern in positive_patterns: - if fnmatch.fnmatch(test, pattern): - break - else: - continue - # Test name must not be matched by any negative patterns. - for pattern in negative_patterns or []: - if fnmatch.fnmatch(test, pattern): - break - else: - tests += [test] + test_set = set() + for pattern in positive_patterns: + pattern_tests = [ + test for test in all_tests + if (fnmatch.fnmatch(test, pattern) + and not any(fnmatch(test, p) for p in negative_patterns) + and test not in test_set)] + tests.extend(pattern_tests) + test_set.update(pattern_tests) return tests |