aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/run_tests
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2017-04-20 08:12:59 -0700
committerGravatar GitHub <noreply@github.com>2017-04-20 08:12:59 -0700
commit547a4717cb8f1ad807019941d2f0ec2835505200 (patch)
tree198874f1b3dcc6c539e26c3f1191f2704467a630 /tools/run_tests
parent84a920d048ce590e69aa98fd69828f13cd32691c (diff)
parent5eecba42c376c85166f1504b097a6890309e9891 (diff)
Merge pull request #10490 from matt-kwong/filter-performance-test
Add test filtering to performance pull requests
Diffstat (limited to 'tools/run_tests')
-rw-r--r--tools/run_tests/python_utils/filter_pull_request_tests.py25
1 files changed, 20 insertions, 5 deletions
diff --git a/tools/run_tests/python_utils/filter_pull_request_tests.py b/tools/run_tests/python_utils/filter_pull_request_tests.py
index e013376295..958eb569e0 100644
--- a/tools/run_tests/python_utils/filter_pull_request_tests.py
+++ b/tools/run_tests/python_utils/filter_pull_request_tests.py
@@ -127,6 +127,9 @@ _WHITELIST_DICT = {
'setup\.py$': [_PYTHON_TEST_SUITE]
}
+# Regex that combines all keys in _WHITELIST_DICT
+_ALL_TRIGGERS = "(" + ")|(".join(_WHITELIST_DICT.keys()) + ")"
+
# Add all triggers to their respective test suites
for trigger, test_suites in six.iteritems(_WHITELIST_DICT):
for test_suite in test_suites:
@@ -169,6 +172,21 @@ def _remove_irrelevant_tests(tests, skippable_labels):
test.labels[2] not in skippable_labels]
+def affects_c_cpp(base_branch):
+ """
+ Determines if a pull request's changes affect C/C++. This function exists because
+ there are pull request tests that only test C/C++ code
+ :param base_branch: branch that a pull request is requesting to merge into
+ :return: boolean indicating whether C/C++ changes are made in pull request
+ """
+ changed_files = _get_changed_files(base_branch)
+ # Run all tests if any changed file is not in the whitelist dictionary
+ for changed_file in changed_files:
+ if not re.match(_ALL_TRIGGERS, changed_file):
+ return True
+ return not _can_skip_tests(changed_files, _CPP_TEST_SUITE.triggers + _CORE_TEST_SUITE.triggers)
+
+
def filter_tests(tests, base_branch):
"""
Filters out tests that are safe to ignore
@@ -181,11 +199,9 @@ def filter_tests(tests, base_branch):
print(' %s' % changed_file)
print('')
- # Regex that combines all keys in _WHITELIST_DICT
- all_triggers = "(" + ")|(".join(_WHITELIST_DICT.keys()) + ")"
- # Check if all tests have to be run
+ # Run all tests if any changed file is not in the whitelist dictionary
for changed_file in changed_files:
- if not re.match(all_triggers, changed_file):
+ if not re.match(_ALL_TRIGGERS, changed_file):
return(tests)
# Figure out which language and platform tests to run
skippable_labels = []
@@ -196,4 +212,3 @@ def filter_tests(tests, base_branch):
skippable_labels.append(label)
tests = _remove_irrelevant_tests(tests, skippable_labels)
return tests
-