Exemplo n.º 1
0
 def test_install_without_pip(self):
     mgr = PipManager('/usr/bin', pip_installed=False)
     with patch.object(helpers, 'logged_exec') as mocked_exec:
         with patch.object(mgr, '_brute_force_install_pip') as mocked_install_pip:
             mgr.install('foo')
             self.assertEqual(mocked_install_pip.call_count, 1)
         mocked_exec.assert_called_with(['/usr/bin/pip', 'install', 'foo'])
Exemplo n.º 2
0
 def test_install_raise_error(self):
     mgr = PipManager(BIN_PATH, pip_installed=True)
     with patch.object(helpers, 'logged_exec') as mock:
         mock.side_effect = Exception("Kapow!")
         with self.assertRaises(Exception):
             mgr.install('foo')
     self.assertLoggedError("Error installing foo: Kapow!")
Exemplo n.º 3
0
 def test_install_with_options(self):
     mgr = PipManager(BIN_PATH, pip_installed=True, options=['--bar baz'])
     pip_path = os.path.join(BIN_PATH, 'pip')
     with patch.object(helpers, 'logged_exec') as mock:
         mgr.install('foo')
         mock.assert_called_with(
             [pip_path, 'install', 'foo', '--bar', 'baz'])
Exemplo n.º 4
0
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
Exemplo n.º 5
0
 def test_install_raise_error(self):
     mgr = PipManager(BIN_PATH, pip_installed=True)
     with patch.object(helpers, 'logged_exec') as mock:
         mock.side_effect = Exception("Kapow!")
         with self.assertRaises(Exception):
             mgr.install('foo')
     self.assertLoggedError("Error installing foo: Kapow!")
Exemplo n.º 6
0
 def test_install_without_pip(self):
     mgr = PipManager(BIN_PATH, pip_installed=False)
     pip_path = os.path.join(BIN_PATH, 'pip')
     with patch.object(helpers, 'logged_exec') as mocked_exec:
         with patch.object(mgr, '_brute_force_install_pip') as mocked_install_pip:
             mgr.install('foo')
             self.assertEqual(mocked_install_pip.call_count, 1)
         mocked_exec.assert_called_with([pip_path, 'install', 'foo'])
Exemplo n.º 7
0
 def test_say_hi_on_first_install(self):
     mgr = PipManager(BIN_PATH, pip_installed=True, options=['--bar=baz'])
     with patch.object(helpers, 'logged_exec'):
         mgr.install('foo')
         self.assertLoggedInfo("Hi! This is fades")
         logassert.setup(self, 'fades.pipmanager')
         mgr.install('bar')
         self.assertNotLoggedInfo("Hi! This is fades")
Exemplo n.º 8
0
 def test_say_hi_on_first_install(self):
     mgr = PipManager(BIN_PATH, pip_installed=True, options=['--bar=baz'])
     with patch.object(helpers, 'logged_exec'):
         mgr.install('foo')
         self.assertLoggedInfo("Hi! This is fades")
         logassert.setup(self, 'fades.pipmanager')
         mgr.install('bar')
         self.assertNotLoggedInfo("Hi! This is fades")
Exemplo n.º 9
0
 def test_install_without_pip(self):
     mgr = PipManager('/usr/bin', pip_installed=False)
     with patch.object(helpers, 'logged_exec') as mocked_exec:
         with patch.object(
                 mgr, '_brute_force_install_pip') as mocked_install_pip:
             mgr.install('foo')
             self.assertEqual(mocked_install_pip.call_count, 1)
         mocked_exec.assert_called_with(['/usr/bin/pip', 'install', 'foo'])
Exemplo n.º 10
0
def test_install_without_pip(mocker):
    mgr = PipManager(BIN_PATH, pip_installed=False)
    pip_path = os.path.join(BIN_PATH, "pip")
    mocked_exec = mocker.patch.object(helpers, "logged_exec")
    mocked_install_pip = mocker.patch.object(mgr, "_brute_force_install_pip")
    mgr.install("foo")
    assert mocked_install_pip.call_count == 1
    mocked_exec.assert_called_with([pip_path, "install", "foo"])
Exemplo n.º 11
0
 def test_install_without_pip(self):
     mgr = PipManager(BIN_PATH, pip_installed=False)
     pip_path = os.path.join(BIN_PATH, 'pip')
     with patch.object(helpers, 'logged_exec') as mocked_exec:
         with patch.object(mgr, '_brute_force_install_pip') as mocked_install_pip:
             mgr.install('foo')
             self.assertEqual(mocked_install_pip.call_count, 1)
         mocked_exec.assert_called_with([pip_path, 'install', 'foo'])
Exemplo n.º 12
0
def test_install_raise_error(mocker, logged):
    mgr = PipManager(BIN_PATH, pip_installed=True)
    mocker.patch.object(helpers,
                        "logged_exec",
                        side_effect=Exception("Kapow!"))
    with pytest.raises(Exception):
        mgr.install("foo")

    logged.assert_error("Error installing foo: Kapow!")
Exemplo n.º 13
0
def test_install(mocker):
    mgr = PipManager(BIN_PATH, pip_installed=True)
    pip_path = os.path.join(BIN_PATH, "pip")
    mock = mocker.patch.object(helpers, "logged_exec")
    mgr.install("foo")

    # check it always upgrades pip, and then the proper install
    python_path = os.path.join(BIN_PATH, "python")
    c1 = mocker.call([python_path, "-m", "pip", "install", "pip", "--upgrade"])
    c2 = mocker.call([pip_path, "install", "foo"])
    assert mock.call_args_list == [c1, c2]
Exemplo n.º 14
0
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
Exemplo n.º 15
0
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
Exemplo n.º 16
0
 def test_install_with_options_using_equal(self):
     mgr = PipManager('/usr/bin', pip_installed=True, options=['--bar=baz'])
     with patch.object(helpers, 'logged_exec') as mock:
         mgr.install('foo')
         mock.assert_called_with(['/usr/bin/pip', 'install', 'foo', '--bar=baz'])
Exemplo n.º 17
0
def test_install_with_options_using_equal(mocker):
    mgr = PipManager(BIN_PATH, pip_installed=True, options=["--bar=baz"])
    pip_path = os.path.join(BIN_PATH, "pip")
    mock = mocker.patch.object(helpers, "logged_exec")
    mgr.install("foo")
    mock.assert_called_with([pip_path, "install", "foo", "--bar=baz"])
Exemplo n.º 18
0
 def test_install(self):
     mgr = PipManager('/usr/bin', pip_installed=True)
     with patch.object(helpers, 'logged_exec') as mock:
         mgr.install('foo')
         mock.assert_called_with(['/usr/bin/pip', 'install', 'foo'])
Exemplo n.º 19
0
 def test_install_with_options_using_equal(self):
     mgr = PipManager('/usr/bin', pip_installed=True, options=['--bar=baz'])
     with patch.object(helpers, 'logged_exec') as mock:
         mgr.install('foo')
         mock.assert_called_with(
             ['/usr/bin/pip', 'install', 'foo', '--bar=baz'])
Exemplo n.º 20
0
def test_install_multiword_dependency(mocker):
    mgr = PipManager(BIN_PATH, pip_installed=True)
    pip_path = os.path.join(BIN_PATH, "pip")
    mock = mocker.patch.object(helpers, "logged_exec")
    mgr.install("foo bar")
    mock.assert_called_with([pip_path, "install", "foo", "bar"])
Exemplo n.º 21
0
 def test_install_multiword_dependency(self):
     mgr = PipManager(BIN_PATH, pip_installed=True)
     pip_path = os.path.join(BIN_PATH, 'pip')
     with patch.object(helpers, 'logged_exec') as mock:
         mgr.install('foo bar')
         mock.assert_called_with([pip_path, 'install', 'foo', 'bar'])
Exemplo n.º 22
0
 def test_install_with_options_using_equal(self):
     mgr = PipManager(BIN_PATH, pip_installed=True, options=['--bar=baz'])
     pip_path = os.path.join(BIN_PATH, 'pip')
     with patch.object(helpers, 'logged_exec') as mock:
         mgr.install('foo')
         mock.assert_called_with([pip_path, 'install', 'foo', '--bar=baz'])
Exemplo n.º 23
0
 def test_install_multiword_dependency(self):
     mgr = PipManager(BIN_PATH, pip_installed=True)
     pip_path = os.path.join(BIN_PATH, 'pip')
     with patch.object(helpers, 'logged_exec') as mock:
         mgr.install('foo bar')
         mock.assert_called_with([pip_path, 'install', 'foo', 'bar'])
Exemplo n.º 24
0
 def test_install(self):
     mgr = PipManager('/usr/bin', pip_installed=True)
     with patch.object(helpers, 'logged_exec') as mock:
         mgr.install('foo')
         mock.assert_called_with(['/usr/bin/pip', 'install', 'foo'])
Exemplo n.º 25
0
def test_install_without_pip_upgrade(mocker):
    mgr = PipManager(BIN_PATH, pip_installed=True, avoid_pip_upgrade=True)
    pip_path = os.path.join(BIN_PATH, "pip")
    mock = mocker.patch.object(helpers, "logged_exec")
    mgr.install("foo")
    mock.assert_called_with([pip_path, "install", "foo"])