##// END OF EJS Templates
posix: always seek to EOF when opening a file in append mode...
posix: always seek to EOF when opening a file in append mode Python 3 already does this, so skip it there. Consider the program: #include <stdio.h> int main() { FILE *f = fopen("narf", "w"); fprintf(f, "narf\n"); fclose(f); f = fopen("narf", "a"); printf("%ld\n", ftell(f)); fprintf(f, "troz\n"); printf("%ld\n", ftell(f)); return 0; } on macOS, FreeBSD, and Linux with glibc, this program prints 5 10 but on musl libc (Alpine Linux and probably others) this prints 0 10 By my reading of https://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html this is technically correct, specifically: > Opening a file with append mode (a as the first character in the > mode argument) shall cause all subsequent writes to the file to be > forced to the then current end-of-file, regardless of intervening > calls to fseek(). in other words, the file position doesn't really matter in append-mode files, and we can't depend on it being at all meaningful unless we perform a seek() before tell() after open(..., 'a'). Experimentally after a .write() we can do a .tell() and it'll always be reasonable, but I'm unclear from reading the specification if that's a smart thing to rely on. This matches what we do on Windows and what Python 3 does for free, so let's just be consistent. Thanks to Yuya for the idea.

File last commit:

r42237:675775c3 default
r42778:97ada9b8 5.0.2 stable
Show More
test-check-py3-compat.t
52 lines | 2.8 KiB | text/troff | Tads3Lexer
/ tests / test-check-py3-compat.t
Gregory Szorc
tests: add test for Python 3 compatibility...
r27279 #require test-repo
timeless
tests: silence test-repo obsolete warning...
r29219 $ . "$TESTDIR/helpers-testrepo.sh"
Gregory Szorc
tests: add test for Python 3 compatibility...
r27279 $ cd "$TESTDIR"/..
Martijn Pieters
py3: use py3 as the test tag, dropping the k...
r40299 #if no-py3
Yuya Nishihara
demandimport: drop Py3 workarounds from Py2 implementation
r33530 $ testrepohg files 'set:(**.py)' \
Gregory Szorc
automation: perform tasks on remote machines...
r42191 > -X contrib/automation/ \
Gregory Szorc
packaging: establish hgpackaging package...
r42073 > -X contrib/packaging/hgpackaging/ \
Gregory Szorc
inno: script to automate building Inno installer...
r42019 > -X contrib/packaging/inno/ \
Gregory Szorc
wix: functionality to automate building WiX installers...
r42087 > -X contrib/packaging/wix/ \
Yuya Nishihara
demandimport: drop Py3 workarounds from Py2 implementation
r33530 > -X hgdemandimport/demandimportpy2.py \
Pulkit Goyal
cbor: fix core test-check*...
r37145 > -X mercurial/thirdparty/cbor \
Matt Harbison
tests: quote PYTHON usage...
r39743 > | sed 's|\\|/|g' | xargs "$PYTHON" contrib/check-py3-compat.py
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 contrib/python-zstandard/setup.py not using absolute_import
contrib/python-zstandard/setup_zstd.py not using absolute_import
contrib/python-zstandard/tests/common.py not using absolute_import
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 contrib/python-zstandard/tests/test_buffer_util.py not using absolute_import
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 contrib/python-zstandard/tests/test_compressor.py not using absolute_import
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 contrib/python-zstandard/tests/test_compressor_fuzzing.py not using absolute_import
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 contrib/python-zstandard/tests/test_data_structures.py not using absolute_import
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 contrib/python-zstandard/tests/test_data_structures_fuzzing.py not using absolute_import
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 contrib/python-zstandard/tests/test_decompressor.py not using absolute_import
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 contrib/python-zstandard/tests/test_decompressor_fuzzing.py not using absolute_import
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 contrib/python-zstandard/tests/test_estimate_sizes.py not using absolute_import
contrib/python-zstandard/tests/test_module_attributes.py not using absolute_import
contrib/python-zstandard/tests/test_train_dictionary.py not using absolute_import
Gregory Szorc
tests: add test for Python 3 compatibility...
r27279 setup.py not using absolute_import
Yuya Nishihara
test-check-py3-compat: don't run py2 part if $PYTHON is python3
r39438 #endif
Gregory Szorc
tests: perform an ast parse with Python 3...
r28583
Martijn Pieters
py3: use py3 as the test tag, dropping the k...
r40299 #if py3
Yuya Nishihara
tests: alias syshg and syshgenv so they can be switched conditionally
r33199 $ testrepohg files 'set:(**.py) - grep(pygments)' \
Yuya Nishihara
demandimport: drop Py3 workarounds from Py2 implementation
r33530 > -X hgdemandimport/demandimportpy2.py \
Yuya Nishihara
tests: alias syshg and syshgenv so they can be switched conditionally
r33199 > -X hgext/fsmonitor/pywatchman \
Yuya Nishihara
test-check-py3-compat: exclude thirdparty and cffi which are known to fail...
r39421 > -X mercurial/cffi \
> -X mercurial/thirdparty \
Matt Harbison
tests: quote PYTHON usage...
r39743 > | sed 's|\\|/|g' | xargs "$PYTHON" contrib/check-py3-compat.py \
Yuya Nishihara
py3: automatically glob out line numbers from check-py3-compat output...
r29810 > | sed 's/[0-9][0-9]*)$/*)/'
Yuya Nishihara
test-check-py3-compat: update "python3 check-py3-compat.py" output
r39422 hgext/convert/transport.py: error importing: <*Error> No module named 'svn.client' (error at transport.py:*) (glob) (?)
hgext/infinitepush/sqlindexapi.py: error importing: <*Error> No module named 'mysql' (error at sqlindexapi.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: <ModuleNotFoundError> No module named 'msvcrt' (error at windows.py:*) (no-windows !)
Matt Harbison
py3: update missing module list in test-check-py3-compat.t for Windows
r39855 mercurial/posix.py: error importing: <ModuleNotFoundError> No module named 'fcntl' (error at posix.py:*) (windows !)
mercurial/scmposix.py: error importing: <ModuleNotFoundError> No module named 'fcntl' (error at scmposix.py:*) (windows !)
Gregory Szorc
tests: perform an ast parse with Python 3...
r28583 #endif
Augie Fackler
py3: split check of pygments-using files from the rest of the tree...
r29886
Martijn Pieters
py3: use py3 as the test tag, dropping the k...
r40299 #if py3 pygments
Yuya Nishihara
tests: alias syshg and syshgenv so they can be switched conditionally
r33199 $ testrepohg files 'set:(**.py) and grep(pygments)' | sed 's|\\|/|g' \
Matt Harbison
tests: quote PYTHON usage...
r39743 > | xargs "$PYTHON" contrib/check-py3-compat.py \
Augie Fackler
py3: split check of pygments-using files from the rest of the tree...
r29886 > | sed 's/[0-9][0-9]*)$/*)/'
#endif