icecream icon indicating copy to clipboard operation
icecream copied to clipboard

2.1.3: pytest is failing in two nits

Open kloczek opened this issue 1 year ago • 1 comments

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

kloczek avatar Mar 07 '23 23:03 kloczek

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

haorannlp avatar Jul 17 '23 03:07 haorannlp