New issue 176: tox doesn't install the package being tested https://bitbucket.org/hpk42/tox/issue/176/tox-doesnt-install-the-package-being
Mikhail Korobov: Hi, Tox doesn't install the package being tested for me, seemingly because it thinks it is already installed. The workaround is to add `python setup.py install` to commands, but this is suboptimal (dependencies can be processed twice, wheels are not installed, and this is not how tox used to work). I'm using tox 1.7.1, virtualenv 1.11.6, pip 1.5.6 and setuptools 4.0.1. The OS is Mac OS X 10.9.3; the issue is reproducable with both Python 2.7.5 and python 3.4.1 virtualenvs (Pythons are installed using homebrew). I tried to downgrade to virtualenv 1.11.2 and run tox -r -e py27, but it didn't help. Downgrading to tox 1.6.1 also didn't help. After running tox own tests, `.tox/py27/log/py27-2.log` looks suspicious: ``` actionid=py27 msg=installpkg cmdargs=[local('/Users/kmike/svn/tox/.tox/py27/bin/pip'), 'install', '--pre', '/Users/kmike/svn/tox/.tox/dist/tox-1.7.2.dev1.zip'] env={'PYTHONIOENCODING': 'utf_8', 'PROJECT_HOME': '/Users/kmike/dev', 'VCPROMPT_FORMAT': '[%b%m%u]', 'TERM_PROGRAM_VERSION': '326', 'TMPDIR': '/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/', 'LOGNAME': 'kmike', 'USER': 'kmike', 'HOME': '/Users/kmike', 'PATH': '/Users/kmike/svn/tox/.tox/py27/bin:/Users/kmike/envs/scraping/bin:/Users/kmike/.pythonbrew/bin:/Users/kmike/.pythonbrew/bin:/usr/local/bin:/usr/local/share/python:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin', 'PS1': '(scraping)\\[$grey\\]\\u \\[$reset\\]\\w \\[$green\\]$(vcprompt)\\[$reset\\]> ', 'DISPLAY': '/tmp/launch-AUcqwK/org.macosforge.xquartz:0', 'TERM_PROGRAM': 'Apple_Terminal', 'LANG': 'en_US.UTF-8', 'TERM': 'xterm-256color', 'SHELL': '/bin/bash', 'SHLVL': '1', 'SECURITYSESSIONID': '186a4', 'TEAMLOCAL_DEBUG': '1', 'SHIFTGIG_DEBUG': '1', 'PYTHONHASHSEED': '4220916990', 'EDITOR': 'nano', 'PYTHONPATH': '', 'WORKON_HOME': '/Users/kmike/envs', 'TERM_SESSION_ID': '19E5 3C2B-013A-429B-8867-A9E0A35EE1E7', 'CC': 'clang', 'FFLAGS': '-ff2c', 'SSH_AUTH_SOCK': '/tmp/launch-Jsdoay/Listeners', 'FAB_COMPLETION_CACHE_TASKS': 'true', 'Apple_PubSub_Socket_Render': '/tmp/launch-r2J2kt/Render', '_': '/Users/kmike/envs/scraping/bin/tox', 'VIRTUALENVWRAPPER_PROJECT_FILENAME': '.project', 'VIRTUAL_ENV': '/Users/kmike/envs/scraping', 'VIRTUALENVWRAPPER_HOOK_DIR': '/Users/kmike/envs', 'CXX': 'clang++', 'OLDPWD': '/Users/kmike/svn', 'FAB_COMPLETION_CACHED_TASKS_FILENAME': '.fab_tasks~', '__CF_USER_TEXT_ENCODING': '0x1F7:0:0', 'PWD': '/Users/kmike/svn/tox', 'PIP_DOWNLOAD_CACHE': '/Users/kmike/.pip/download', '__CHECKFIX1436934': '1'} Unpacking ./.tox/dist/tox-1.7.2.dev1.zip Running setup.py (path:/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pip-RHLGrc-build/setup.py) egg_info for package from file:///Users/kmike/svn/tox/.tox/dist/tox-1.7.2.dev1.zip Requirement already satisfied (use --upgrade to upgrade): tox==1.7.2.dev1 from file:///Users/kmike/svn/tox/.tox/dist/tox-1.7.2.dev1.zip in /Users/kmike/svn/tox Downloading/unpacking virtualenv>=1.11.2 (from tox==1.7.2.dev1) Using download cache from /Users/kmike/.pip/download/https%3A%2F%2Fpypi.python.org%2Fpackages%2Fpy2.py3%2Fv%2Fvirtualenv%2Fvirtualenv-1.11.6-py2.py3-none-any.whl Requirement already satisfied (use --upgrade to upgrade): py>=1.4.17 in ./.tox/py27/lib/python2.7/site-packages (from tox==1.7.2.dev1) Installing collected packages: virtualenv Successfully installed virtualenv Cleaning up... ``` and the tests fail: ``` > tox -e py27 GLOB sdist-make: /Users/kmike/svn/tox/setup.py py27 recreate: /Users/kmike/svn/tox/.tox/py27 py27 installdeps: pytest>=2.3.5 py27 inst: /Users/kmike/svn/tox/.tox/dist/tox-1.7.2.dev1.zip py27 runtests: PYTHONHASHSEED='4220916990' py27 runtests: commands[0] | py.test --junitxml=/Users/kmike/svn/tox/.tox/py27/log/junit-py27.xml ===================================================================================================================== test session starts ===================================================================================================================== platform darwin -- Python 2.7.5 -- py-1.4.20 -- pytest-2.5.2 tox comes from: '/Users/kmike/svn/tox/tox/__init__.pyc' collected 208 items tests/test_config.py .........................................................................................F................s tests/test_interpreters.py s........ tests/test_quickstart.py ............. tests/test_result.py ... tests/test_venv.py .................s.................... tests/test_z_cmdline.py .........F..F..........F.............. ========================================================================================================================== FAILURES =========================================================================================================================== _______________________________________________________________________________________________________________ TestCmdInvocation.test_version ________________________________________________________________________________________________________________ self = <test_config.TestCmdInvocation instance at 0x10cd5a248>, cmd = <tox._pytestplugin.Cmd instance at 0x10cd5a440> def test_version(self, cmd): result = cmd.run("tox", "--version") assert not result.ret stdout = result.stdout.str() > assert tox.__version__ in stdout E assert '1.7.2.dev1' in '1.7.1 imported from /Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/__init__.pyc' E + where '1.7.2.dev1' = tox.__version__ /Users/kmike/svn/tox/tests/test_config.py:1159: AssertionError ----------------------------------------------------------------------------------------------------------------------- Captured stdout ----------------------------------------------------------------------------------------------------------------------- /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_defaults_changed_dir0/abc$ tox --version 1.7.1 imported from /Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/__init__.pyc ____________________________________________________________________________________________________________ test_run_custom_install_command_error ____________________________________________________________________________________________________________ cmd = <tox._pytestplugin.Cmd instance at 0x10cec83f8>, initproj = <function initproj at 0x10ced37d0> def test_run_custom_install_command_error(cmd, initproj): initproj("interp123-0.5", filedefs={ 'tox.ini': ''' [testenv] install_command=./tox.ini {opts} {packages} ''' }) result = cmd.run("tox") result.stdout.fnmatch_lines([ > "ERROR: invocation failed, args: ['*/tox.ini*", ]) E assert "ERROR: invoc... ['*/tox.ini*" == 'python inst: ...rp123-0.5.zip' E - ERROR: invocation failed, args: ['*/tox.ini* E + python inst: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_run_custom_install_comman1/interp123/.tox/dist/interp123-0.5.zip /Users/kmike/svn/tox/tests/test_z_cmdline.py:203: AssertionError ----------------------------------------------------------------------------------------------------------------------- Captured stdout ----------------------------------------------------------------------------------------------------------------------- created project in /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_run_custom_install_comman1/interp123 /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_run_custom_install_comman1/interp123$ tox GLOB sdist-make: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_run_custom_install_comman1/interp123/setup.py python create: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_run_custom_install_comman1/interp123/.tox/python python inst: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_run_custom_install_comman1/interp123/.tox/dist/interp123-0.5.zip nomatch: "ERROR: invocation failed, args: ['*/tox.ini*" and: u'GLOB sdist-make: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_run_custom_install_comman1/interp123/setup.py' and: u'python create: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_run_custom_install_comman1/interp123/.tox/python' and: u'python inst: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_run_custom_install_comman1/interp123/.tox/dist/interp123-0.5.zip' ----------------------------------------------------------------------------------------------------------------------- Captured stderr ----------------------------------------------------------------------------------------------------------------------- Traceback (most recent call last): File "/Users/kmike/envs/scraping/bin/tox", line 9, in <module> load_entry_point('tox==1.7.1', 'console_scripts', 'tox')() File "/Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/_cmdline.py", line 26, in main retcode = Session(config).runcommand() File "/Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/_cmdline.py", line 303, in runcommand return self.subcommand_test() File "/Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/_cmdline.py", line 446, in subcommand_test self.installpkg(venv, sdist_path) File "/Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/_cmdline.py", line 394, in installpkg venv.installpkg(sdist_path, action) File "/Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/_venv.py", line 245, in installpkg self._install([sdistpath], extraopts=extraopts, action=action) File "/Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/_venv.py", line 318, in _install action=action, extraenv=extraenv) File "/Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/_venv.py", line 285, in run_install_command extraenv=env, action=action) File "/Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/_venv.py", line 367, in _pcall return action.popen(args, cwd=cwd, env=env, redirect=redirect) File "/Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/_cmdline.py", line 97, in popen stdout=f, stderr=STDOUT) File "/Users/kmike/envs/scraping/lib/python2.7/site-packages/tox/_cmdline.py", line 155, in _popen stdout=stdout, stderr=stderr, env=env) File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 711, in __init__ errread, errwrite) File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1308, in _execute_child raise child_exception OSError: [Errno 13] Permission denied ________________________________________________________________________________________________________________ test_skip_unknown_interpreter ________________________________________________________________________________________________________________ cmd = <tox._pytestplugin.Cmd instance at 0x10cd5c050>, initproj = <function initproj at 0x10ced3aa0> def test_skip_unknown_interpreter(cmd, initproj): initproj("interp123-0.5", filedefs={ 'tests': {'test_hello.py': "def test_hello(): pass"}, 'tox.ini': ''' [testenv:python] basepython=xyz_unknown_interpreter [testenv] changedir=tests ''' }) result = cmd.run("tox", "--skip-missing-interpreters") > assert not result.ret E assert not 2 E + where 2 = <tox._pytestplugin.RunResult instance at 0x10cec8f80>.ret /Users/kmike/svn/tox/tests/test_z_cmdline.py:256: AssertionError ----------------------------------------------------------------------------------------------------------------------- Captured stdout ----------------------------------------------------------------------------------------------------------------------- created project in /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_skip_unknown_interpreter0/interp123 /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_skip_unknown_interpreter0/interp123$ tox --skip-missing-interpreters ----------------------------------------------------------------------------------------------------------------------- Captured stderr ----------------------------------------------------------------------------------------------------------------------- usage: tox [-h] [--version] [-v] [--showconfig] [-l] [-c CONFIGFILE] [-e envlist] [--notest] [--sdistonly] [--installpkg PATH] [--develop] [--set-home] [-i URL] [-r] [--result-json PATH] [--hashseed SEED] [--force-dep REQ] [--sitepackages] [args [args ...]] tox: error: unrecognized arguments: --skip-missing-interpreters ____________________________________________________________________________________________________________________ TestToxRun.test_json _____________________________________________________________________________________________________________________ self = <test_z_cmdline.TestToxRun instance at 0x10cc923f8>, cmd = <tox._pytestplugin.Cmd instance at 0x10cd5a2d8>, example123 = None def test_json(self, cmd, example123): # see that tests can also fail and retcode is correct testfile = py.path.local("tests").join("test_hello.py") assert testfile.check() testfile.write("def test_fail(): assert 0") jsonpath = cmd.tmpdir.join("res.json") result = cmd.run("tox", "--result-json", jsonpath) assert result.ret == 1 data = json.load(jsonpath.open("r")) > verify_json_report_format(data) /Users/kmike/svn/tox/tests/test_z_cmdline.py:445: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ data = {'host': 'imac.local', 'installpkg': {'basename': 'example123-0.5.zip', 'md5': 'b9c178528f5fd913a0a71b8cac044fbc', 'sh...: 'a48f1c0019c59af0e15abc28ce267a071f1cc1b5b2b28ec420724fe1370c38e3'}, 'platform': 'darwin', 'reportversion': '1', ...} testenvs = True def verify_json_report_format(data, testenvs=True): assert data["reportversion"] == "1" > assert data["toxversion"] == tox.__version__ E assert '1.7.1' == '1.7.2.dev1' E - 1.7.1 E + 1.7.2.dev1 /Users/kmike/svn/tox/tests/test_z_cmdline.py:672: AssertionError ----------------------------------------------------------------------------------------------------------------------- Captured stdout ----------------------------------------------------------------------------------------------------------------------- created project in /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123 /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123$ tox --result-json /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/res.json GLOB sdist-make: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/setup.py python create: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/.tox/python python installdeps: pytest python inst: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/.tox/dist/example123-0.5.zip python runtests: PYTHONHASHSEED='322203576' python runtests: commands[0] | py.test --basetemp=/private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/.tox/python/tmp --junitxml=junit-python.xml ERROR: invocation failed, logfile: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/.tox/python/log/python-3.log ERROR: actionid=python msg=runtests cmdargs=[local('/private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/.tox/python/bin/py.test'), '--basetemp=/private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/.tox/python/tmp', '--junitxml=junit-python.xml'] env={'DISPLAY': '/tmp/launch-AUcqwK/org.macosforge.xquartz:0', 'SHLVL': '1', 'TEAMLOCAL_DEBUG': '1', 'CC': 'clang', 'TERM_PROGRAM_VERSION': '326', 'PS1': '(scraping)\\[$grey\\]\\u \\[$reset\\]\\w \\[$green\\]$(vcprompt)\\[$reset\\]> ', 'VIRTUALENVWRAPPER_HOOK_DIR': '/Users/kmike/envs', '__CF_USER_TEXT_ENCODING': '0x1F7:0:0', 'CXX': 'clang++', 'LOGNAME': 'kmike', 'PYTHONHASHSEED': '322203576', 'TERM': 'xterm-256color', 'EDITOR': 'nano', 'TMPDIR': '/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/', 'VIRTUALENVWRAPPER_PROJECT_FILENAME': '.project', 'VIRTUAL_ENV': '/Users/kmike/envs/scraping', 'HOME': '/Users/kmike', 'PYTHONPATH': '/private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123', 'FFLAGS': '-ff2c', 'TERM_PROGRAM': 'Apple_Terminal', 'SECURITYSESSIONID': '186a4', 'LANG': 'en_US.UTF-8', '__CHECKFIX1436934': '1', 'OLDPWD': '/Users/kmike/svn', 'Apple_PubSub_Socket_Render': '/tmp/launch-r2J2kt/Render', 'PIP_DOWNLOAD_CACHE': '/Users/kmike/.pip /download', 'FAB_COMPLETION_CACHED_TASKS_FILENAME': '.fab_tasks~', 'PATH': '/private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/.tox/python/bin:/Users/kmike/svn/tox/.tox/py27/bin:/Users/kmike/envs/scraping/bin:/Users/kmike/.pythonbrew/bin:/Users/kmike/.pythonbrew/bin:/usr/local/bin:/usr/local/share/python:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin', 'FAB_COMPLETION_CACHE_TASKS': 'true', 'PROJECT_HOME': '/Users/kmike/dev', 'PWD': '/Users/kmike/svn/tox', 'SHELL': '/bin/bash', 'USER': 'kmike', 'TERM_SESSION_ID': '19E53C2B-013A-429B-8867-A9E0A35EE1E7', 'WORKON_HOME': '/Users/kmike/envs', 'VCPROMPT_FORMAT': '[%b%m%u]', 'SHIFTGIG_DEBUG': '1', '_': '/Users/kmike/envs/scraping/bin/tox', 'SSH_AUTH_SOCK': '/tmp/launch-Jsdoay/Listeners'} ============================= test session starts ============================== platform darwin -- Python 2.7.5 -- py-1.4.20 -- pytest-2.5.2 collected 1 items test_hello.py F =================================== FAILURES =================================== __________________________________ test_fail ___________________________________ > def test_fail(): assert 0 E assert 0 test_hello.py:1: AssertionError generated xml file: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/tests/junit-python.xml =========================== 1 failed in 0.02 seconds =========================== ERROR: InvocationError: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/.tox/python/bin/py.test --basetemp=/private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/.tox/python/tmp --junitxml=junit-python.xml (see /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/example123/.tox/python/log/python-3.log) ___________________________________ summary ____________________________________ ERROR: python: commands failed wrote json report at: /private/var/folders/_5/cbsg50991szfp1r9nwxpx8580000gq/T/pytest-129/test_json0/res.json -------------------------------------------------------------------------------------------- generated xml file: /Users/kmike/svn/tox/.tox/py27/log/junit-py27.xml -------------------------------------------------------------------------------------------- =================================================================================================================== short test summary info =================================================================================================================== SKIP [2] /Users/kmike/svn/tox/.tox/py27/lib/python2.7/site-packages/_pytest/skipping.py:132: condition: sys.platform != 'win32' SKIP [1] /Users/kmike/svn/tox/.tox/py27/lib/python2.7/site-packages/_pytest/skipping.py:132: condition: not sys.platform.startswith('linux') FAIL tests/test_config.py::TestCmdInvocation::()::test_version FAIL tests/test_z_cmdline.py::test_run_custom_install_command_error FAIL tests/test_z_cmdline.py::test_skip_unknown_interpreter FAIL tests/test_z_cmdline.py::TestToxRun::()::test_json ====================================================================================================== 4 failed, 201 passed, 3 skipped in 78.50 seconds ======================================================================================================= ERROR: InvocationError: '/Users/kmike/svn/tox/.tox/py27/bin/py.test --junitxml=/Users/kmike/svn/tox/.tox/py27/log/junit-py27.xml' ___________________________________________________________________________________________________________________________ summary ___________________________________________________________________________________________________________________________ ERROR: py27: commands failed ``` _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit