Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test failures with Python 3.12.0b2 #440

Closed
hroncok opened this issue Jun 14, 2023 · 1 comment · Fixed by #448
Closed

Test failures with Python 3.12.0b2 #440

hroncok opened this issue Jun 14, 2023 · 1 comment · Fixed by #448

Comments

@hroncok
Copy link
Contributor

hroncok commented Jun 14, 2023

Hello. We are mass rebuilding all Fedora 39 packages with Python 3.12.0b2 to align Fedora 39 and Python 3.12.0 final releases.

Our argcomplete package fails to build. The test failure is reproducible on Fedora 37/38 as well, from git, with Python 3.12.0b2, like so:

[argcomplete (develop %)]$ git rev-parse HEAD
a9059f37bb04609ba27c540ffeea4d3c422558a3
[argcomplete (develop %)]$ python3.12 --version
Python 3.12.0b2
[argcomplete (develop %)]$ python3.12 -m venv venv3.12
[argcomplete (develop %)]$ . venv3.12/bin/activate
(venv3.12) [argcomplete (develop %)]$ make test_deps
...
Successfully installed argcomplete-3.1.1 coverage-7.2.7 mypy-1.3.0 mypy-extensions-1.0.0 pexpect-4.8.0 ptyprocess-0.7.0 ruff-0.0.272 typing-extensions-4.6.3 wheel-0.40.0
(venv3.12) [argcomplete (develop %)]$ make test
...
======================================================================
FAIL: test_console_script_module (__main__.TestBashGlobal.test_console_script_module)
Test completing a console_script for a module.
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../argcomplete/test/test.py", line 1376, in test_console_script_module
    self._test_console_script()
  File ".../argcomplete/test/test.py", line 1370, in _test_console_script
    self.assertEqual(self.sh.run_command(command), "arg\r\n")
AssertionError: "usage: test-module [-h] {arg}\r\ntest-mo[66 chars]\r\n" != 'arg\r\n'
+ arg
- usage: test-module [-h] {arg}
- test-module: error: argument arg: invalid choice: 'a' (choose from 'arg')


======================================================================
FAIL: test_console_script_module_wheel (__main__.TestBashGlobal.test_console_script_module_wheel)
Test completing a console_script for a module from a wheel.
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../argcomplete/test/test.py", line 1388, in test_console_script_module_wheel
    self._test_console_script(wheel=True)
  File ".../argcomplete/test/test.py", line 1370, in _test_console_script
    self.assertEqual(self.sh.run_command(command), "arg\r\n")
AssertionError: "usage: test-module [-h] {arg}\r\ntest-mo[66 chars]\r\n" != 'arg\r\n'
+ arg
- usage: test-module [-h] {arg}
- test-module: error: argument arg: invalid choice: 'a' (choose from 'arg')


======================================================================
FAIL: test_console_script_package (__main__.TestBashGlobal.test_console_script_package)
Test completing a console_script for a package.
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../argcomplete/test/test.py", line 1382, in test_console_script_package
    self._test_console_script(package=True)
  File ".../argcomplete/test/test.py", line 1370, in _test_console_script
    self.assertEqual(self.sh.run_command(command), "arg\r\n")
AssertionError: "usage: test-package [-h] {arg}\r\ntest-p[68 chars]\r\n" != 'arg\r\n'
+ arg
- usage: test-package [-h] {arg}
- test-package: error: argument arg: invalid choice: 'a' (choose from 'arg')


======================================================================
FAIL: test_console_script_package_wheel (__main__.TestBashGlobal.test_console_script_package_wheel)
Test completing a console_script for a package from a wheel.
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../argcomplete/test/test.py", line 1394, in test_console_script_package_wheel
    self._test_console_script(package=True, wheel=True)
  File ".../argcomplete/test/test.py", line 1370, in _test_console_script
    self.assertEqual(self.sh.run_command(command), "arg\r\n")
AssertionError: "usage: test-package [-h] {arg}\r\ntest-p[68 chars]\r\n" != 'arg\r\n'
+ arg
- usage: test-package [-h] {arg}
- test-package: error: argument arg: invalid choice: 'a' (choose from 'arg')


----------------------------------------------------------------------
Ran 127 tests in 62.218s

FAILED (failures=4, expected failures=10)
@hroncok
Copy link
Contributor Author

hroncok commented Sep 14, 2023

Heureka, I got it!

hroncok added a commit to hroncok/argcomplete that referenced this issue Sep 14, 2023
In f4d046c an assumption was made
(correct at the time), that only the importlib.metadata backport,
`importlib_metadata`, returns a tuple of entry points.

However, importlib.metadata in Python 3.12+ behaves the same.

This caused a KeyError exception to be thrown on Python 3.12,
as reported repeatedly be testers of Fedora Linux 39 in:

https://bugzilla.redhat.com/show_bug.cgi?id=2231593

This change adjusts the conditional used in check_console_script
to assume both the backport and Python 3.12+ return a tuple.

While not obvious from the test failures output,
this change also fixes the following TestBashGlobal tests failures:

 - test_console_script_module
 - test_console_script_module_wheel
 - test_console_script_package
 - test_console_script_package_wheel

For the reference, the failures looked like this:

    FAIL: test_console_script_module (__main__.TestBashGlobal.test_console_script_module)
    Test completing a console_script for a module.
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File ".../argcomplete/test/test.py", line 1376, in test_console_script_module
        self._test_console_script()
      File ".../argcomplete/test/test.py", line 1370, in _test_console_script
        self.assertEqual(self.sh.run_command(command), "arg\r\n")
    AssertionError: "usage: test-module [-h] {arg}\r\ntest-mo[66 chars]\r\n" != 'arg\r\n'
    + arg
    - usage: test-module [-h] {arg}
    - test-module: error: argument arg: invalid choice: 'a' (choose from 'arg')

Fixes kislyuk#440
kislyuk pushed a commit that referenced this issue Sep 16, 2023
In f4d046c an assumption was made
(correct at the time), that only the importlib.metadata backport,
`importlib_metadata`, returns a tuple of entry points.

However, importlib.metadata in Python 3.12+ behaves the same.

This caused a KeyError exception to be thrown on Python 3.12,
as reported repeatedly be testers of Fedora Linux 39 in:

https://bugzilla.redhat.com/show_bug.cgi?id=2231593

This change adjusts the conditional used in check_console_script
to assume both the backport and Python 3.12+ return a tuple.

While not obvious from the test failures output,
this change also fixes the following TestBashGlobal tests failures:

 - test_console_script_module
 - test_console_script_module_wheel
 - test_console_script_package
 - test_console_script_package_wheel

For the reference, the failures looked like this:

    FAIL: test_console_script_module (__main__.TestBashGlobal.test_console_script_module)
    Test completing a console_script for a module.
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File ".../argcomplete/test/test.py", line 1376, in test_console_script_module
        self._test_console_script()
      File ".../argcomplete/test/test.py", line 1370, in _test_console_script
        self.assertEqual(self.sh.run_command(command), "arg\r\n")
    AssertionError: "usage: test-module [-h] {arg}\r\ntest-mo[66 chars]\r\n" != 'arg\r\n'
    + arg
    - usage: test-module [-h] {arg}
    - test-module: error: argument arg: invalid choice: 'a' (choose from 'arg')

Fixes #440
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant