Don't test candidate files if they're removed

The routine to determine which files to check for candidacies, when
used to analyze files being changed with --HEAD, should only test
those files if they are being kept by the change. If they're being
deleted, then there is no reason to test them. Further, testing
files which are slated for removal makes it basically impossible to
revert a previously merged candidacy which has since been
invalidated (for example, by resigning OSF Individual Membership).

Mock os.path.exists in test_find_modified_candidate_files_all_good
to just return True, since we aren't actually creating the file in
that test.

Change-Id: I4d5d9b1d55379adfd1c7d7765324306abf40cdb7
This commit is contained in:
Jeremy Stanley 2020-09-24 03:52:21 +00:00
parent 0c2b4aae53
commit 4570981c1b
2 changed files with 5 additions and 2 deletions

View File

@ -76,7 +76,7 @@ def check_for_changes(projects, filepath, limit, verbose=0):
def find_modified_candidate_files():
"Return a list of files modified by the most recent commit."
"Return a list of non-removed files modified by the most recent commit."
results = subprocess.check_output(
['git', 'diff', '--name-only', '--pretty=format:', 'HEAD^']
).decode('utf-8')
@ -84,6 +84,7 @@ def find_modified_candidate_files():
li.strip()
for li in results.splitlines()
if (li.startswith(utils.CANDIDATE_PATH + '/') and
os.path.exists(li) and
not li.endswith('.placeholder'))
]
return filenames

View File

@ -37,8 +37,10 @@ class TestFindModifiedCandidateFiles(base.ElectionTestCase):
ci_check_all_candidate_files.find_modified_candidate_files()
self.assertEqual(expected_filenames, filenames)
@mock.patch('os.path.exists', return_value=True)
@mock.patch('subprocess.check_output')
def test_find_modified_candidate_files_all_good(self, mock_check_output):
def test_find_modified_candidate_files_all_good(
self, mock_check_output, mock_path_exists):
check_output = (('configuration.yaml\n'
'openstack_election/__init__py\n'
'%(path)s/candidate\n'