Skip to content

"setup.py test" attempts to run a decorator #1798

@marnanel

Description

@marnanel

On a fresh copy of the main branch, ./setup.py test causes unittest to run discovery. It finds plover_build_utils.testing.parametrize.parametrize, and attempts to instantiate it to see what it is. Since it's a decorator, this fails with TypeError.

To reproduce:

python -m pip install .
./setup.py test

resulting in

WARNING: Testrunning egg_info
writing plover.egg-info/PKG-INFO
writing dependency_links to plover.egg-info/dependency_links.txt
writing entry points to plover.egg-info/entry_points.txt
wriwarning: no previously-included files found matching 'dev/*'
warning: no previously-included files found matching '.pre-commit-config.yaml'
warning: no previously-included files found matching '.mailaddinTraceback (most recent call last):
  File "/home/marnanel/src/plover/./setup.py", line 371, in <module>
    setup(
  File "/home/marnanel/venv/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup
    return distutils.core.setup(**attrs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/marnanel/venv/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup
    return run_commands(dist)
           ^^^^^^^^^^^^^^^^^^
  File "/home/marnanel/venv/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
    dist.run_commands()
  File "/home/marnanel/venv/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
    self.run_command(cmd)
  File "/home/marnanel/venv/lib/python3.11/site-packages/setuptools/dist.py", line 1213, in run_command
    super().run_command(command)
  File "/home/marnanel/venv/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
    cmd_obj.run()
  File "/home/marnanel/venv/lib/python3.11/site-packages/setuptools/command/test.py", line 224, in run
    self.run_tests()
  File "/home/marnanel/venv/lib/python3.11/site-packages/setuptools/command/test.py", line 227, in run_tests
    test = unittest.main(
           ^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/unittest/main.py", line 101, in __init__
    self.parseArgs(argv)
  File "/usr/lib/python3.11/unittest/main.py", line 127, in parseArgs
    self._do_discovery(argv[2:])
  File "/usr/lib/python3.11/unittest/main.py", line 247, in _do_discovery
    self.createTests(from_discovery=True, Loader=Loader)
  File "/usr/lib/python3.11/unittest/main.py", line 157, in createTests
    self.test = loader.discover(self.start, self.pattern, self.top)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/unittest/loader.py", line 322, in discover
    tests = list(self._find_tests(start_dir, pattern))
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/unittest/loader.py", line 377, in _find_tests
    tests, should_recurse = self._find_test_path(full_path, pattern)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/unittest/loader.py", line 453, in _find_test_path
    tests = self.loadTestsFromModule(package, pattern=pattern)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/marnanel/venv/lib/python3.11/site-packages/setuptools/command/test.py", line 57, in loadTestsFromModule
    tests.append(self.loadTestsFromName(submodule))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/unittest/loader.py", line 191, in loadTestsFromName
    return self.loadTestsFromModule(obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/marnanel/venv/lib/python3.11/site-packages/setuptools/command/test.py", line 57, in loadTestsFromModule
    tests.append(self.loadTestsFromName(submodule))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/unittest/loader.py", line 205, in loadTestsFromName
    test = obj()
           ^^^^^
TypeError: parametrize() missing 1 required positional argument: 'tests'

OS: Debian 12.12
Python: 3.11.2
Latest commit: bae586e

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions