GH-109408: Stop running patchcheck in CI (#109895)

This commit is contained in:
Adam Turner 2024-08-03 12:52:21 +01:00 committed by GitHub
parent d91ac525ef
commit cc6839a181
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 12 additions and 131 deletions

View File

@ -18,9 +18,3 @@ steps:
- script: make pythoninfo - script: make pythoninfo
displayName: 'Display build info' displayName: 'Display build info'
- script: |
git fetch origin
./python Tools/patchcheck/patchcheck.py --ci true
displayName: 'Run patchcheck.py'
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))

View File

@ -9,20 +9,3 @@ jobs:
steps: steps:
- template: ./prebuild-checks.yml - template: ./prebuild-checks.yml
- job: Ubuntu_Patchcheck
displayName: Ubuntu patchcheck
dependsOn: Prebuild
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
pool:
vmImage: ubuntu-22.04
variables:
testRunTitle: '$(system.pullRequest.TargetBranch)-linux'
testRunPlatform: linux
openssl_version: 1.1.1u
steps:
- template: ./posix-steps.yml

View File

@ -5,9 +5,6 @@ import os.path
import subprocess import subprocess
import sysconfig import sysconfig
import reindent
import untabify
def get_python_source_dir(): def get_python_source_dir():
src_dir = sysconfig.get_config_var('abs_srcdir') src_dir = sysconfig.get_config_var('abs_srcdir')
@ -16,13 +13,6 @@ def get_python_source_dir():
return os.path.abspath(src_dir) return os.path.abspath(src_dir)
# Excluded directories which are copies of external libraries:
# don't check their coding style
EXCLUDE_DIRS = [
os.path.join('Modules', '_decimal', 'libmpdec'),
os.path.join('Modules', 'expat'),
os.path.join('Modules', 'zlib'),
]
SRCDIR = get_python_source_dir() SRCDIR = get_python_source_dir()
@ -153,62 +143,7 @@ def changed_files(base_branch=None):
else: else:
sys.exit('need a git checkout to get modified files') sys.exit('need a git checkout to get modified files')
filenames2 = [] return list(map(os.path.normpath, filenames))
for filename in filenames:
# Normalize the path to be able to match using .startswith()
filename = os.path.normpath(filename)
if any(filename.startswith(path) for path in EXCLUDE_DIRS):
# Exclude the file
continue
filenames2.append(filename)
return filenames2
def report_modified_files(file_paths):
count = len(file_paths)
if count == 0:
return n_files_str(count)
else:
lines = [f"{n_files_str(count)}:"]
for path in file_paths:
lines.append(f" {path}")
return "\n".join(lines)
#: Python files that have tabs by design:
_PYTHON_FILES_WITH_TABS = frozenset({
'Tools/c-analyzer/cpython/_parser.py',
})
@status("Fixing Python file whitespace", info=report_modified_files)
def normalize_whitespace(file_paths):
"""Make sure that the whitespace for .py files have been normalized."""
reindent.makebackup = False # No need to create backups.
fixed = [
path for path in file_paths
if (
path.endswith('.py')
and path not in _PYTHON_FILES_WITH_TABS
and reindent.check(os.path.join(SRCDIR, path))
)
]
return fixed
@status("Fixing C file whitespace", info=report_modified_files)
def normalize_c_whitespace(file_paths):
"""Report if any C files """
fixed = []
for path in file_paths:
abspath = os.path.join(SRCDIR, path)
with open(abspath, 'r') as f:
if '\t' not in f.read():
continue
untabify.process(abspath, 8, verbose=False)
fixed.append(path)
return fixed
@status("Docs modified", modal=True) @status("Docs modified", modal=True)
@ -248,40 +183,14 @@ def regenerated_pyconfig_h_in(file_paths):
return "not needed" return "not needed"
def ci(pull_request):
if pull_request == 'false':
print('Not a pull request; skipping')
return
base_branch = get_base_branch()
file_paths = changed_files(base_branch)
python_files = [fn for fn in file_paths if fn.endswith('.py')]
c_files = [fn for fn in file_paths if fn.endswith(('.c', '.h'))]
fixed = []
fixed.extend(normalize_whitespace(python_files))
fixed.extend(normalize_c_whitespace(c_files))
if not fixed:
print('No whitespace issues found')
else:
count = len(fixed)
print(f'Please fix the {n_files_str(count)} with whitespace issues')
print('(on Unix you can run `make patchcheck` to make the fixes)')
sys.exit(1)
def main(): def main():
base_branch = get_base_branch() base_branch = get_base_branch()
file_paths = changed_files(base_branch) file_paths = changed_files(base_branch)
python_files = [fn for fn in file_paths if fn.endswith('.py')] has_doc_files = any(fn for fn in file_paths if fn.startswith('Doc') and
c_files = [fn for fn in file_paths if fn.endswith(('.c', '.h'))] fn.endswith(('.rst', '.inc')))
doc_files = [fn for fn in file_paths if fn.startswith('Doc') and
fn.endswith(('.rst', '.inc'))]
misc_files = {p for p in file_paths if p.startswith('Misc')} misc_files = {p for p in file_paths if p.startswith('Misc')}
# PEP 8 whitespace rules enforcement.
normalize_whitespace(python_files)
# C rules enforcement.
normalize_c_whitespace(c_files)
# Docs updated. # Docs updated.
docs_modified(doc_files) docs_modified(has_doc_files)
# Misc/ACKS changed. # Misc/ACKS changed.
credit_given(misc_files) credit_given(misc_files)
# Misc/NEWS changed. # Misc/NEWS changed.
@ -292,19 +201,14 @@ def main():
regenerated_pyconfig_h_in(file_paths) regenerated_pyconfig_h_in(file_paths)
# Test suite run and passed. # Test suite run and passed.
if python_files or c_files: has_c_files = any(fn for fn in file_paths if fn.endswith(('.c', '.h')))
end = " and check for refleaks?" if c_files else "?" has_python_files = any(fn for fn in file_paths if fn.endswith('.py'))
print() print()
print("Did you run the test suite" + end) if has_c_files:
print("Did you run the test suite and check for refleaks?")
elif has_python_files:
print("Did you run the test suite?")
if __name__ == '__main__': if __name__ == '__main__':
import argparse main()
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--ci',
help='Perform pass/fail checks')
args = parser.parse_args()
if args.ci:
ci(args.ci)
else:
main()