| Index: build/android/pylib/gtest/gtest_test_instance.py
|
| diff --git a/build/android/pylib/gtest/gtest_test_instance.py b/build/android/pylib/gtest/gtest_test_instance.py
|
| index f9c6e5911b6aecf0147de3e07fd2396fbba0b624..e289c02aba01c22df572bc7dd98012cd1a5f879b 100644
|
| --- a/build/android/pylib/gtest/gtest_test_instance.py
|
| +++ b/build/android/pylib/gtest/gtest_test_instance.py
|
| @@ -198,6 +198,36 @@ def ParseGTestXML(xml_content):
|
| return results
|
|
|
|
|
| +def ConvertTestFilterFileIntoGTestFilterArgument(input_lines):
|
| + """Converts test filter file contents into --gtest_filter argument.
|
| +
|
| + See //testing/buildbot/filters/README.md for description of the
|
| + syntax that |input_lines| are expected to follow.
|
| +
|
| + See
|
| + https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#running-a-subset-of-the-tests
|
| + for description of the syntax that --gtest_filter argument should follow.
|
| +
|
| + Args:
|
| + input_lines: An iterable (e.g. a list or a file) containing input lines.
|
| + Returns:
|
| + a string suitable for feeding as an argument of --gtest_filter parameter.
|
| + """
|
| + # Strip whitespace + skip empty lines and lines beginning with '#'.
|
| + stripped_lines = (l.strip() for l in input_lines)
|
| + filter_lines = list(l for l in stripped_lines if l and l[0] != '#')
|
| +
|
| + # Split the tests into positive and negative patterns (gtest treats
|
| + # every pattern after the first '-' sign as an exclusion).
|
| + positive_patterns = ':'.join(l for l in filter_lines if l[0] != '-')
|
| + negative_patterns = ':'.join(l[1:] for l in filter_lines if l[0] == '-')
|
| + if negative_patterns:
|
| + negative_patterns = '-' + negative_patterns
|
| +
|
| + # Join the filter lines into one, big --gtest_filter argument.
|
| + return positive_patterns + negative_patterns
|
| +
|
| +
|
| class GtestTestInstance(test_instance.TestInstance):
|
|
|
| def __init__(self, args, isolate_delegate, error_func):
|
| @@ -252,13 +282,7 @@ class GtestTestInstance(test_instance.TestInstance):
|
| self._gtest_filter = args.test_filter
|
| elif args.test_filter_file:
|
| with open(args.test_filter_file, 'r') as f:
|
| - # Strip whitespace + skip empty lines and lines beginning with '#'.
|
| - # This should be consistent with processing of
|
| - # --test-launcher-filter-file in base/test/launcher/test_launcher.cc.
|
| - stripped_lines = (l.strip() for l in f)
|
| - filter_lines = (l for l in stripped_lines if l and l[0] != '#')
|
| - # Join the filter lines into one, big --gtest_filter argument.
|
| - self._gtest_filter = ':'.join(filter_lines)
|
| + self._gtest_filter = ConvertTestFilterFileIntoGTestFilterArgument(f)
|
| else:
|
| self._gtest_filter = None
|
|
|
|
|