def create_venv(requested_deps, interpreter, is_current): """Create a new virtualvenv with the requirements of this script.""" # create virtualenv env = FadesEnvBuilder() env_path, env_bin_path, pip_installed = env.create_env(interpreter, is_current) venv_data = {} venv_data['env_path'] = env_path venv_data['env_bin_path'] = env_bin_path venv_data['pip_installed'] = pip_installed # install deps installed = {} for repo in requested_deps.keys(): if repo == REPO_PYPI: mgr = PipManager(env_bin_path, pip_installed=pip_installed) else: logger.warning("Install from %r not implemented", repo) continue installed[repo] = {} repo_requested = requested_deps[repo] logger.debug("Installing dependencies for repo %r: requested=%s", repo, repo_requested) for dependency in repo_requested: mgr.install(dependency) # always store the installed dependency, as in the future we'll select the venv # based on what is installed, not what used requested (remember that user may # request >, >=, etc!) project = dependency.project_name installed[repo][project] = mgr.get_version(project) logger.debug("Installed dependencies: %s", installed) return venv_data, installed
def test_get_parsing_ok(self): mocked_stdout = ['Name: foo', 'Version: 2.0.0', 'Location: ~/.local/share/fades/86cc492/lib/python3.4/site-packages', 'Requires: '] mgr = PipManager(BIN_PATH, pip_installed=True) with patch.object(helpers, 'logged_exec') as mock: mock.return_value = mocked_stdout version = mgr.get_version('foo') self.assertEqual(version, '2.0.0')
def test_get_parsing_ok(self): mocked_stdout = ['Name: foo', 'Version: 2.0.0', 'Location: ~/.local/share/fades/86cc492/lib/python3.4/site-packages', 'Requires: '] mgr = PipManager(BIN_PATH, pip_installed=True) with patch.object(helpers, 'logged_exec') as mock: mock.return_value = mocked_stdout version = mgr.get_version('foo') self.assertEqual(version, '2.0.0')
def test_real_case_levenshtein(mocker): mocked_stdout = [ "Metadata-Version: 1.1", "Name: python-Levenshtein", "Version: 0.12.0", "License: GPL", ] mgr = PipManager(BIN_PATH, pip_installed=True) mocker.patch.object(helpers, "logged_exec", return_value=mocked_stdout) version = mgr.get_version("foo") assert version == "0.12.0"
def test_get_parsing_ok_pytest(mocker): mocked_stdout = [ "Name: foo", "Version: 2.0.0", "Location: ~/.local/share/fades/86cc492/lib/python3.4/site-packages", "Requires: ", ] mgr = PipManager(BIN_PATH, pip_installed=True) mocker.patch.object(helpers, "logged_exec", return_value=mocked_stdout) version = mgr.get_version("foo") assert version, "2.0.0"
def test_real_case_levenshtein(self): mocked_stdout = [ 'Metadata-Version: 1.1', 'Name: python-Levenshtein', 'Version: 0.12.0', 'License: GPL', ] mgr = PipManager('/usr/bin', pip_installed=True) with patch.object(helpers, 'logged_exec') as mock: mock.return_value = mocked_stdout version = mgr.get_version('foo') self.assertEqual(version, '0.12.0')
def test_real_case_levenshtein(self): mocked_stdout = [ 'Metadata-Version: 1.1', 'Name: python-Levenshtein', 'Version: 0.12.0', 'License: GPL', ] mgr = PipManager(BIN_PATH, pip_installed=True) with patch.object(helpers, 'logged_exec') as mock: mock.return_value = mocked_stdout version = mgr.get_version('foo') self.assertEqual(version, '0.12.0')
def test_get_parsing_error(self): mocked_stdout = ['Name: foo', 'Release: 2.0.0', 'Location: ~/.local/share/fades/86cc492/lib/python3.4/site-packages', 'Requires: '] mgr = PipManager(BIN_PATH, pip_installed=True) with patch.object(helpers, 'logged_exec') as mock: version = mgr.get_version('foo') mock.return_value = mocked_stdout self.assertEqual(version, '') self.assertLoggedError('Fades is having problems getting the installed version. ' 'Run with -v or check the logs for details')
def test_get_parsing_error(self): mocked_stdout = ['Name: foo', 'Release: 2.0.0', 'Location: ~/.local/share/fades/86cc492/lib/python3.4/site-packages', 'Requires: '] mgr = PipManager(BIN_PATH, pip_installed=True) with patch.object(helpers, 'logged_exec') as mock: version = mgr.get_version('foo') mock.return_value = mocked_stdout self.assertEqual(version, '') self.assertLoggedError('Fades is having problems getting the installed version. ' 'Run with -v or check the logs for details')
def create_venv(requested_deps, interpreter, is_current, options, pip_options, avoid_pip_upgrade): """Create a new virtualvenv with the requirements of this script.""" # create virtualenv env = _FadesEnvBuilder() env_path, env_bin_path, pip_installed = env.create_env( interpreter, is_current, options) venv_data = {} venv_data['env_path'] = env_path venv_data['env_bin_path'] = env_bin_path venv_data['pip_installed'] = pip_installed # install deps installed = {} for repo in requested_deps.keys(): if repo in (REPO_PYPI, REPO_VCS): mgr = PipManager(env_bin_path, pip_installed=pip_installed, options=pip_options, avoid_pip_upgrade=avoid_pip_upgrade) else: logger.warning("Install from %r not implemented", repo) continue installed[repo] = {} repo_requested = requested_deps[repo] logger.debug("Installing dependencies for repo %r: requested=%s", repo, repo_requested) for dependency in repo_requested: try: mgr.install(dependency) except Exception: logger.debug("Installation Step failed, removing virtualenv") destroy_venv(env_path) raise FadesError('Dependency installation failed') if repo == REPO_VCS: # no need to request the installed version, as we'll always compare # to the url itself project = dependency.url version = None else: # always store the installed dependency, as in the future we'll select the venv # based on what is installed, not what used requested (remember that user may # request >, >=, etc!) project = dependency.project_name version = mgr.get_version(project) installed[repo][project] = version logger.debug("Installed dependencies: %s", installed) return venv_data, installed
def test_get_parsing_error(mocker, logs): mocked_stdout = [ "Name: foo", "Release: 2.0.0", "Location: ~/.local/share/fades/86cc492/lib/python3.4/site-packages", "Requires: ", ] mgr = PipManager(BIN_PATH, pip_installed=True) mocker.patch.object(helpers, "logged_exec", return_value=mocked_stdout) version = mgr.get_version("foo") assert version == "" assert ('Fades is having problems getting the installed version. ' 'Run with -v or check the logs for details') in logs.error
def create_venv(requested_deps, interpreter, is_current, options, pip_options): """Create a new virtualvenv with the requirements of this script.""" # create virtualenv env = _FadesEnvBuilder() env_path, env_bin_path, pip_installed = env.create_env(interpreter, is_current, options) venv_data = {} venv_data['env_path'] = env_path venv_data['env_bin_path'] = env_bin_path venv_data['pip_installed'] = pip_installed # install deps installed = {} for repo in requested_deps.keys(): if repo in (REPO_PYPI, REPO_VCS): mgr = PipManager(env_bin_path, pip_installed=pip_installed, options=pip_options) else: logger.warning("Install from %r not implemented", repo) continue installed[repo] = {} repo_requested = requested_deps[repo] logger.debug("Installing dependencies for repo %r: requested=%s", repo, repo_requested) for dependency in repo_requested: try: mgr.install(dependency) except Exception: logger.debug("Installation Step failed, removing virtualenv") destroy_venv(env_path) raise FadesError('Dependency installation failed') if repo == REPO_VCS: # no need to request the installed version, as we'll always compare # to the url itself project = dependency.url version = None else: # always store the installed dependency, as in the future we'll select the venv # based on what is installed, not what used requested (remember that user may # request >, >=, etc!) project = dependency.project_name version = mgr.get_version(project) installed[repo][project] = version logger.debug("Installed dependencies: %s", installed) return venv_data, installed