Bug#1058096: Test suite issues with new version of python3-antlr4 (Was: python3-antlr4: FTBFS: AttributeError: 'TestIntervalSet' object has no attribute 'assertEquals'. Did you mean: 'assertEqual'?)

2023-12-21 Thread Michael R. Crusoe

On Thu, 21 Dec 2023 14:30:34 +0100 Andreas Tille  wrote:
> Control: tags -1 pending
>
> Hi,
>
> I intended to fix bug #1058096. Since I realised there is a new
> upstream version I was considering an upgrade which I pushed to Salsa.
> Unfortunately there are other test suite errors as you can see in Salsa
> CI[1]:


Hey Andreas,

Please don't upgrade python3-antlr4 ; its version should match that of 
the antlr4 package.


Yes, I know the versions don't currently match, and that antlr4 is a bit 
behind and has been for a while. But they come from the same source tree 
and further upgrades without matching will likely only make the 
situation worse.


Maybe you can add the above note to debian/README.Source after you 
reverse the upgrade?



--
Michael R. Crusoe



OpenPGP_signature.asc
Description: OpenPGP digital signature


Bug#1058096: Test suite issues with new version of python3-antlr4 (Was: python3-antlr4: FTBFS: AttributeError: 'TestIntervalSet' object has no attribute 'assertEquals'. Did you mean: 'assertEqual'?)

2023-12-21 Thread Andreas Tille
Control: tags -1 pending

Hi,

I intended to fix bug #1058096.  Since I realised there is a new
upstream version I was considering an upgrade which I pushed to Salsa.
Unfortunately there are other test suite errors as you can see in Salsa
CI[1]:

==
ERROR: test.__main__ (unittest.loader._FailedTest.test.__main__)
--
ImportError: Failed to import test module: test.__main__
Traceback (most recent call last):
  File "/usr/lib/python3.11/unittest/loader.py", line 419, in _find_test_path
module = self._get_module_from_name(name)
 
  File "/usr/lib/python3.11/unittest/loader.py", line 362, in 
_get_module_from_name
__import__(name)
  File "/usr/lib/python3.11/test/__main__.py", line 2, in 
main(_add_python_opts=True)
  File "/usr/lib/python3.11/test/libregrtest/main.py", line 671, in main
ns = _parse_args(sys.argv[1:], **kwargs)
 ^^^
  File "/usr/lib/python3.11/test/libregrtest/cmdline.py", line 402, in 
_parse_args
parser.error("unrecognized arguments: %s" % arg)
  File "/usr/lib/python3.11/test/libregrtest/cmdline.py", line 182, in error
super().error(message + "\nPass -h or --help for complete help.")
  File "/usr/lib/python3.11/argparse.py", line 2642, in error
self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
  File "/usr/lib/python3.11/argparse.py", line 2629, in exit
_sys.exit(status)
SystemExit: 2
...
(see more in Salsa CI log[1])


Since this looks pretty much as if the reason for this failur is that
the PiPY downloadable tarball is lacking the directory test/ (which was
included in the currently packaged version) I checked Github for these
files and added these inside a multi-source tarball (a script to create
this tarball is commited as well).  While the first three tests that
were importing from test/ are passing now.  I've also fixed bug #1058096
in a patch[2] (thus tagging this bug pending).  However, that new version
has now new test failures which you can find in the new Salsa CI build
log which includes the (fixed) tests[3].  It starts with

==
ERROR: TestTokenStreamRewriter 
(unittest.loader._FailedTest.TestTokenStreamRewriter)
--
ImportError: Failed to import test module: TestTokenStreamRewriter
Traceback (most recent call last):
  File "/usr/lib/python3.11/unittest/loader.py", line 419, in _find_test_path
module = self._get_module_from_name(name)
 
  File "/usr/lib/python3.11/unittest/loader.py", line 362, in 
_get_module_from_name
__import__(name)
  File 
"/builds/python-team/packages/python3-antlr4/debian/output/source_dir/.pybuild/cpython3_3.11_antlr4/build/test/TestTokenStreamRewriter.py",
 line 8, in 
from mocks.TestLexer import TestLexer, TestLexer2
  File 
"/builds/python-team/packages/python3-antlr4/debian/output/source_dir/.pybuild/cpython3_3.11_antlr4/build/test/mocks/TestLexer.py",
 line 19, in 
class TestLexer(Lexer):
  File 
"/builds/python-team/packages/python3-antlr4/debian/output/source_dir/.pybuild/cpython3_3.11_antlr4/build/test/mocks/TestLexer.py",
 line 20, in TestLexer
atn = ATNDeserializer().deserialize(serializedATN())
  ^^
  File 
"/builds/python-team/packages/python3-antlr4/debian/output/source_dir/.pybuild/cpython3_3.11_antlr4/build/antlr4/atn/ATNDeserializer.py",
 line 28, in deserialize
self.checkVersion()
  File 
"/builds/python-team/packages/python3-antlr4/debian/output/source_dir/.pybuild/cpython3_3.11_antlr4/build/antlr4/atn/ATNDeserializer.py",
 line 50, in checkVersion
raise Exception("Could not deserialize ATN with version " + str(version) + 
" (expected " + str(SERIALIZED_VERSION) + ").")
Exception: Could not deserialize ATN with version   (expected 4).
...

and I have no idea how to fix this.

Kind regards
Andreas.


[1] https://salsa.debian.org/python-team/packages/python3-antlr4/-/jobs/5066603
[2] 
https://salsa.debian.org/python-team/packages/python3-antlr4/-/blob/master/debian/patches/assertEquals.patch?ref_type=heads
[3] https://salsa.debian.org/python-team/packages/python3-antlr4/-/jobs/5067599

-- 
http://fam-tille.de
#!/bin/sh
# The archive at PiPy is not featuring the test suite files
# This script is fetching the files and creates a tarball that is suited for 
multi-source tarball

UGIT=https://github.com/antlr/antlr4/
UVERSION=$(dpkg-parsechangelog --file ./changelog | grep '^Version' | cut -d' ' 
-f2  | cut -f1 -d-)
tarball=$(dpkg-parsechangelog --file ./changelog | awk '/^Source:/ {print 
$2}')_${UVERSION}.orig-tests.tar.gz
set -x

tmpdir=$(mktemp -d /tmp/python3-antlr4-testsuite)
curdir=$PWD
cd $tmpdir

git clone ${UGIT}
cd