tests/test-check-py3-compat.t
author Gregory Szorc <gregory.szorc@gmail.com>
Sun, 03 Mar 2019 18:19:07 -0800
changeset 41853 d7dc4ac1ff84
parent 41556 9f69ddb807f7
child 41907 9da97f49d4f4
permissions -rw-r--r--
inno: script to automate building Inno installer The official Inno installer build process is poorly documented. And attempting to reproduce behavior of the installer uploaded to www.mercurial-scm.org has revealed a number of unexpected behaviors. This commit attempts to improve the state of reproducibility of the Inno installer by introducing a Python script to largely automate the building of the installer. The new script (which must be run from an environment with the Visual C++ environment configured) takes care of producing an Inno installer. When run from a fresh Mercurial source checkout with all the proper system dependencies (the VC++ toolchain, Windows 10 SDK, and Inno tools) installed, it "just works." The script takes care of downloading all the Python dependencies in a secure manner and manages the build environment for you. You don't need any additional config files: just launch the script, pointing it at an existing Python and ISCC binary and it takes care of the rest. The produced installer creates a Mercurial installation with a handful of differences from the existing 4.9 installers (produced by someone else): * add_path.exe is missing (this was removed a few changesets ago) * The set of api-ms-win-core-* DLLs is different (I suspect this is due to me using a different UCRT / Windows version). * kernelbase.dll and msasn1.dll are missing. * There are a different set of .pyc files for dulwich, keyring, and pygments due to us using the latest versions of each. * We include Tcl/Tk DLLs and .pyc files (I'm not sure why these are missing from the existing installers). * We include the urllib3 and win32ctypes packages (which are dependencies of dulwich and pywin32, respectively). I'm not sure why these aren't present in the existing installers. * We include a different set of files for the distutils package. I'm not sure why. But it should be harmless. * We include the docutils package (it is getting picked up as a dependency somehow). I think this is fine. * We include a copy of argparse.pyc. I'm not sure why this was missing from existing installers. * We don't have a copy of sqlite3/dump.pyc. I'm not sure why. The SQLite C extension code only imports this module when conn.iterdump() is called. It should be safe to omit. * We include files in the email.test and test packages. The set of files is small and their presence should be harmless. The new script and support code is written in Python 3 because it is brand new and independent code and I don't believe new Python projects should be using Python 2 in 2019 if they have a choice about it. The readme.txt file has been renamed to readme.rst and overhauled to reflect the existence of build.py. Differential Revision: https://phab.mercurial-scm.org/D6066
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
27279
40eb385f798f tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     1
#require test-repo
40eb385f798f tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     2
29219
3c9066ed557c tests: silence test-repo obsolete warning
timeless <timeless@mozdev.org>
parents: 29195
diff changeset
     3
  $ . "$TESTDIR/helpers-testrepo.sh"
27279
40eb385f798f tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     4
  $ cd "$TESTDIR"/..
40eb385f798f tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     5
40263
8cf459d8b111 py3: use py3 as the test tag, dropping the k
Martijn Pieters <mj@octobus.net>
parents: 39830
diff changeset
     6
#if no-py3
33530
05e3fa254b6b demandimport: drop Py3 workarounds from Py2 implementation
Yuya Nishihara <yuya@tcha.org>
parents: 33204
diff changeset
     7
  $ testrepohg files 'set:(**.py)' \
41853
d7dc4ac1ff84 inno: script to automate building Inno installer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41556
diff changeset
     8
  > -X contrib/packaging/inno/ \
d7dc4ac1ff84 inno: script to automate building Inno installer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41556
diff changeset
     9
  > -X contrib/packaging/packagingutil.py \
33530
05e3fa254b6b demandimport: drop Py3 workarounds from Py2 implementation
Yuya Nishihara <yuya@tcha.org>
parents: 33204
diff changeset
    10
  > -X hgdemandimport/demandimportpy2.py \
37127
0e06d8086295 cbor: fix core test-check*
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33918
diff changeset
    11
  > -X mercurial/thirdparty/cbor \
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 39402
diff changeset
    12
  > | sed 's|\\|/|g' | xargs "$PYTHON" contrib/check-py3-compat.py
30435
b86a448a2965 zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30333
diff changeset
    13
  contrib/python-zstandard/setup.py not using absolute_import
b86a448a2965 zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30333
diff changeset
    14
  contrib/python-zstandard/setup_zstd.py not using absolute_import
b86a448a2965 zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30333
diff changeset
    15
  contrib/python-zstandard/tests/common.py not using absolute_import
31796
e0dc40530c5a zstd: vendor python-zstandard 0.8.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 31480
diff changeset
    16
  contrib/python-zstandard/tests/test_buffer_util.py not using absolute_import
30435
b86a448a2965 zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30333
diff changeset
    17
  contrib/python-zstandard/tests/test_compressor.py not using absolute_import
31796
e0dc40530c5a zstd: vendor python-zstandard 0.8.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 31480
diff changeset
    18
  contrib/python-zstandard/tests/test_compressor_fuzzing.py not using absolute_import
30435
b86a448a2965 zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30333
diff changeset
    19
  contrib/python-zstandard/tests/test_data_structures.py not using absolute_import
31796
e0dc40530c5a zstd: vendor python-zstandard 0.8.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 31480
diff changeset
    20
  contrib/python-zstandard/tests/test_data_structures_fuzzing.py not using absolute_import
30435
b86a448a2965 zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30333
diff changeset
    21
  contrib/python-zstandard/tests/test_decompressor.py not using absolute_import
31796
e0dc40530c5a zstd: vendor python-zstandard 0.8.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 31480
diff changeset
    22
  contrib/python-zstandard/tests/test_decompressor_fuzzing.py not using absolute_import
30435
b86a448a2965 zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30333
diff changeset
    23
  contrib/python-zstandard/tests/test_estimate_sizes.py not using absolute_import
b86a448a2965 zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30333
diff changeset
    24
  contrib/python-zstandard/tests/test_module_attributes.py not using absolute_import
b86a448a2965 zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30333
diff changeset
    25
  contrib/python-zstandard/tests/test_train_dictionary.py not using absolute_import
27279
40eb385f798f tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    26
  setup.py not using absolute_import
39401
0cbcf962847e test-check-py3-compat: don't run py2 part if $PYTHON is python3
Yuya Nishihara <yuya@tcha.org>
parents: 39386
diff changeset
    27
#endif
28583
260ce2eed951 tests: perform an ast parse with Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 28564
diff changeset
    28
40263
8cf459d8b111 py3: use py3 as the test tag, dropping the k
Martijn Pieters <mj@octobus.net>
parents: 39830
diff changeset
    29
#if py3
33204
ddd65b4f3ae6 tests: alias syshg and syshgenv so they can be switched conditionally
Yuya Nishihara <yuya@tcha.org>
parents: 33116
diff changeset
    30
  $ testrepohg files 'set:(**.py) - grep(pygments)' \
33530
05e3fa254b6b demandimport: drop Py3 workarounds from Py2 implementation
Yuya Nishihara <yuya@tcha.org>
parents: 33204
diff changeset
    31
  > -X hgdemandimport/demandimportpy2.py \
33204
ddd65b4f3ae6 tests: alias syshg and syshgenv so they can be switched conditionally
Yuya Nishihara <yuya@tcha.org>
parents: 33116
diff changeset
    32
  > -X hgext/fsmonitor/pywatchman \
39384
722eab64f1ed test-check-py3-compat: exclude thirdparty and cffi which are known to fail
Yuya Nishihara <yuya@tcha.org>
parents: 39383
diff changeset
    33
  > -X mercurial/cffi \
722eab64f1ed test-check-py3-compat: exclude thirdparty and cffi which are known to fail
Yuya Nishihara <yuya@tcha.org>
parents: 39383
diff changeset
    34
  > -X mercurial/thirdparty \
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 39402
diff changeset
    35
  > | sed 's|\\|/|g' | xargs "$PYTHON" contrib/check-py3-compat.py \
29810
ceff91dea404 py3: automatically glob out line numbers from check-py3-compat output
Yuya Nishihara <yuya@tcha.org>
parents: 29809
diff changeset
    36
  > | sed 's/[0-9][0-9]*)$/*)/'
41556
9f69ddb807f7 tests: add syntax warnings on Python 3.8 in python-zstandard
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40263
diff changeset
    37
  contrib/python-zstandard/tests/test_compressor.py:324: SyntaxWarning: invalid escape sequence \( (py38 !)
9f69ddb807f7 tests: add syntax warnings on Python 3.8 in python-zstandard
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40263
diff changeset
    38
    with self.assertRaisesRegexp(zstd.ZstdError, 'cannot call compress\(\) after compressor'): (py38 !)
9f69ddb807f7 tests: add syntax warnings on Python 3.8 in python-zstandard
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40263
diff changeset
    39
  contrib/python-zstandard/tests/test_compressor.py:1329: SyntaxWarning: invalid escape sequence \( (py38 !)
9f69ddb807f7 tests: add syntax warnings on Python 3.8 in python-zstandard
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40263
diff changeset
    40
    'cannot call compress\(\) after compression finished'): (py38 !)
9f69ddb807f7 tests: add syntax warnings on Python 3.8 in python-zstandard
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40263
diff changeset
    41
  contrib/python-zstandard/tests/test_compressor.py:1341: SyntaxWarning: invalid escape sequence \( (py38 !)
9f69ddb807f7 tests: add syntax warnings on Python 3.8 in python-zstandard
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40263
diff changeset
    42
    'cannot call flush\(\) after compression finished'): (py38 !)
9f69ddb807f7 tests: add syntax warnings on Python 3.8 in python-zstandard
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40263
diff changeset
    43
  contrib/python-zstandard/tests/test_compressor.py:1353: SyntaxWarning: invalid escape sequence \( (py38 !)
9f69ddb807f7 tests: add syntax warnings on Python 3.8 in python-zstandard
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40263
diff changeset
    44
    'cannot call finish\(\) after compression finished'): (py38 !)
39385
34ef6a5a7bcd test-check-py3-compat: update "python3 check-py3-compat.py" output
Yuya Nishihara <yuya@tcha.org>
parents: 39384
diff changeset
    45
  hgext/convert/transport.py: error importing: <*Error> No module named 'svn.client' (error at transport.py:*) (glob) (?)
34ef6a5a7bcd test-check-py3-compat: update "python3 check-py3-compat.py" output
Yuya Nishihara <yuya@tcha.org>
parents: 39384
diff changeset
    46
  hgext/infinitepush/sqlindexapi.py: error importing: <*Error> No module named 'mysql' (error at sqlindexapi.py:*) (glob) (?)
34ef6a5a7bcd test-check-py3-compat: update "python3 check-py3-compat.py" output
Yuya Nishihara <yuya@tcha.org>
parents: 39384
diff changeset
    47
  mercurial/scmwindows.py: error importing: <ValueError> _type_ 'v' not supported (error at win32.py:*) (no-windows !)
34ef6a5a7bcd test-check-py3-compat: update "python3 check-py3-compat.py" output
Yuya Nishihara <yuya@tcha.org>
parents: 39384
diff changeset
    48
  mercurial/win32.py: error importing: <ValueError> _type_ 'v' not supported (error at win32.py:*) (no-windows !)
34ef6a5a7bcd test-check-py3-compat: update "python3 check-py3-compat.py" output
Yuya Nishihara <yuya@tcha.org>
parents: 39384
diff changeset
    49
  mercurial/windows.py: error importing: <ModuleNotFoundError> No module named 'msvcrt' (error at windows.py:*) (no-windows !)
39830
e5871e8fbb57 py3: update missing module list in test-check-py3-compat.t for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 39707
diff changeset
    50
  mercurial/posix.py: error importing: <ModuleNotFoundError> No module named 'fcntl' (error at posix.py:*) (windows !)
e5871e8fbb57 py3: update missing module list in test-check-py3-compat.t for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 39707
diff changeset
    51
  mercurial/scmposix.py: error importing: <ModuleNotFoundError> No module named 'fcntl' (error at scmposix.py:*) (windows !)
28583
260ce2eed951 tests: perform an ast parse with Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 28564
diff changeset
    52
#endif
29886
e2c086f147ef py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com>
parents: 29810
diff changeset
    53
40263
8cf459d8b111 py3: use py3 as the test tag, dropping the k
Martijn Pieters <mj@octobus.net>
parents: 39830
diff changeset
    54
#if py3 pygments
33204
ddd65b4f3ae6 tests: alias syshg and syshgenv so they can be switched conditionally
Yuya Nishihara <yuya@tcha.org>
parents: 33116
diff changeset
    55
  $ testrepohg files 'set:(**.py) and grep(pygments)' | sed 's|\\|/|g' \
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 39402
diff changeset
    56
  > | xargs "$PYTHON" contrib/check-py3-compat.py \
29886
e2c086f147ef py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com>
parents: 29810
diff changeset
    57
  > | sed 's/[0-9][0-9]*)$/*)/'
e2c086f147ef py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com>
parents: 29810
diff changeset
    58
#endif