Remove non-versioned venv code
BUG=chromium:706659
TEST=bin/run_tests (which itself uses a virtualenv)
Change-Id: I0f8d14266fbc2c74c55f1800ea0bd22b8f5dc541
Reviewed-on: https://chromium-review.googlesource.com/663534
Commit-Ready: Allen Li <ayatane@chromium.org>
Tested-by: Allen Li <ayatane@chromium.org>
Reviewed-by: Prathmesh Prabhu <pprabhu@chromium.org>
diff --git a/venv/cros_venv/__main__.py b/venv/cros_venv/__main__.py
deleted file mode 100644
index 9c361a0..0000000
--- a/venv/cros_venv/__main__.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Create or update a virtualenv.
-
-$ python -m cros_venv path/to/venv path/to/requirements.txt
-
-This creates a virtualenv at path/to/venv with the given requirements
-installed.
-"""
-
-from __future__ import absolute_import
-from __future__ import print_function
-from __future__ import unicode_literals
-
-import argparse
-import logging
-
-from cros_venv import venvlib
-
-
-def main():
- """See module docstring."""
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument('venv_dir')
- parser.add_argument('reqs_file')
- parser.add_argument('--verbose', action='store_true')
- args = parser.parse_args()
-
- configure_logging(args.verbose)
-
- venv = venvlib.Venv(
- venv_dir=args.venv_dir,
- reqs_file=args.reqs_file)
- venv.ensure()
-
-
-def configure_logging(verbose):
- if verbose:
- logging.basicConfig(level='DEBUG')
- else:
- logging.getLogger().addHandler(logging.NullHandler())
-
-
-if __name__ == '__main__':
- main()
diff --git a/venv/cros_venv/test_venvlib.py b/venv/cros_venv/test_venvlib.py
index b203fe4..960e2e1 100644
--- a/venv/cros_venv/test_venvlib.py
+++ b/venv/cros_venv/test_venvlib.py
@@ -18,54 +18,6 @@
from cros_venv import venvlib
-class VenvTmpDirTestCase(testcases.TmpdirTestCase):
-
- """TestCase for Venv that uses a temp directory."""
-
- def run(self, result=None):
- with warnings.catch_warnings():
- warnings.filterwarnings('ignore')
- super(VenvTmpDirTestCase, self).run(result)
-
- def test__reqs_up_to_date(self):
- """Test _reqs_up_to_date()."""
- venv = venvlib.Venv('.', 'reqs.txt')
- os.makedirs('lib/python2.7/site-packages')
- with open('reqs.txt', 'w') as f:
- f.write('mir.qualia==1.2.3\n')
- with open('.installed.txt', 'w') as f:
- f.write('mir.qualia==1.2.3\n')
- self.assertTrue(venv._reqs_up_to_date())
-
- def test__reqs_up_to_date_missing(self):
- """Test _reqs_up_to_date() with missing installed reqs."""
- venv = venvlib.Venv('.', 'reqs.txt')
- self.assertFalse(venv._reqs_up_to_date())
-
- def test__reqs_up_to_date_different(self):
- """Test _reqs_up_to_date() with different installed reqs."""
- venv = venvlib.Venv('.', 'reqs.txt')
- os.makedirs('lib/python2.7/site-packages')
- with open('reqs.txt', 'w') as f:
- f.write('mir.qualia==1.2.4\n')
- with open('.installed.txt', 'w') as f:
- f.write('mir.qualia==1.2.3\n')
- self.assertFalse(venv._reqs_up_to_date())
-
- def test__venv_initialized(self):
- """Test _venv_initialized()."""
- venv = venvlib.Venv('.', 'reqs.txt')
- os.makedirs('bin')
- with open('bin/python', 'wb') as f:
- f.write(b'python binary')
- self.assertTrue(venv._venv_initialized())
-
- def test__venv_initialized_missing(self):
- """Test _venv_initialized() with missing bin/python."""
- venv = venvlib.Venv('.', 'reqs.txt')
- self.assertFalse(venv._venv_initialized())
-
-
class VenvlibTestCase(unittest.TestCase):
"""TestCase for venvlib functions."""
@@ -74,34 +26,6 @@
"""Test that _PACKAGE_DIR exists."""
self.assertTrue(os.path.isdir(venvlib._PACKAGE_DIR))
- def test__iter_equal(self):
- """Test when _iter_equal() is True."""
- self.assertTrue(venvlib._iter_equal(
- iter(['foo', 'bar']),
- iter(['foo', 'bar']),
- ))
-
- def test__iter_equal_wrong_length(self):
- """Test when _iter_equal() is False due to length."""
- self.assertFalse(venvlib._iter_equal(
- iter(['foo', 'bar', 'baz']),
- iter(['foo', 'bar']),
- ))
-
- def test__iter_equal_fill_with_None(self):
- """Test that _iter_equal() is True due to filling with None."""
- self.assertTrue(venvlib._iter_equal(
- iter(['foo', 'bar', None]),
- iter(['foo', 'bar']),
- ))
-
- def test__iter_equal_wrong_value(self):
- """Test when _iter_equal() is False due to value."""
- self.assertFalse(venvlib._iter_equal(
- iter(['foo', 'baz']),
- iter(['foo', 'bar']),
- ))
-
def test__get_cache_dir(self):
got = venvlib._get_cache_dir()
self.assertTrue(got.endswith('/.cache/cros_venv'))
diff --git a/venv/cros_venv/venvlib.py b/venv/cros_venv/venvlib.py
index 16524fd..218a70b 100644
--- a/venv/cros_venv/venvlib.py
+++ b/venv/cros_venv/venvlib.py
@@ -32,81 +32,6 @@
_BASE_DEPENDENCIES = ('setuptools==28.2.0', 'pip==8.1.2')
-class Venv(object):
- """Wraps all operations on a virtualenv directory."""
-
- def __init__(self, venv_dir, reqs_file):
- warnings.warn('Venv is deprecated; use VersionedVenv instead')
- self._venv_dir = venv_dir
- self._reqs_file = reqs_file
-
- @property
- def _venv_python(self):
- return os.path.join(self._venv_dir, 'bin', 'python')
-
- @property
- def _lock_file(self):
- return os.path.join(self._venv_dir, '.create_venv.lock')
-
- @property
- def _installed_reqs_file(self):
- return os.path.join(self._venv_dir, '.installed.txt')
-
- def _lock(self):
- """Return lock context for the virtualenv."""
- return flock.FileLock(self._lock_file)
-
- def ensure(self):
- """Create or update virtualenv."""
- _makedirs_exist_ok(self._venv_dir)
- with self._lock():
- if not self._venv_initialized():
- self._init_venv()
- if not self._reqs_up_to_date():
- self._install_reqs()
-
- def _venv_initialized(self):
- """Check if virtualenv is initialized properly."""
- return os.path.exists(self._venv_python)
-
- def _init_venv(self):
- """Initialize virtualenv."""
- subprocess.check_call([
- 'virtualenv', self._venv_dir,
- '-p', _VENV_PY,
- '--extra-search-dir', _PACKAGE_DIR,
- # TODO(ayatane): Ubuntu Precise ships with virtualenv 1.7,
- # which requires specifying --setuptools, else distribute is
- # used (distribute is deprecated). virtualenv after 1.10
- # uses setuptools by default. virtualenv >1.10 accepts the
- # --setuptools option but does not document it. Once we no
- # longer have any hosts on virtualenv 1.7, the --setuptools
- # option can be removed.
- '--setuptools'])
-
- def _reqs_up_to_date(self):
- """Return whether the virtualenv reqs file is up to date."""
- if not os.path.exists(self._installed_reqs_file):
- return False
- with open(self._installed_reqs_file) as installed, \
- open(self._reqs_file) as specified:
- return _iter_equal(installed, specified)
-
- def _install_reqs(self):
- """Install indicated packages into virtualenv.
-
- The corresponding requirements file is also copied after
- installation.
- """
- subprocess.check_call(
- [self._venv_python, '-m', 'pip', 'install',
- '--no-index', '-f', 'file://' + _PACKAGE_DIR]
- + list(_BASE_DEPENDENCIES)
- + ['-r', self._reqs_file]
- )
- shutil.copyfile(self._reqs_file, self._installed_reqs_file)
-
-
class _VenvPaths(object):
"""Wrapper defining paths inside a versioned virtualenv."""
@@ -321,19 +246,10 @@
return os.path.expanduser('~/.cache/cros_venv')
-def _iter_equal(first, second):
- """Return whether two iterables are equal.
-
- If one iterable is shorter, it will be filled with None and compared
- with the other.
- """
- return all(x == y for x, y in itertools.izip_longest(first, second))
-
-
def _makedirs_exist_ok(path):
"""Make directories recursively, ignoring if directory already exists."""
try:
os.makedirs(path)
except OSError:
- if not os.path.isdir(path):
+ if not os.path.isdir(path): # pragma: no cover
raise