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

2.1.3: pytest is failing in two nits #144

Open
kloczek opened this issue Mar 7, 2023 · 1 comment
Open

2.1.3: pytest is failing in two nits #144

kloczek opened this issue Mar 7, 2023 · 1 comment

Comments

@kloczek
Copy link

kloczek commented Mar 7, 2023

I'm packaging 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 only locally installed modules
  • install .whl file in </install/prefix>
  • run pytest with $PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>
  • build is performed in env which is cut off from access to the public network (pytest is executed with -m "not network")

Here is pytest output:

+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-icecream-2.1.3-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-icecream-2.1.3-2.fc35.x86_64/usr/lib/python3.8/site-packages
+ /usr/bin/pytest -ra -m 'not network'
==================================================================================== test session starts ====================================================================================
platform linux -- Python 3.8.16, pytest-7.2.2, pluggy-1.0.0
rootdir: /home/tkloczko/rpmbuild/BUILD/icecream-2.1.3
collected 37 items

tests/test_icecream.py ..........F.....................F..                                                                                                                            [ 94%]
tests/test_install.py ..                                                                                                                                                              [100%]

========================================================================================= FAILURES ==========================================================================================
______________________________________________________________________________ TestIceCream.testEnableDisable _______________________________________________________________________________

self = <test_icecream.TestIceCream testMethod=testEnableDisable>

    def testEnableDisable(self):
        with disableColoring(), captureStandardStreams() as (out, err):
            assert ic(a) == 1
            assert ic.enabled

            ic.disable()
            assert not ic.enabled
            assert ic(b) == 2

            ic.enable()
            assert ic.enabled
            assert ic(c) == 3

        pairs = parseOutputIntoPairs(out, err, 2)
>       assert pairs == [[('a', '1')], [('c', '3')]]
E       AssertionError: assert [[('REPL (e.g...ion?', None)]] == [[('a', '1')], [('c', '3')]]
E         At index 0 diff: [('REPL (e.g. from the command line), a frozen application (e.g. packaged with PyInstaller), or did the underlying source code change during execution?', None)] != [('a', '1')]
E         Use -v to get more diff

tests/test_icecream.py:380: AssertionError
______________________________________________________________________ TestIceCream.testSingledispatchArgumentToString ______________________________________________________________________

self = <test_icecream.TestIceCream testMethod=testSingledispatchArgumentToString>

    def testSingledispatchArgumentToString(self):
        def argumentToString_tuple(obj):
            return "Dispatching tuple!"

        # Unsupport Python2
        if "singledispatch" not in dir(functools):
            for attr in ("register", "unregister"):
                with self.assertRaises(NotImplementedError):
                    getattr(argumentToString, attr)(
                        tuple, argumentToString_tuple
                    )
            return

        # Prepare input and output
        x = (1, 2)
        default_output = ic.format(x)

        # Register
        argumentToString.register(tuple, argumentToString_tuple)
        assert tuple in argumentToString.registry
>       assert str.endswith(ic.format(x), argumentToString_tuple(x))

tests/test_icecream.py:413:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-icecream-2.1.3-2.fc35.x86_64/usr/lib/python3.8/site-packages/icecream/icecream.py:225: in format
    out = self._format(callFrame, *args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <icecream.icecream.IceCreamDebugger object at 0x7f8c3420bc70>
callFrame = <frame at 0x558ed9986de0, file '/home/tkloczko/rpmbuild/BUILD/icecream-2.1.3/tests/test_icecream.py', line 413, code testSingledispatchArgumentToString>, args = ((1, 2),)
prefix = 'ic| ', callNode = None

    def _format(self, callFrame, *args):
        prefix = callOrValue(self.prefix)

        callNode = Source.executing(callFrame).node
        if callNode is None:
>           raise NoSourceAvailableError()
E           icecream.icecream.NoSourceAvailableError

../../BUILDROOT/python-icecream-2.1.3-2.fc35.x86_64/usr/lib/python3.8/site-packages/icecream/icecream.py:233: NoSourceAvailableError
===================================================================================== warnings summary ======================================================================================
tests/test_icecream.py::TestIceCream::testMultilineContainerArgs
  /home/tkloczko/rpmbuild/BUILD/icecream-2.1.3/tests/test_icecream.py:573: DeprecationWarning: Please use assertRegex instead.
    self.assertRegexpMatches(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================================================================== short test summary info ==================================================================================
FAILED tests/test_icecream.py::TestIceCream::testEnableDisable - AssertionError: assert [[('REPL (e.g...ion?', None)]] == [[('a', '1')], [('c', '3')]]
FAILED tests/test_icecream.py::TestIceCream::testSingledispatchArgumentToString - icecream.icecream.NoSourceAvailableError
========================================================================== 2 failed, 35 passed, 1 warning in 1.35s ==========================================================================

Here is list of installed modules in build env

Package         Version
--------------- --------------
asttokens       2.2.1
attrs           22.2.0
build           0.10.0
colorama        0.4.6
distro          1.8.0
exceptiongroup  1.0.0
executing       1.2.0
gpg             1.18.0-unknown
iniconfig       2.0.0
libcomps        0.1.19
packaging       23.0
pip             22.3.1
pluggy          1.0.0
Pygments        2.14.0
pyproject_hooks 1.0.0
pytest          7.2.2
python-dateutil 2.8.2
rpm             4.17.0
setuptools      65.6.3
six             1.16.0
tomli           2.0.1
wheel           0.38.4
@haorannlp
Copy link

haorannlp commented Jul 17, 2023

Same problem when testing with py3.8, py3.9

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

No branches or pull requests

2 participants