setuptools_scm: 6.4.0: pytest is failing in `testing/test_integration.py::test_provides_toml_exta` unit

I’m trying to package your module as an rpm package. So I’m using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

  • python3 -sBm build -w --no-isolation
  • because I’m calling build with --no-isolation I’m using during all processes oly locally installed modules
  • install .whl file in </install/prefix>
  • run pytest with PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>

Here is pytest output:

+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-setuptools_scm-6.4.0-2.fc35.x86_64//usr/lib/python3.8/site-packages
+ pytest -ra --ignore testing/test_hg_git.py
=========================================================================== test session starts ============================================================================
platform linux -- Python 3.8.12, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
setuptools version 60.5.4.post20220117 from '/usr/lib/python3.8/site-packages/setuptools/__init__.py'
setuptools_scm version 6.4.0 from '/home/tkloczko/rpmbuild/BUILDROOT/python-setuptools_scm-6.4.0-2.fc35.x86_64/usr/lib/python3.8/site-packages/setuptools_scm/__init__.py'
rootdir: /home/tkloczko/rpmbuild/BUILD/setuptools_scm-6.4.0, configfile: tox.ini, testpaths: testing
collected 236 items

testing/test_basic_api.py .................                                                                                                                          [  7%]
testing/test_config.py ...........                                                                                                                                   [ 11%]
testing/test_file_finder.py .s.s.s.s.s.s.s.s.s.s.s..ss.s.s.s.s.s                                                                                                     [ 27%]
testing/test_functions.py .........................                                                                                                                  [ 37%]
testing/test_git.py ...............x...........X.....                                                                                                                [ 51%]
testing/test_integration.py ...............F                                                                                                                         [ 58%]
testing/test_main.py ....                                                                                                                                            [ 60%]
testing/test_mercurial.py ssssssssssssssss                                                                                                                           [ 66%]
testing/test_regressions.py ....s                                                                                                                                    [ 69%]
testing/test_setuptools_support.py sssssssssssssssssssssssssssss                                                                                                     [ 81%]
testing/test_version.py .........................................x..                                                                                                 [100%]

================================================================================= FAILURES =================================================================================
_________________________________________________________________________ test_provides_toml_exta __________________________________________________________________________

    @pytest.mark.issue(611)
    def test_provides_toml_exta():
        try:
            from importlib.metadata import distribution
        except ImportError:
            from importlib_metadata import distribution

        dist = distribution("setuptools_scm")
>       assert "toml" in dist.metadata["Provides-Extra"]
E       AssertionError: assert 'toml' in 'test'

testing/test_integration.py:152: AssertionError
========================================================================= short test summary info ==========================================================================
SKIPPED [18] testing/test_file_finder.py:24: hg executable not found
SKIPPED [5] testing/test_mercurial.py:37: hg executable not found
SKIPPED [1] testing/test_mercurial.py:49: hg executable not found
SKIPPED [1] testing/test_mercurial.py:55: hg executable not found
SKIPPED [1] testing/test_mercurial.py:69: hg executable not found
SKIPPED [1] testing/test_mercurial.py:97: hg executable not found
SKIPPED [1] testing/test_mercurial.py:112: hg executable not found
SKIPPED [1] testing/test_mercurial.py:122: hg executable not found
SKIPPED [1] testing/test_mercurial.py:147: hg executable not found
SKIPPED [1] testing/test_mercurial.py:152: hg executable not found
SKIPPED [1] testing/test_mercurial.py:159: hg executable not found
SKIPPED [1] testing/test_mercurial.py:171: hg executable not found
SKIPPED [1] testing/test_mercurial.py:181: hg executable not found
SKIPPED [1] testing/test_regressions.py:84: this bug is only valid on windows
SKIPPED [29] testing/test_setuptools_support.py:75: testing on legacy setuptools disabled, pass --test-legacy to run them
XFAIL testing/test_git.py::test_git_worktree_support
  sometimes relative path results
XFAIL testing/test_version.py::test_calver_by_date_semver[SemVer dirty]
XPASS testing/test_git.py::test_non_dotted_version https://github.com/pypa/setuptools_scm/issues/449
FAILED testing/test_integration.py::test_provides_toml_exta - AssertionError: assert 'toml' in 'test'
===================================================== 1 failed, 168 passed, 64 skipped, 2 xfailed, 1 xpassed in 19.45s =====================================================

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 25 (13 by maintainers)

Commits related to this issue

Most upvoted comments

@kloczek happy it works again

also sorry for my earlier tone, i let my frustration get the better of me

thats what one gets when info dumping volunteers with excessive amounts of non-actionable reports i recommend taking some time to check out how the fedora maintainers do it (because at least in my personal experience they often deliver minimal reproducers and/or proposed fixes)

i’m glad there is going to progress on this

i’m well aware that build setups/pipelines that hat to be stomped out of nothing can be riddled with hard to communicate types of tech debts that will incur tolls on external communication,

especially in those cases its important to find some ways/methods to provide ease of enviroment comprehension for the “outsiders” at the same time, those can be incredibly hard to come up with sanely,

Good to know that my methodology reporting issues is improving 😉

will bugfix tommorow

@kloczek 3 major helpers would be

  • adding debug prints before unclear errors (for example making a debug print of the distribution metadata serialized as string would have my missed mistake in the api usage more obvious)
  • including details on some “differential” testing (for example the issue in this case only showed when a version of setuptools, that accidentally did not make it to pypi would accidentally reorder things, making my initial bad call return the wrong value suddenly, so a indication of works with older setuptools breaks with newer setuptools would help to figure what makes the difference
  • having a way for upstream maintainers to painlessly replicate your setup (even just a docker container one can enter and run the examples would be a big change (however depending on your internal requirements that may not be possible) a difference between just a build log, and a build log one can repeat in seconds on a own system with own changes is massive