def create_virtualenv(root): """ Create a virtualenv in ``root``. :param FilePath root: The directory in which to install a virtualenv. :returns: A ``VirtualEnv`` instance. """ # We call ``virtualenv`` as a subprocess rather than as a library, so that # we can turn off Python byte code compilation. run_command( ['virtualenv', '--python=/usr/bin/python2.7', '--quiet', root.path], added_env=dict(PYTHONDONTWRITEBYTECODE='1')) # XXX: Virtualenv doesn't link to pyc files when copying its bootstrap # modules. See https://github.com/pypa/virtualenv/issues/659 for module_name in virtualenv.REQUIRED_MODULES: py_base = root.descendant(['lib', 'python2.7', module_name]) py = py_base.siblingExtension('.py') if py.exists() and py.islink(): pyc = py_base.siblingExtension('.pyc') py_target = py.realpath() pyc_target = FilePath( py_target.splitext()[0]).siblingExtension('.pyc') if pyc.exists(): pyc.remove() if pyc_target.exists(): pyc_target.linkTo(pyc) return VirtualEnv(root=root)
def create_virtualenv(root): """ Create a virtualenv in ``root``. :param FilePath root: The directory in which to install a virtualenv. :returns: A ``VirtualEnv`` instance. """ # We call ``virtualenv`` as a subprocess rather than as a library, so that # we can turn off Python byte code compilation. run_command( ['virtualenv', '--python=/usr/bin/python2.7', '--quiet', root.path], added_env=dict(PYTHONDONTWRITEBYTECODE='1') ) # XXX: Virtualenv doesn't link to pyc files when copying its bootstrap # modules. See https://github.com/pypa/virtualenv/issues/659 for module_name in virtualenv.REQUIRED_MODULES: py_base = root.descendant( ['lib', 'python2.7', module_name]) py = py_base.siblingExtension('.py') if py.exists() and py.islink(): pyc = py_base.siblingExtension('.pyc') py_target = py.realpath() pyc_target = FilePath( py_target.splitext()[0]).siblingExtension('.pyc') if pyc.exists(): pyc.remove() if pyc_target.exists(): pyc_target.linkTo(pyc) return VirtualEnv(root=root)
def test_symlink(self): """ :py:`get_pathinfo` returns a :py:`PathInfo` when given a symlink. """ dest = FilePath(self.mktemp()) dest.setContent(b"content") path = FilePath(self.mktemp()) dest.linkTo(path) path_info = get_pathinfo(path) self.assertThat( path_info, MatchesStructure.byEquality( is_dir=False, is_file=False, is_link=True, exists=True, state=None, ), )