# HG changeset patch # User Pierre-Yves David # Date 2024-10-22 13:59:01 # Node ID 1b4e96420a3c255b6d0300d85b69f3b0c23aa694 # Parent a021da4ec509446c07735d79d6b17dafffb98485 tests: remove deprecated test-check-py3-compat.t If our current source files were not compatible with Python 3, we would know by now. This check has not been relevant for a couple of years now and we can safely remove it. diff --git a/contrib/check-py3-compat.py b/contrib/check-py3-compat.py deleted file mode 100755 --- a/contrib/check-py3-compat.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python3 -# -# check-py3-compat - check Python 3 compatibility of Mercurial files -# -# Copyright 2015 Gregory Szorc -# -# This software may be used and distributed according to the terms of the -# GNU General Public License version 2 or any later version. - - -import ast -import importlib -import os -import sys -import traceback -import warnings - - -def check_compat_py3(f): - """Check Python 3 compatibility of a file with Python 3.""" - with open(f, 'rb') as fh: - content = fh.read() - - try: - ast.parse(content, filename=f) - except SyntaxError as e: - print('%s: invalid syntax: %s' % (f, e)) - return - - # Try to import the module. - # For now we only support modules in packages because figuring out module - # paths for things not in a package can be confusing. - if f.startswith( - ('hgdemandimport/', 'hgext/', 'mercurial/') - ) and not f.endswith('__init__.py'): - assert f.endswith('.py') - name = f.replace('/', '.')[:-3] - try: - importlib.import_module(name) - except Exception as e: - exc_type, exc_value, tb = sys.exc_info() - # We walk the stack and ignore frames from our custom importer, - # import mechanisms, and stdlib modules. This kinda/sorta - # emulates CPython behavior in import.c while also attempting - # to pin blame on a Mercurial file. - for frame in reversed(traceback.extract_tb(tb)): - if frame.name == '_call_with_frames_removed': - continue - if 'importlib' in frame.filename: - continue - if 'mercurial/__init__.py' in frame.filename: - continue - if frame.filename.startswith(sys.prefix): - continue - break - - if frame.filename: - filename = os.path.basename(frame.filename) - print( - '%s: error importing: <%s> %s (error at %s:%d)' - % (f, type(e).__name__, e, filename, frame.lineno) - ) - else: - print( - '%s: error importing module: <%s> %s (line %d)' - % (f, type(e).__name__, e, frame.lineno) - ) - - -if __name__ == '__main__': - # check_compat_py3 will import every filename we specify as long as it - # starts with one of a few prefixes. It does this by converting - # specified filenames like 'mercurial/foo.py' to 'mercurial.foo' and - # importing that. When running standalone (not as part of a test), this - # means we actually import the installed versions, not the files we just - # specified. When running as test-check-py3-compat.t, we technically - # would import the correct paths, but it's cleaner to have both cases - # use the same import logic. - sys.path.insert(0, os.getcwd()) - - for f in sys.argv[1:]: - with warnings.catch_warnings(record=True) as warns: - check_compat_py3(f) - - for w in warns: - print( - warnings.formatwarning( - w.message, w.category, w.filename, w.lineno - ).rstrip() - ) - - sys.exit(0) diff --git a/contrib/python3-whitelist b/contrib/python3-whitelist --- a/contrib/python3-whitelist +++ b/contrib/python3-whitelist @@ -74,7 +74,6 @@ test-check-execute.t test-check-help.t test-check-interfaces.py test-check-module-imports.t -test-check-py3-compat.t test-check-pyflakes.t test-check-pylint.t test-check-shbang.t diff --git a/tests/test-check-py3-compat.t b/tests/test-check-py3-compat.t deleted file mode 100644 --- a/tests/test-check-py3-compat.t +++ /dev/null @@ -1,23 +0,0 @@ -#require test-repo pure - - $ . "$TESTDIR/helpers-testrepo.sh" - $ cd "$TESTDIR"/.. - - $ testrepohg files 'set:(**.py) - grep(pygments)' \ - > -X hgext/fsmonitor/pywatchman \ - > -X mercurial/cffi \ - > -X mercurial/thirdparty \ - > | sed 's|\\|/|g' | xargs "$PYTHON" contrib/check-py3-compat.py \ - > | sed 's/[0-9][0-9]*)$/*)/' - hgext/convert/transport.py: error importing: <*Error> No module named 'svn.client' (error at transport.py:*) (glob) (?) - mercurial/scmwindows.py: error importing: _type_ 'v' not supported (error at win32.py:*) (no-windows !) - mercurial/win32.py: error importing: _type_ 'v' not supported (error at win32.py:*) (no-windows !) - mercurial/windows.py: error importing: <*Error> No module named 'msvcrt' (error at windows.py:*) (glob) (no-windows !) - mercurial/posix.py: error importing: <*Error> No module named 'fcntl' (error at posix.py:*) (glob) (windows !) - mercurial/scmposix.py: error importing: <*Error> No module named 'fcntl' (error at scmposix.py:*) (glob) (windows !) - -#if pygments - $ testrepohg files 'set:(**.py) and grep(pygments)' | sed 's|\\|/|g' \ - > | xargs "$PYTHON" contrib/check-py3-compat.py \ - > | sed 's/[0-9][0-9]*)$/*)/' -#endif