Skip to content

approval-tests minimal: a dependency is missing since 17.2.1 #251

@ahitrin

Description

@ahitrin

Hi!

First of all, I want to thank you for creating this awesome testing library 😄 I use it in several my projects, and it's really satisfying to work with.

Unfortunately, several last versions of its approvaltests-minimal flavour suffer from a missing dependency issue. I've created a simple reproducer for this issue, and it shows that this issue had appeared since 17.2.1 version.

Steps to reproduce:

  1. Create an empty Python project (say, with poetry)
  2. Add approvaltests-minimal dependency with version 17.2.1 or newer.
  3. Try to run pytest (just like poetry run pytest). It's not even required to create any real test, TBH.

Results:

  • For version 17.2.0 or older, tests are executed correctly;
  • For version 17.2.1 or newer, the following error appears:
zlobookV:min-approval zloddey$ poetry run pytest
Traceback (most recent call last):
  File "/Users/zloddey/temp/min-approval/.venv/bin/pytest", line 8, in <module>
    sys.exit(console_main())
             ^^^^^^^^^^^^^^
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/config/__init__.py", line 223, in console_main
    code = main()
           ^^^^^^
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/config/__init__.py", line 193, in main
    config = _prepareconfig(new_args, plugins)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/config/__init__.py", line 361, in _prepareconfig
    config: Config = pluginmanager.hook.pytest_cmdline_parse(
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    raise exception
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    teardown.throw(exception)
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/helpconfig.py", line 124, in pytest_cmdline_parse
    config = yield
             ^^^^^
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/config/__init__.py", line 1186, in pytest_cmdline_parse
    self.parse(args)
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/config/__init__.py", line 1539, in parse
    self.pluginmanager.load_setuptools_entrypoints("pytest11")
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/pluggy/_manager.py", line 416, in load_setuptools_entrypoints
    plugin = ep.load()
             ^^^^^^^^^
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/metadata/__init__.py", line 205, in load
    module = import_module(match.group('module'))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py", line 197, in exec_module
    exec(co, module.__dict__)
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/approvaltests/__init__.py", line 3, in <module>
    from .approvals import *
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py", line 197, in exec_module
    exec(co, module.__dict__)
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/approvaltests/approvals.py", line 7, in <module>
    import approvaltests.namer.default_namer_factory
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py", line 197, in exec_module
    exec(co, module.__dict__)
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/approvaltests/namer/__init__.py", line 3, in <module>
    from .default_namer_factory import *
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py", line 197, in exec_module
    exec(co, module.__dict__)
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/approvaltests/namer/default_namer_factory.py", line 4, in <module>
    from approvaltests.core.options import Options
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py", line 197, in exec_module
    exec(co, module.__dict__)
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/approvaltests/core/__init__.py", line 4, in <module>
    from .options import *
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py", line 197, in exec_module
    exec(co, module.__dict__)
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/approvaltests/core/options.py", line 6, in <module>
    from approvaltests.file_approver import FileComparator
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py", line 197, in exec_module
    exec(co, module.__dict__)
  File "/Users/zloddey/temp/min-approval/.venv/lib/python3.12/site-packages/approvaltests/file_approver.py", line 8, in <module>
    from approval_utilities.utilities.multiline_string_utils import remove_indentation_from
ModuleNotFoundError: No module named 'approval_utilities.utilities.multiline_string_utils'

Looks like approvaltests-minimal doesn't contain approval_utilities package since version 17.2.1 but still tries to use it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions