New issue 326: OSError 'Not a directory' when creating env on Jython 2.7.0 https://bitbucket.org/hpk42/tox/issues/326/oserror-not-a-directory-when-creating-env
Cosimo Lupo: Hi, I cannot use tox with Jython. I'm using the latest tox 2.3.1, and Jython 2.7.0 on OS X 10.10.5 with Java 1.7.0_79. I tried to clone this repository and run the test suite using jython. Below is the output from test_venv.py::test_create that shows my issue. It seems that the subprocess call to `virtualenv` command that creates the new tox environment is failing because a `listdir` call in `session._initlogpath` raises `OSError` because the `envlogdir` (where the output from the subprocess is to be logged) does not exist. If I browse the `.tox` directory in Finder, I can see there is no `{envdir}/log` subfolder. Thank you for your support. Cosimo ``` (jython-venv) cosimolupo@Cosimo-MBP ~/Documents/Github/tox $ py.test -v tests/test_venv.py::test_create ============================= test session starts ============================== platform java1.7.0_79 -- Python 2.7.0, pytest-2.9.1, py-1.4.31, pluggy-0.3.1 -- /Users/cosimolupo/Documents/Github/fonttools/jython-venv/bin/jython cachedir: .cache tox comes from: '/Users/cosimolupo/Documents/Github/tox/tox/__init__$py.class' rootdir: /Users/cosimolupo/Documents/Github/tox, inifile: tox.ini collected 28 items tests/test_venv.py::test_create FAILED =================================== FAILURES =================================== _________________________________ test_create __________________________________ monkeypatch = <_pytest.monkeypatch.monkeypatch instance at 0x69> mocksession = <tox._pytestplugin.MockSession instance at 0x6a> newconfig = <function newconfig at 0x6b> def test_create(monkeypatch, mocksession, newconfig): config = newconfig([], """ [testenv:py123] """) envconfig = config.envconfigs['py123'] venv = VirtualEnv(envconfig, session=mocksession) assert venv.path == envconfig.envdir assert not venv.path.check() action = mocksession.newaction(venv, "getenv") > tox_testenv_create(action=action, venv=venv) tests/test_venv.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tox/venv.py:395: in tox_testenv_create venv._pcall(args, venv=False, action=action, cwd=basepath) tox/venv.py:361: in _pcall return action.popen(args, cwd=cwd, env=env, tox/session.py:121: in popen fout = self._initlogpath(self.id) tox/session.py:107: in _initlogpath l = logdir.listdir("%s-*" % actionid) tox/session.py:107: in _initlogpath l = logdir.listdir("%s-*" % actionid) ../fonttools/jython-venv/Lib/site-packages/py/_path/local.py:388: in listdir names = py.error.checked_call(os.listdir, self.strpath) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <py._error.ErrorMaker object at 0x6c> func = <java function listdir 0x6d> args = ('/private/var/folders/jb/rjz76yw92w7144mwqg119jnm0000gn/T/pytest-of-cosimolupo/pytest-3/test_create0/.tox/py123/log',) kwargs = {}, __tracebackhide__ = False, cls = <class 'py.error.ENOTDIR'> value = OSError(20, 'Not a directory'), tb = <traceback object at 0x6e> errno = 20 def checked_call(self, func, *args, **kwargs): """ call a function and raise an errno-exception if applicable. """ __tracebackhide__ = True try: return func(*args, **kwargs) except self.Error: raise except (OSError, EnvironmentError): cls, value, tb = sys.exc_info() if not hasattr(value, 'errno'): raise __tracebackhide__ = False errno = value.errno try: if not isinstance(value, WindowsError): raise NameError except NameError: # we are not on Windows, or we got a proper OSError cls = self._geterrnoclass(errno) else: try: cls = self._geterrnoclass(_winerrnomap[errno]) except KeyError: raise value > raise cls("%s%r" % (func.__name__, args)) E ENOTDIR: [Not a directory]: listdir('/private/var/folders/jb/rjz76yw92w7144mwqg119jnm0000gn/T/pytest-of-cosimolupo/pytest-3/test_create0/.tox/py123/log',) ../fonttools/jython-venv/Lib/site-packages/py/_error.py:84: ENOTDIR =========================== 1 failed in 2.31 seconds =========================== ```
_______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit