tests: make sure pygments can detect python script without extension
This .t file was failing for me when running run-tests.py with python3.11. Then
I tried to run it with python3.10 and it failed anyway, even though it's the
default python3 interpreter. But with `python3 ./run-tests.py` it worked fine.
And this is what I found while looking at the way pygments lexer checks if a
file without extension is likely to be a python script:
shebang_matches(text, r'pythonw?(3(\.\d)?)?')
Take guess why it doesn't work for python >= 3.10.
To work around this issue, we can simply hardcode an "easier" shebang for
pygments. This path to python interpreter obviously doesn't need to be
accurate, since we're not running this script.
#require test-repo
$ . "$TESTDIR/helpers-testrepo.sh"
$ cd "`dirname "$TESTDIR"`"
look for python scripts that do not use /usr/bin/env
$ testrepohg files 'set:grep(r"^#!.*?python") and not grep(r"^#!/usr/bi{1}n/env python") - **/*.t'
[1]
In tests, enforce $PYTHON and *not* /usr/bin/env python or similar:
$ testrepohg files 'set:grep(r"#!.*?python") and **/*.t' \
> -X tests/test-check-execute.t \
> -X tests/test-check-format.t \
> -X tests/test-check-module-imports.t \
> -X tests/test-check-pyflakes.t \
> -X tests/test-check-shbang.t \
> -X tests/test-highlight.t
[1]
The above exclusions are because they're looking for files that
contain Python but don't end in .py - please avoid adding more.
look for shell scripts that do not use /bin/sh
$ testrepohg files 'set:grep(r"^#!.*/bi{1}n/sh") and not grep(r"^#!/bi{1}n/sh")'
[1]