tests: remove deprecated test-check-py3-compat.t
authorPierre-Yves David <pierre-yves.david@octobus.net>
Tue, 22 Oct 2024 15:59:01 +0200
changeset 52091 1b4e96420a3c
parent 52081 a021da4ec509
child 52092 e2311951b63a
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.
contrib/check-py3-compat.py
contrib/python3-whitelist
tests/test-check-py3-compat.t
--- a/contrib/check-py3-compat.py	Thu Oct 24 17:35:53 2024 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-#!/usr/bin/env python3
-#
-# check-py3-compat - check Python 3 compatibility of Mercurial files
-#
-# Copyright 2015 Gregory Szorc <gregory.szorc@gmail.com>
-#
-# 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)
--- a/contrib/python3-whitelist	Thu Oct 24 17:35:53 2024 +0200
+++ b/contrib/python3-whitelist	Tue Oct 22 15:59:01 2024 +0200
@@ -74,7 +74,6 @@
 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
--- a/tests/test-check-py3-compat.t	Thu Oct 24 17:35:53 2024 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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: <ValueError> _type_ 'v' not supported (error at win32.py:*) (no-windows !)
-  mercurial/win32.py: error importing: <ValueError> _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