1.11.0: pytest is failing in `ropetest/contrib/autoimporttest.py::AutoImportTest::test_search_submodule` unit
kloczek opened this issue · 3 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> using 'installer` module
- 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-rope-1.11.0-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-rope-1.11.0-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.18, pytest-7.4.3, pluggy-1.3.0
rootdir: /home/tkloczko/rpmbuild/BUILD/rope-1.11.0
configfile: pyproject.toml
collected 2060 items
ropetest/advanced_oi_test.py ........................................... [ 2%]
................. [ 2%]
ropetest/builtinstest.py ............................................... [ 5%]
................ [ 5%]
ropetest/codeanalyzetest.py ............................................ [ 8%]
........................................................................ [ 11%]
............................... [ 13%]
ropetest/doatest.py .... [ 13%]
ropetest/historytest.py ........................................ [ 15%]
ropetest/objectdbtest.py ................... [ 16%]
ropetest/objectinfertest.py ................................. [ 17%]
ropetest/projecttest.py ................................................ [ 20%]
...................................................................... [ 23%]
ropetest/pycoretest.py ................................................. [ 25%]
........................................................................ [ 29%]
....... [ 29%]
ropetest/pyscopestest.py .............................................. [ 31%]
ropetest/reprtest.py ................ [ 32%]
ropetest/runmodtest.py ......... [ 33%]
ropetest/serializer_test.py ............................................ [ 35%]
................ [ 36%]
ropetest/simplifytest.py ............... [ 36%]
ropetest/type_hinting_test.py ..............................x........... [ 38%]
......x.................x.................x.......... [ 41%]
ropetest/versioningtest.py ..... [ 41%]
ropetest/contrib/autoimporttest.py .................F....... [ 42%]
ropetest/contrib/changestacktest.py . [ 42%]
ropetest/contrib/codeassisttest.py ..................................... [ 44%]
........................................................................ [ 48%]
............................................................. [ 51%]
ropetest/contrib/finderrorstest.py ..... [ 51%]
ropetest/contrib/findittest.py ........... [ 51%]
ropetest/contrib/fixmodnamestest.py .... [ 52%]
ropetest/contrib/generatetest.py .............................. [ 53%]
ropetest/contrib/autoimport/autoimporttest.py ............ [ 54%]
ropetest/contrib/autoimport/modeltest.py ........... [ 54%]
ropetest/contrib/autoimport/parsetest.py ... [ 54%]
ropetest/contrib/autoimport/utilstest.py ........... [ 55%]
ropetest/refactor/__init__.py .......................................... [ 57%]
............................ [ 58%]
ropetest/refactor/change_signature_test.py ............................. [ 60%]
........... [ 60%]
ropetest/refactor/extracttest.py ....................................... [ 62%]
......s..........sss....x......................s........................ [ 66%]
...................................................... [ 68%]
ropetest/refactor/importutilstest.py ................................... [ 70%]
........................................................................ [ 73%]
.................................... [ 75%]
ropetest/refactor/inlinetest.py ........................................ [ 77%]
....................................................... [ 80%]
ropetest/refactor/movetest.py .......................................... [ 82%]
................................ [ 83%]
ropetest/refactor/multiprojecttest.py .... [ 84%]
ropetest/refactor/patchedasttest.py ..........................s..s.s.... [ 85%]
.....................................................ssssssssss......... [ 89%]
...................s.s.s..s........... [ 91%]
ropetest/refactor/renametest.py ........................................ [ 93%]
................................................. [ 95%]
ropetest/refactor/restructuretest.py ....................... [ 96%]
ropetest/refactor/similarfindertest.py ................................. [ 98%]
.... [ 98%]
ropetest/refactor/suitestest.py .......s............. [ 99%]
ropetest/refactor/usefunctiontest.py ............ [100%]
=================================== FAILURES ===================================
_____________________ AutoImportTest.test_search_submodule _____________________
self = <ropetest.contrib.autoimporttest.AutoImportTest testMethod=test_search_submodule>
def test_search_submodule(self):
self.importer.update_module("build")
import_statement = ("from build import env", "env")
> self.assertIn(import_statement, self.importer.search("env", exact_match=True))
E AssertionError: ('from build import env', 'env') not found in []
ropetest/contrib/autoimporttest.py:116: AssertionError
=============================== warnings summary ===============================
ropetest/advanced_oi_test.py: 60 warnings
ropetest/builtinstest.py: 63 warnings
ropetest/codeanalyzetest.py: 15 warnings
ropetest/historytest.py: 40 warnings
ropetest/objectdbtest.py: 19 warnings
ropetest/objectinfertest.py: 33 warnings
ropetest/projecttest.py: 125 warnings
ropetest/pycoretest.py: 123 warnings
ropetest/pyscopestest.py: 46 warnings
ropetest/reprtest.py: 16 warnings
ropetest/runmodtest.py: 9 warnings
ropetest/type_hinting_test.py: 76 warnings
ropetest/versioningtest.py: 5 warnings
ropetest/contrib/autoimporttest.py: 25 warnings
ropetest/contrib/changestacktest.py: 1 warning
ropetest/contrib/codeassisttest.py: 170 warnings
ropetest/contrib/finderrorstest.py: 5 warnings
ropetest/contrib/findittest.py: 11 warnings
ropetest/contrib/fixmodnamestest.py: 4 warnings
ropetest/contrib/generatetest.py: 30 warnings
ropetest/contrib/autoimport/autoimporttest.py: 14 warnings
ropetest/contrib/autoimport/utilstest.py: 5 warnings
ropetest/refactor/__init__.py: 59 warnings
ropetest/refactor/change_signature_test.py: 40 warnings
ropetest/refactor/extracttest.py: 160 warnings
ropetest/refactor/importutilstest.py: 143 warnings
ropetest/refactor/inlinetest.py: 95 warnings
ropetest/refactor/movetest.py: 74 warnings
ropetest/refactor/multiprojecttest.py: 8 warnings
ropetest/refactor/renametest.py: 89 warnings
ropetest/refactor/restructuretest.py: 23 warnings
ropetest/refactor/similarfindertest.py: 32 warnings
ropetest/refactor/usefunctiontest.py: 12 warnings
/home/tkloczko/rpmbuild/BUILD/rope-1.11.0/rope/base/project.py:229: DeprecationWarning: Delete once deprecated functions are gone
self._init_source_folders()
ropetest/advanced_oi_test.py: 139 warnings
ropetest/projecttest.py: 5 warnings
ropetest/runmodtest.py: 46 warnings
ropetest/refactor/multiprojecttest.py: 4 warnings
/home/tkloczko/rpmbuild/BUILD/rope-1.11.0/rope/base/libutils.py:34: DeprecationWarning: relative is deprecated
return relative(project.address, path)
ropetest/contrib/autoimporttest.py: 26 warnings
ropetest/contrib/autoimport/autoimporttest.py: 13 warnings
/home/tkloczko/rpmbuild/BUILD/rope-1.11.0/rope/contrib/autoimport/sqlite.py:124: DeprecationWarning: The default value for `AutoImport(memory)` argument will change to use an on-disk database by default in the future. If you want to use an in-memory database, you need to pass `AutoImport(memory=True)` explicitly.
warnings.warn(
ropetest/refactor/__init__.py::TaskHandleTest::test_getting_job_name
/home/tkloczko/rpmbuild/BUILD/rope-1.11.0/ropetest/refactor/__init__.py:1125: DeprecationWarning: Just use JobSet.name attribute/property instead
self.assertEqual("test job set", jobs.get_name())
ropetest/refactor/__init__.py::TaskHandleTest::test_getting_job_name
/home/tkloczko/rpmbuild/BUILD/rope-1.11.0/ropetest/refactor/__init__.py:1126: DeprecationWarning: Just use JobSet.job_name attribute/property instead
self.assertEqual(None, jobs.get_active_job_name())
ropetest/refactor/__init__.py::TaskHandleTest::test_getting_job_name
/home/tkloczko/rpmbuild/BUILD/rope-1.11.0/ropetest/refactor/__init__.py:1129: DeprecationWarning: Just use JobSet.name attribute/property instead
self.assertEqual("test job set", jobs.get_name())
ropetest/refactor/__init__.py::TaskHandleTest::test_getting_job_name
/home/tkloczko/rpmbuild/BUILD/rope-1.11.0/ropetest/refactor/__init__.py:1131: DeprecationWarning: Just use JobSet.job_name attribute/property instead
self.assertEqual("job1", jobs.get_active_job_name())
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] ropetest/refactor/extracttest.py:1812: This test requires version of Python higher than 3.11
SKIPPED [1] ropetest/refactor/extracttest.py:3393: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/extracttest.py:3417: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/extracttest.py:3438: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/extracttest.py:2457: This test requires version of Python lower than 3.8
SKIPPED [1] ropetest/refactor/patchedasttest.py:435: This test requires version of Python lower than 3.5
SKIPPED [1] ropetest/refactor/patchedasttest.py:422: This test requires version of Python lower than 3.5
SKIPPED [1] ropetest/refactor/patchedasttest.py:405: This test requires version of Python lower than 3.5
SKIPPED [1] ropetest/refactor/patchedasttest.py:1304: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/patchedasttest.py:1290: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/patchedasttest.py:1373: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/patchedasttest.py:1387: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/patchedasttest.py:1336: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/patchedasttest.py:1457: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/patchedasttest.py:1425: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/patchedasttest.py:1405: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/patchedasttest.py:1484: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/patchedasttest.py:1359: This test requires version of Python higher than 3.10
SKIPPED [1] ropetest/refactor/patchedasttest.py:1236: This test requires version of Python lower than 3.5
SKIPPED [1] ropetest/refactor/patchedasttest.py:1216: This test requires version of Python lower than 3.5
SKIPPED [1] ropetest/refactor/patchedasttest.py:1226: This test requires version of Python lower than 3.5
SKIPPED [1] ropetest/refactor/patchedasttest.py:1157: This test requires version of Python higher than 3.11
SKIPPED [1] ropetest/refactor/suitestest.py:204: This test requires version of Python higher than 3.10
XFAIL ropetest/type_hinting_test.py::DocstringNoneAssignmentHintingTest::test_hint_or - reason: failing configuration (but should work)
XFAIL ropetest/type_hinting_test.py::DocstringNotImplementedAssignmentHintingTest::test_hint_or - reason: failing configuration (but should work)
XFAIL ropetest/type_hinting_test.py::PEP0484CommentNoneAssignmentHintingTest::test_hint_or - reason: failing configuration (but should work)
XFAIL ropetest/type_hinting_test.py::PEP0484CommentNotImplementedAssignmentHintingTest::test_hint_or - reason: failing configuration (but should work)
XFAIL ropetest/refactor/extracttest.py::ExtractMethodTest::test_extract_method_f_string_false_format_value_in_regular_string - reason:
FAILED ropetest/contrib/autoimporttest.py::AutoImportTest::test_search_submodule
==== 1 failed, 2031 passed, 23 skipped, 5 xfailed, 1867 warnings in 19.42s =====
Here is list of installed modules in build env
Package Version
----------------------------- -------
alabaster 0.7.13
Babel 2.13.1
build 1.0.3
charset-normalizer 3.3.2
cppclean 0.13
distro 1.8.0
docutils 0.20.1
exceptiongroup 1.1.3
gpg 1.23.0
idna 3.4
imagesize 1.4.1
importlib-metadata 6.8.0
iniconfig 2.0.0
installer 0.7.0
Jinja2 3.1.2
MarkupSafe 2.1.3
packaging 23.2
platformdirs 3.11.0
pluggy 1.3.0
Pygments 2.16.1
pyproject_hooks 1.0.0
pytest 7.4.3
python-dateutil 2.8.2
pytoolconfig 1.2.6
pytz 2023.3
requests 2.31.0
setuptools 68.2.2
six 1.16.0
snowballstemmer 2.2.0
Sphinx 7.1.2
sphinx-autodoc-typehints 1.24.1
sphinx-rtd-theme 1.2.2
sphinxcontrib-applehelp 1.0.4
sphinxcontrib-devhelp 1.0.5
sphinxcontrib-htmlhelp 2.0.4
sphinxcontrib-jquery 4.1
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.9
tabulate 0.9.0
tomli 2.0.1
urllib3 1.26.18
wheel 0.41.3
zipp 3.17.0
In pytest output is possible to see as well some DeprecationWarning
wanings.
Hi @kloczek, apologies I missed this ticket earlier. This is effectively duplicate of #478.
This is a false positive. This particular test case is not very well written and has often been failing in certain run configurations because it makes some assumptions about the test run environment. For this particular case though, I think you can bypass the issue by installing build
into the environment where rope is running the test.
The proper fix to this would be to remove the dependency on build
being installed when running the test. This fix can be achieved by creating a dummy sample package instead of abusing build
for this purpose, but this is quite tricky to get right and I hadn't had the time to fix it yet.
Closing as duplicate.