icecream
icecream copied to clipboard
2.1.3: pytest is failing in two nits
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
Same problem when testing with py3.8, py3.9