pytest INTERNALERROR IndexError in get_source on Python 3.10

Open
#2,598 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Stale
Tech stack
python
Domain
testing-qa

Research direction

Start by reproducing the report with Python 3.10 using tox -e py310 -r, then inspect the pytest internal-error traceback and the get_source failure mentioned in the title. Done means the setuptools test suite runs successfully on Python 3.10 on the reported environments.

Written by the indexing model from the issue text.

Description

bug Needs Triage
setuptools version

main

Python version

3.10.0a6

OS

macOS, Linux

Additional environment information

No response

Description

In https://github.com/pypa/setuptools/issues/2558#issuecomment-773388604, @hroncok reports an issue where the tests fail on Python 3.10 with a pytest internal failure.

Expected behavior

Tests should run on Python 3.10.

How to Reproduce

With Python 3.10, run tox.

Output
setuptools main $ tox -e py310 -r
py310 recreate: /Users/jaraco/code/public/pypa/setuptools/.tox/py310
py310 develop-inst: /Users/jaraco/code/public/pypa/setuptools
py310 installed: alabaster==0.7.12,apipkg==1.5,appdirs==1.4.4,attrs==20.3.0,Babel==2.9.0,bootstrap==1.0,certifi==2020.12.5,chardet==4.0.0,contextlib2==0.6.0.post1,coverage==5.5,distlib==0.3.1,docutils==0.16,execnet==1.8.0,filelock==3.0.12,flake8==3.8.4,flake8-2020==1.6.0,idna==2.10,imagesize==1.2.0,iniconfig==1.1.1,jaraco.context==4.0.0,jaraco.envs==2.1.0,jaraco.functools==3.2.1,jaraco.path==3.3.1,Jinja2==2.11.3,MarkupSafe==1.1.1,mccabe==0.6.1,mock==4.0.3,more-itertools==8.7.0,packaging==20.9,path==15.1.2,path.py==12.5.0,Paver==1.3.4,pep517==0.9.1,pluggy==0.13.1,py==1.10.0,pycodestyle==2.6.0,pyflakes==2.2.0,Pygments==2.8.1,pyobjc==7.1,pyobjc-core==7.1,pyobjc-framework-Accessibility==7.1,pyobjc-framework-Accounts==7.1,pyobjc-framework-AddressBook==7.1,pyobjc-framework-AdServices==7.1,pyobjc-framework-AdSupport==7.1,pyobjc-framework-AppleScriptKit==7.1,pyobjc-framework-AppleScriptObjC==7.1,pyobjc-framework-ApplicationServices==7.1,pyobjc-framework-AppTrackingTransparency==7.1,pyobjc-framework-AuthenticationServices==7.1,pyobjc-framework-AutomaticAssessmentConfiguration==7.1,pyobjc-framework-Automator==7.1,pyobjc-framework-AVFoundation==7.1,pyobjc-framework-AVKit==7.1,pyobjc-framework-BusinessChat==7.1,pyobjc-framework-CalendarStore==7.1,pyobjc-framework-CallKit==7.1,pyobjc-framework-CFNetwork==7.1,pyobjc-framework-ClassKit==7.1,pyobjc-framework-CloudKit==7.1,pyobjc-framework-Cocoa==7.1,pyobjc-framework-Collaboration==7.1,pyobjc-framework-ColorSync==7.1,pyobjc-framework-Contacts==7.1,pyobjc-framework-ContactsUI==7.1,pyobjc-framework-CoreAudio==7.1,pyobjc-framework-CoreAudioKit==7.1,pyobjc-framework-CoreBluetooth==7.1,pyobjc-framework-CoreData==7.1,pyobjc-framework-CoreHaptics==7.1,pyobjc-framework-CoreLocation==7.1,pyobjc-framework-CoreMedia==7.1,pyobjc-framework-CoreMediaIO==7.1,pyobjc-framework-CoreMIDI==7.1,pyobjc-framework-CoreML==7.1,pyobjc-framework-CoreMotion==7.1,pyobjc-framework-CoreServices==7.1,pyobjc-framework-CoreSpotlight==7.1,pyobjc-framework-CoreText==7.1,pyobjc-framework-CoreWLAN==7.1,pyobjc-framework-CryptoTokenKit==7.1,pyobjc-framework-DeviceCheck==7.1,pyobjc-framework-DictionaryServices==7.1,pyobjc-framework-DiscRecording==7.1,pyobjc-framework-DiscRecordingUI==7.1,pyobjc-framework-DiskArbitration==7.1,pyobjc-framework-DVDPlayback==7.1,pyobjc-framework-EventKit==7.1,pyobjc-framework-ExceptionHandling==7.1,pyobjc-framework-ExecutionPolicy==7.1,pyobjc-framework-ExternalAccessory==7.1,pyobjc-framework-FileProvider==7.1,pyobjc-framework-FileProviderUI==7.1,pyobjc-framework-FinderSync==7.1,pyobjc-framework-FSEvents==7.1,pyobjc-framework-GameCenter==7.1,pyobjc-framework-GameController==7.1,pyobjc-framework-GameKit==7.1,pyobjc-framework-GameplayKit==7.1,pyobjc-framework-ImageCaptureCore==7.1,pyobjc-framework-IMServicePlugIn==7.1,pyobjc-framework-InputMethodKit==7.1,pyobjc-framework-InstallerPlugins==7.1,pyobjc-framework-InstantMessage==7.1,pyobjc-framework-Intents==7.1,pyobjc-framework-IOSurface==7.1,pyobjc-framework-iTunesLibrary==7.1,pyobjc-framework-KernelManagement==7.1,pyobjc-framework-LatentSemanticMapping==7.1,pyobjc-framework-LaunchServices==7.1,pyobjc-framework-libdispatch==7.1,pyobjc-framework-LinkPresentation==7.1,pyobjc-framework-LocalAuthentication==7.1,pyobjc-framework-MapKit==7.1,pyobjc-framework-MediaAccessibility==7.1,pyobjc-framework-MediaLibrary==7.1,pyobjc-framework-MediaPlayer==7.1,pyobjc-framework-MediaToolbox==7.1,pyobjc-framework-Metal==7.1,pyobjc-framework-MetalKit==7.1,pyobjc-framework-MetalPerformanceShaders==7.1,pyobjc-framework-MetalPerformanceShadersGraph==7.1,pyobjc-framework-MLCompute==7.1,pyobjc-framework-ModelIO==7.1,pyobjc-framework-MultipeerConnectivity==7.1,pyobjc-framework-NaturalLanguage==7.1,pyobjc-framework-NetFS==7.1,pyobjc-framework-Network==7.1,pyobjc-framework-NetworkExtension==7.1,pyobjc-framework-NotificationCenter==7.1,pyobjc-framework-OpenDirectory==7.1,pyobjc-framework-OSAKit==7.1,pyobjc-framework-OSLog==7.1,pyobjc-framework-PassKit==7.1,pyobjc-framework-PencilKit==7.1,pyobjc-framework-Photos==7.1,pyobjc-framework-PhotosUI==7.1,pyobjc-framework-PreferencePanes==7.1,pyobjc-framework-PushKit==7.1,pyobjc-framework-Quartz==7.1,pyobjc-framework-QuickLookThumbnailing==7.1,pyobjc-framework-ReplayKit==7.1,pyobjc-framework-SafariServices==7.1,pyobjc-framework-SceneKit==7.1,pyobjc-framework-ScreenSaver==7.1,pyobjc-framework-ScreenTime==7.1,pyobjc-framework-ScriptingBridge==7.1,pyobjc-framework-SearchKit==7.1,pyobjc-framework-Security==7.1,pyobjc-framework-SecurityFoundation==7.1,pyobjc-framework-SecurityInterface==7.1,pyobjc-framework-ServiceManagement==7.1,pyobjc-framework-Social==7.1,pyobjc-framework-SoundAnalysis==7.1,pyobjc-framework-Speech==7.1,pyobjc-framework-SpriteKit==7.1,pyobjc-framework-StoreKit==7.1,pyobjc-framework-SyncServices==7.1,pyobjc-framework-SystemConfiguration==7.1,pyobjc-framework-SystemExtensions==7.1,pyobjc-framework-UniformTypeIdentifiers==7.1,pyobjc-framework-UserNotifications==7.1,pyobjc-framework-UserNotificationsUI==7.1,pyobjc-framework-VideoSubscriberAccount==7.1,pyobjc-framework-VideoToolbox==7.1,pyobjc-framework-Virtualization==7.1,pyobjc-framework-Vision==7.1,pyobjc-framework-WebKit==7.1,pyparsing==2.4.7,pytest==6.2.2,pytest-checkdocs==2.4.0,pytest-cov==2.11.1,pytest-enabler==1.2.0,pytest-fixture-config==1.7.0,pytest-flake8==1.0.7,pytest-forked==1.3.0,pytest-shutil==1.7.0,pytest-virtualenv==1.7.0,pytest-xdist==2.2.1,pytz==2021.1,requests==2.25.1,singledispatch==3.6.1,six==1.15.0,snowballstemmer==2.1.0,Sphinx==3.5.2,sphinxcontrib-applehelp==1.0.2,sphinxcontrib-devhelp==1.0.2,sphinxcontrib-htmlhelp==1.0.3,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.3,sphinxcontrib-serializinghtml==1.1.4,termcolor==1.1.0,toml==0.10.2,tox==3.23.0,urllib3==1.26.3,virtualenv==20.4.2
py310 run-test-pre: PYTHONHASHSEED='3107984921'
py310 run-test: commands[0] | pytest
===================================================================================== test session starts =====================================================================================
platform darwin -- Python 3.10.0a6, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
cachedir: .tox/py310/.pytest_cache
rootdir: /Users/jaraco/code/public/pypa/setuptools, configfile: pytest.ini
plugins: checkdocs-2.4.0, flake8-1.0.7, enabler-1.2.0, shutil-1.7.0, cov-2.11.1, xdist-2.2.1, virtualenv-1.7.0, forked-1.3.0
gw0 [808] / gw1 [808] / gw2 [808] / gw3 [808] / gw4 [808] / gw5 [808] / gw6 [808] / gw7 [808]                                                                                                 
....s........................s.............................................................................................................X......s.........................F.......... [ 22%]
........................................................................s...........................................................................ss................................. [ 45%]
..................................................................INTERNALERROR> def worker_internal_error(self, node, formatted_error):
INTERNALERROR>         """
INTERNALERROR>         pytest_internalerror() was called on the worker.
INTERNALERROR>     
INTERNALERROR>         pytest_internalerror() arguments are an excinfo and an excrepr, which can't
INTERNALERROR>         be serialized, so we go with a poor man's solution of raising an exception
INTERNALERROR>         here ourselves using the formatted message.
INTERNALERROR>         """
INTERNALERROR>         self._active_nodes.remove(node)
INTERNALERROR>         try:
INTERNALERROR> >           assert False, formatted_error
INTERNALERROR> E           AssertionError: Traceback (most recent call last):
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/main.py", line 269, in wrap_session
INTERNALERROR> E                 session.exitstatus = doit(config, session) or 0
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/main.py", line 323, in _main
INTERNALERROR> E                 config.hook.pytest_runtestloop(session=session)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR> E                 return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR> E                 return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR> E                 self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR> E                 return outcome.get_result()
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR> E                 raise ex[1].with_traceback(ex[2])
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR> E                 res = hook_impl.function(*args)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/xdist/remote.py", line 72, in pytest_runtestloop
INTERNALERROR> E                 self.run_one_test(torun)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/xdist/remote.py", line 89, in run_one_test
INTERNALERROR> E                 self.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR> E                 return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR> E                 return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR> E                 self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR> E                 return outcome.get_result()
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR> E                 raise ex[1].with_traceback(ex[2])
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR> E                 res = hook_impl.function(*args)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/runner.py", line 109, in pytest_runtest_protocol
INTERNALERROR> E                 runtestprotocol(item, nextitem=nextitem)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/runner.py", line 126, in runtestprotocol
INTERNALERROR> E                 reports.append(call_and_report(item, "call", log))
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/runner.py", line 217, in call_and_report
INTERNALERROR> E                 report: TestReport = hook.pytest_runtest_makereport(item=item, call=call)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR> E                 return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR> E                 return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR> E                 self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 203, in _multicall
INTERNALERROR> E                 gen.send(outcome)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/skipping.py", line 272, in pytest_runtest_makereport
INTERNALERROR> E                 rep = outcome.get_result()
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR> E                 raise ex[1].with_traceback(ex[2])
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR> E                 res = hook_impl.function(*args)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/runner.py", line 337, in pytest_runtest_makereport
INTERNALERROR> E                 return TestReport.from_item_and_call(item, call)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/reports.py", line 322, in from_item_and_call
INTERNALERROR> E                 longrepr = item.repr_failure(excinfo)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/python.py", line 1677, in repr_failure
INTERNALERROR> E                 return self._repr_failure_py(excinfo, style=style)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/nodes.py", line 398, in _repr_failure_py
INTERNALERROR> E                 return excinfo.getrepr(
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/_code/code.py", line 648, in getrepr
INTERNALERROR> E                 return fmt.repr_excinfo(self)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/_code/code.py", line 905, in repr_excinfo
INTERNALERROR> E                 reprtraceback = self.repr_traceback(excinfo_)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/_code/code.py", line 846, in repr_traceback
INTERNALERROR> E                 reprentry = self.repr_traceback_entry(entry, einfo)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/_code/code.py", line 798, in repr_traceback_entry
INTERNALERROR> E                 s = self.get_source(source, line_index, excinfo, short=short)
INTERNALERROR> E               File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/_code/code.py", line 727, in get_source
INTERNALERROR> E                 lines.append(space_prefix + source.lines[line_index].strip())
INTERNALERROR> E             IndexError: list index out of range
INTERNALERROR> E           assert False
INTERNALERROR> 
INTERNALERROR> .tox/py310/lib/python3.10/site-packages/xdist/dsession.py:187: AssertionError
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/main.py", line 269, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/_pytest/main.py", line 323, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/xdist/dsession.py", line 112, in pytest_runtestloop
INTERNALERROR>     self.loop_once()
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/xdist/dsession.py", line 135, in loop_once
INTERNALERROR>     call(**kwargs)
INTERNALERROR>   File "/Users/jaraco/code/public/pypa/setuptools/.tox/py310/lib/python3.10/site-packages/xdist/dsession.py", line 174, in worker_workerfinished
INTERNALERROR>     assert not crashitem, (crashitem, node)
INTERNALERROR> AssertionError: ('setuptools/tests/test_easy_install.py::TestSetupRequires::test_setup_requires_with_attr_version[use_setup_cfg3]', <WorkerController gw0>)
INTERNALERROR> assert not 'setuptools/tests/test_easy_install.py::TestSetupRequires::test_setup_requires_with_attr_version[use_setup_cfg3]'

=============================================================== 1 failed, 424 passed, 7 skipped, 1 xpassed, 8 errors in 57.55s ================================================================
ERROR: InvocationError for command /Users/jaraco/code/public/pypa/setuptools/.tox/py310/bin/pytest (exited with code 3)
___________________________________________________________________________________________ summary ___________________________________________________________________________________________
ERROR:   py310: commands failed
Code of Conduct
  • I agree to follow the PSF Code of Conduct
Dominant language
Python
Stars
2.9k
Forks
1.4k
Avg merge
1d 1h
Merged PRs (30d)
1

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from pypa/setuptools

All issues in pypa/setuptools

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.