in azdev/operations/testtool/__init__.py [0:0]
def _filter_by_git_diff(tests, test_index, git_source, git_target, git_repo):
from azdev.utilities import diff_branches, extract_module_name
from azdev.utilities.git_util import summarize_changed_mods
if not any([git_source, git_target, git_repo]):
return tests
if not all([git_target, git_repo]):
raise CLIError('usage error: [--src NAME] --tgt NAME --repo PATH')
files_changed = diff_branches(git_repo, git_target, git_source)
mods_changed = summarize_changed_mods(files_changed)
repo_path = str(os.path.abspath(git_repo)).lower()
to_remove = []
for key in tests:
test_path = test_index.get(key, None)
if test_path and test_path.lower().startswith(repo_path):
mod_name = extract_module_name(test_path)
if next((x for x in mods_changed if mod_name in x), None):
# has changed, so do not filter out
continue
# in not in the repo or has not changed, filter out
to_remove.append(key)
# remove the unchanged modules
tests = [t for t in tests if t not in to_remove]
logger.info('Filtered out: %s', to_remove)
return tests