*: Python3.9 switched __file__ to be always absolute
https://bugs.python.org/issue20443 This broke test_defer_excchain_dump because testprog/golang_test_defer_excchain.txt is prepared with output where `python file` shows that file name in traceback as it was specified on the command line, e.g. .../pygolang/golang/testprog$ python golang_test_defer_excchain.py Traceback (most recent call last): File ".../pygolang/golang/__init__.py", line 103, in _ return f(*argv, **kw) File "golang_test_defer_excchain.py", line 42, in main raise RuntimeError("err") RuntimeError: err while with py39 it became .../pygolang/golang/testprog$ python golang_test_defer_excchain.py Traceback (most recent call last): File ".../pygolang/golang/__init__.py", line 103, in _ return f(*argv, **kw) File ".../pygolang/golang/testprog/golang_test_defer_excchain.py", line 42, in main raise RuntimeError("err") RuntimeError: err (notice the difference related to "line 42") -> Fix it: - amend the test to conditionally prefix golang_test_defer_excchain.py in expected output with PYGOLANG/golang/testprog/ if it is Python >= 3.9. - amend `gpython file` to match behaviour of underlying `python file`, so that the test passes unconditionally whether it is run by python or gpython. -------- @jerome also says (nexedi/pygolang!13 (comment 122826)): FYI, buildout (and many zope packages) essentially use doctests for testing and they had to deal with similar differences in output. `zope.testing` comes with a doctest checker named "renormalizing" which normalize output with regular expressions, see for example setup of some buildout test [here](https://github.com/buildout/buildout/blob/db3d6e2fbf5d7ff2cc4b2507253c7a221cfc3e32/src/zc/buildout/tests.py#L3615-L3651). We definitely don't need this here for the moment, but maybe one day it can be useful. /reviewed-on nexedi/pygolang!13
Showing