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()
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 == {}
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()
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()
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 }
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()
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 == {}
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()
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
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)
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']
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
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)
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'}
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' }
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)))
def test_dip_auto_upgrade(): app = settings.Dip('dipex', '/path/to/docker/compose/dir') assert app.auto_upgrade is None
def test_dip_sleep(): app = settings.Dip('dipex', '/path/to/docker/compose/dir') assert app.sleep is None
def test_dip_repr(): ret = settings.Dip('dipex', '/path/to/docker/compose/dir') assert repr(ret) == 'dipex[/path/to/docker/compose/dir]'
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')
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')
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()
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')