kislyuk / argcomplete

Python and tab completion, better together.
https://kislyuk.github.io/argcomplete/
Apache License 2.0
1.39k stars 129 forks source link

Python 3.12.3: Test suite fails #483

Closed rikardg closed 2 months ago

rikardg commented 2 months ago

It looks like the test suite starts failing with Python 3.12.3 (it passes just fine with 3.12.2 here).

The errors look identical to the ones reported in #480.

Results from `python3 test/test.py -vv` ```python ====================================================================== ERROR: test_repl_parse_after_complete (__main__.TestArgcompleteREPL.test_repl_parse_after_complete) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 934, in test_repl_parse_after_complete args = p.parse_args(["--foo", "spam", "bar"]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vagrant/.local/share/mise/installs/python/3.12.3/lib/python3.12/argparse.py", line 1896, in parse_args args, argv = self.parse_known_args(args, namespace) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vagrant/.local/share/mise/installs/python/3.12.3/lib/python3.12/argparse.py", line 1929, in parse_known_args namespace, args = self._parse_known_args(args, namespace) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vagrant/argcomplete/argcomplete/packages/_argparse.py", line 299, in _parse_known_args start_index = consume_optional(start_index) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vagrant/argcomplete/argcomplete/packages/_argparse.py", line 165, in consume_optional action, option_string, explicit_arg = option_tuple ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: too many values to unpack (expected 3) ====================================================================== FAIL: test_choices (__main__.TestArgcomplete.test_choices) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 179, in test_choices self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the first set but not the second: '--ship' '-h' '--help' Items in the second set but not the first: 'speedboat' 'submarine' ====================================================================== FAIL: test_completers (__main__.TestArgcomplete.test_completers) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 300, in test_completers self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the first set but not the second: '-h' '--url' '--help' '--email' Items in the second set but not the first: 'http://url1' 'http://url2' ====================================================================== FAIL: test_default_completer (__main__.TestArgcomplete.test_default_completer) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 424, in test_default_completer self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the first set but not the second: '--one' '--many' Items in the second set but not the first: 'test/' ====================================================================== FAIL: test_escape_special_chars (__main__.TestArgcomplete.test_escape_special_chars) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 832, in test_escape_special_chars self.assertEqual(set(self.run_completer(make_parser(), "prog -1 ")), {r"bar\<\$\>baz "}) AssertionError: Items in the first set but not the second: '-1' '-3' '-2' Items in the second set but not the first: 'bar\\<\\$\\>baz ' ====================================================================== FAIL: test_exclusive (__main__.TestArgcomplete.test_exclusive) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 773, in test_exclusive self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the first set but not the second: '--no-bar' ====================================================================== FAIL: test_exclusive_class (__main__.TestArgcomplete.test_exclusive_class) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 822, in test_exclusive_class self.assertEqual(set(self.run_completer(parser, cmd, completer=completer)), set(output)) AssertionError: Items in the first set but not the second: '--foo' '--baz' '--bar' '--no-bar' Items in the second set but not the first: 'baz2' 'baz1' ====================================================================== FAIL: test_filescompleter_filetype_integration (__main__.TestArgcomplete.test_filescompleter_filetype_integration) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 378, in test_filescompleter_filetype_integration self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the first set but not the second: '--w' '-h' '--r' '--help' Items in the second set but not the first: 'abcxyz' 'abcdefж/' 'abcaha/' ====================================================================== FAIL: test_mixed_optional_positional (__main__.TestArgcomplete.test_mixed_optional_positional) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 793, in test_mixed_optional_positional self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the first set but not the second: '--set' Items in the second set but not the first: 'name1' 'name2' ====================================================================== FAIL: test_non_ascii (__main__.TestArgcomplete.test_non_ascii) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 482, in test_non_ascii self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the first set but not the second: '-h' '--книга' '--help' Items in the second set but not the first: 'Понедельник\\ начинается\\ в\\ субботу' 'Трудно\\ быть\\ богом' 'Парень\\ из\\ преисподней' ====================================================================== FAIL: test_optional_nargs (__main__.TestArgcomplete.test_optional_nargs) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 697, in test_optional_nargs self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the first set but not the second: '--baz' '--foo' '-h' '--bar' '--help' '--qux' '--foobar' Items in the second set but not the first: 'foo1' 'foo2' ====================================================================== FAIL: test_positional_remainder (__main__.TestArgcomplete.test_positional_remainder) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 717, in test_positional_remainder self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the second set but not the first: '--opt' 'pos' ====================================================================== FAIL: test_subparser_completers (__main__.TestArgcomplete.test_subparser_completers) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 345, in test_subparser_completers self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the second set but not the first: 'val5' ====================================================================== FAIL: test_subparsers (__main__.TestArgcomplete.test_subparsers) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/vagrant/argcomplete/test/test.py", line 451, in test_subparsers self.assertEqual(set(self.run_completer(make_parser(), cmd)), set(output)) AssertionError: Items in the first set but not the second: 'eggs' '--age' 'spam' Items in the second set but not the first: 'in\\ the\\ rain' 'on\\ a\\ boat' 'with\\ a\\ goat' 'on\\ a\\ train' ---------------------------------------------------------------------- Ran 186 tests in 217.415s FAILED (failures=13, errors=1, skipped=12, expected failures=5) ```
kislyuk commented 2 months ago

Fix released in v3.3.0.