Example #1
0
def test_dip_val_nsr(mock_repo):
    mock_repo.return_value.remote.side_effect = ValueError
    app = settings.Dip('dipex',
                       '/path/to/docker/compose/dir',
                       git={'remote': 'origin'})
    with pytest.raises(errors.NoSuchRemoteError):
        app.validate()
Example #2
0
def test_dip_init_path():
    ret = settings.Dip('dipex', '/path/to/docker/compose/dir', '/bin')
    assert ret.name == 'dipex'
    assert ret.home == '/path/to/docker/compose/dir'
    assert ret.path == '/bin'
    assert ret.env == {}
    assert ret.git == {}
Example #3
0
def test_dip_val_no_such_path_error(mock_repo):
    mock_repo.side_effect = git.exc.NoSuchPathError
    app = settings.Dip('dipex',
                       '/path/to/docker/compose/dir',
                       git={'remote': 'origin'})
    with pytest.raises(errors.NoSuchPathError):
        app.validate()
Example #4
0
def test_dip_val_igre(mock_repo):
    mock_repo.side_effect = git.exc.InvalidGitRepositoryError
    app = settings.Dip('dipex',
                       '/path/to/docker/compose/dir',
                       git={'remote': 'origin'})
    with pytest.raises(errors.InvalidGitRepositoryError):
        app.validate()
Example #5
0
def test_settings_setitem():
    cfg = MockSettings()
    cfg['fuzz'] = settings.Dip('fuzz', '/path/to/docker/compose/dir')
    assert dict(cfg['fuzz']) == {
        'name': 'fuzz',
        'home': '/path/to/docker/compose/dir',
        'path': settings.PATH
    }
Example #6
0
def test_dip_val_cfnf(mock_proj):
    with mock.patch('git.Repo'):
        mock_proj.side_effect = \
            compose.config.errors.ComposeFileNotFound('test')
        app = settings.Dip('dipex',
                           '/path/to/docker/compose/dir',
                           git={'remote': 'origin'})
        with pytest.raises(errors.ComposeFileNotFound):
            app.validate()
Example #7
0
def test_dip_init_env():
    ret = settings.Dip('dipex',
                       '/path/to/docker/compose/dir',
                       env={'ENV': 'VAL'})
    assert ret.name == 'dipex'
    assert ret.home == '/path/to/docker/compose/dir'
    assert ret.path == settings.PATH
    assert ret.env == {'ENV': 'VAL'}
    assert ret.git == {}
Example #8
0
def test_dip_val_nss(mock_proj):
    with mock.patch('git.Repo'):
        mock_proj.return_value.get_service.side_effect = \
            compose.project.NoSuchService('test')
        app = settings.Dip('dipex',
                           '/path/to/docker/compose/dir',
                           git={'remote': 'origin'})
        with pytest.raises(errors.NoSuchService):
            app.validate()
Example #9
0
def test_dip_install():
    with tempfile.NamedTemporaryFile() as tmp:
        path, name = os.path.split(tmp.name)
        app = settings.Dip(name, '/path/to/docker/compose/dir', path)
        app.install()
        tmp.flush()
        ret = tmp.read().decode('utf8')
        exp = "#!/bin/bash\ndip run {name} -- $@\n".format(name=name)
        assert ret == exp
Example #10
0
def test_dip_run_tty(mock_call, mock_dir, mock_tty):
    mock_tty.return_value = False
    app = settings.Dip('dipex', '/path/to/docker/compose/dir')
    app.run('--help')
    mock_dir.assert_called_once_with('/path/to/docker/compose/dir')
    mock_call.assert_called_once_with(
        ['docker-compose', 'run', '--rm', 'dipex', '--help'],
        stdin=sys.stdin,
        stdout=sys.stdout,
        stderr=sys.stderr)
Example #11
0
def test_dip_definitions(mock_cfg):
    with tempfile.NamedTemporaryFile() as tmp:
        tmp.write('fizzbuzz'.encode('utf8'))
        tmp.flush()
        mock_cfg.return_value = [tmp.name]
        path = os.path.split(tmp.name)[0]
        app = settings.Dip('dipex', path)
        ret = list(app.definitions)
        mock_cfg.assert_called_once_with(path)
        assert ret == ['fizzbuzz']
Example #12
0
def test_dip_diff(mock_diffs):
    mock_diffs.return_value = iter([False])
    app = settings.Dip('dipex',
                       '/path/to/docker/compose/dir',
                       '/bin',
                       git={
                           'remote': 'origin',
                           'branch': 'master',
                           'sleep': 5
                       })
    ret = app.diff()
    assert ret is False
Example #13
0
def test_dip_repo(mock_repo):
    app = settings.Dip('dipex',
                       '/path/to/docker/compose/dir',
                       '/bin',
                       git={
                           'remote': 'origin',
                           'branch': 'master',
                           'sleep': 5
                       })
    assert app.repo
    mock_repo.assert_called_once_with('/path/to/docker/compose/dir', 'origin',
                                      'master', 5)
Example #14
0
def test_dip_init_git():
    ret = settings.Dip('dipex',
                       '/path/to/docker/compose/dir',
                       git={
                           'remote': 'origin',
                           'branch': 'master'
                       })
    assert ret.name == 'dipex'
    assert ret.home == '/path/to/docker/compose/dir'
    assert ret.path == settings.PATH
    assert ret.env == {}
    assert ret.git == {'remote': 'origin', 'branch': 'master'}
Example #15
0
def test_dip_iter():
    with mock.patch('git.Repo'):
        ret = settings.Dip('dipex', '/path/to/docker/compose/dir', '/bin',
                           {'ENV': 'VAL'}, {'remote': 'origin'}, '.env')
        assert dict(ret) == {
            'name': 'dipex',
            'home': '/path/to/docker/compose/dir',
            'path': '/bin',
            'env': {
                'ENV': 'VAL'
            },
            'git': {
                'remote': 'origin'
            },
            'dotenv': '.env'
        }
Example #16
0
def dip_install(name, home, path, remote, dotenv, env, secret, sleep,
                auto_upgrade, no_exe):
    """ Install CLI by name.

        \b
        dip install fizz .                   # Relative path
        dip install fizz /path/to/dir        # Absolute path
        dip install fizz . -r origin/master  # Tracking git remote/branch
    """
    # pylint: disable=too-many-arguments
    with settings.saveonexit() as cfg:
        # Interactively set ENV
        for sec in secret:
            env[sec] = click.prompt(sec, hide_input=True)  # pragma: no cover

        # Parse git config
        remote, branch = remote
        git = {
            'remote': remote,
            'branch': branch,
            'sleep': sleep,
            'auto_upgrade': auto_upgrade
        }

        # Install
        if no_exe:
            app = cfg[name] = settings.Dip(name, home, path, env, git, dotenv)
        else:
            app = cfg.install(name, home, path, env, git, dotenv)

        # Validate configuration
        app.validate()

        # Finish
        click.echo("Installed {name} to {path}".format(
            name=colors.teal(app.name), path=colors.blue(app.path)))
Example #17
0
def test_dip_auto_upgrade():
    app = settings.Dip('dipex', '/path/to/docker/compose/dir')
    assert app.auto_upgrade is None
Example #18
0
def test_dip_sleep():
    app = settings.Dip('dipex', '/path/to/docker/compose/dir')
    assert app.sleep is None
Example #19
0
def test_dip_repr():
    ret = settings.Dip('dipex', '/path/to/docker/compose/dir')
    assert repr(ret) == 'dipex[/path/to/docker/compose/dir]'
Example #20
0
def test_dip_project(mock_proj):
    app = settings.Dip('dipex', '/path/to/docker/compose/dir')
    assert app.project
    mock_proj.assert_called_once_with('/path/to/docker/compose/dir')
Example #21
0
def test_dip_service(mock_proj):
    app = settings.Dip('dipex', '/path/to/docker/compose/dir')
    assert app.service
    mock_proj.return_value.get_service.assert_called_once_with('dipex')
Example #22
0
def test_dip_uninstall_os_err(mock_proj, mock_rm):
    mock_rm.side_effect = OSError
    app = settings.Dip('dipex', '/path/to/docker/compose/dir', '/bin')
    app.uninstall()
    mock_rm.assert_called_once_with('/bin/dipex')
    mock_proj.return_value.networks.remove.assert_called_once_with()
Example #23
0
def test_dip_uninstall_compose_err(mock_proj, mock_rm):
    mock_proj.side_effect = compose.config.errors.ConfigurationError('')
    app = settings.Dip('dipex', '/path/to/docker/compose/dir', '/bin')
    app.uninstall()
    mock_rm.assert_called_once_with('/bin/dipex')