def configure(mocker: MockerFixture): original_environ = dict(os.environ) cwd = os.getcwd() Config.defaults = {'defaults': {'fail_fast': True}} def overrides(config): if not 'core' in config: config['core'] = {} config.get('core')['check_updates'] = False Config.overrides = overrides try: if os.name == 'nt' and 'COMSPEC' not in os.environ: os.environ['COMSPEC'] = r'C:\Windows\System32\cmd.exe' if os.name != 'nt' and 'SHELL' not in os.environ: os.environ['SHELL'] = '/bin/bash' if os.name == 'nt': os.environ['DDB_OVERRIDE_DOCKER_USER_UID'] = '1000' os.environ['DDB_OVERRIDE_DOCKER_USER_GID'] = '1000' os.environ['DDB_OVERRIDE_DOCKER_IP'] = '127.0.0.1' configure_logging(SPAM) mocker.patch('ddb.feature.smartcd.actions.is_smartcd_installed', lambda: False) mocker.patch('ddb.feature.version.is_git_repository', lambda: False) yield finally: os.chdir(cwd) os.environ.clear() os.environ.update(original_environ) reset()
def test_config_output_extra_filenames_some_files_option( self, project_loader, capsys: CaptureFixture): project_loader("extra-filenames") main(["config", "some", "--files"]) reset() output = capsys.readouterr().out parts = [part.lstrip() for part in output.split('---') if part.strip()] assert len(parts) == 1 configurations = {} for part in parts: filename, config = part.split('\n', 1) assert filename.startswith('# ') filename = filename[2:] filename = os.path.relpath(filename, os.getcwd()) configurations[filename] = Dotty(yaml.safe_load(config)) assert ('some.custom.yml',) == \ tuple(configurations.keys()) assert configurations['some.custom.yml']['some'] is True assert 'app.value' not in configurations['some.custom.yml']
def test_config_env_ddb(self, project_loader): project_loader("env-ddb") main(["configure"], reset_disabled=True) assert not config.data.get('app.test') reset()
def test_config_local_falsy(self, project_loader): project_loader("local-falsy") main(["configure"], reset_disabled=True) assert config.data.get('app.disabled_services') == [] reset()
def test_config_extra_filenames(self, project_loader): project_loader("extra-filenames") main(["configure"], reset_disabled=True) assert config.data.get('another') is True assert config.data.get('some') is True assert config.data.get('app.value') == 'local' reset()
def test_config_override_shell(self, project_loader): project_loader("override-shell") os.environ['DDB_OVERRIDE_SHELL_SHELL'] = 'fish' main(["config"], reset_disabled=True) assert config.data.get('shell.shell') == 'fish' reset()
def test_config_merge_insert_strategy3(self, project_loader): project_loader("merge-insert-strategy3") main(["configure"], reset_disabled=True) assert config.data.get('core.env.current') == 'dev' assert config.data.get('core.env.available') == [ 'prod', 'prod', 'stage', 'stage', 'ci', 'dev' ] reset()
def test_config_merge_default(self, project_loader): project_loader("merge-default") main(["configure"], reset_disabled=True) assert config.data.get('core.env.current') == 'dev-services' assert config.data.get('core.env.available') == [ 'prod', 'stage', 'ci', 'dev', 'dev-services' ] reset()
def test_config_env_ddb2(self, project_loader): project_loader("env-ddb") os.rename('ddb.dev.tmp.yml', 'ddb.dev.yml') main(["configure"], reset_disabled=True) assert config.data.get('app.test') assert not os.path.islink("ddb.yml") reset()
def test_config_more_properties_docker_ip_value(self, project_loader, capsys: CaptureFixture): project_loader("more-properties") main(["config", "docker.ip", "--value"], reset_disabled=True) out = capsys.readouterr().out docker_ip = config.data.get('docker.ip') assert out == f"{docker_ip}\n" reset()
def test_config_deep_custom_strategy(self, project_loader): project_loader("deep-local-custom-strategy") main(["configure"], reset_disabled=True) assert config.data.get('app.deep.disabled_services') == [ 'python', 'gunicorn', 'another' ] assert config.data.get('app.deep.another_strategy') == [ 'another', 'python', 'gunicorn' ] reset()
def test_config_more_properties_core_env_available_value( self, project_loader, capsys: CaptureFixture): project_loader("more-properties") main(["config", "core.env.available", "--value"], reset_disabled=True) out = capsys.readouterr().out available = config.data.get('core.env.available') assert out == f"{available}\n" reset()
def test_config_override_ci(self, project_loader): project_loader("override-ci") os.chdir("sub") main(["config"], reset_disabled=True) assert config.data.get('core.env.current') == 'ci' assert config.data.get('docker.cache_from_image') is True assert config.data.get( 'docker.registry.name') == "gfiorleans.azurecr.io" assert config.data.get('docker.registry.repository') == "alm-atout" reset()
def test_config_output_extra_filenames(self, project_loader, capsys: CaptureFixture): project_loader("extra-filenames") main(["config"]) configuration = Dotty(yaml.safe_load(capsys.readouterr().out)) assert configuration['app.value'] == 'local' assert configuration['some'] is True assert configuration['another'] is True assert configuration['core.configuration.extra'] == [ 'some.custom.yml', 'another.config.file' ] reset()
def test_config_more_properties_jsonnet_docker_compose( self, project_loader, capsys: CaptureFixture): project_loader("more-properties") main(["config", "jsonnet.docker.compose"]) configuration = Dotty(yaml.safe_load(capsys.readouterr().out)) assert configuration[ 'jsonnet.docker.compose.project_name'] == 'yo-custom' assert 'jsonnet.docker.registry.name' not in configuration assert 'jsonnet.docker.registry.repository' not in configuration assert 'jsonnet.docker.virtualhost.redirect_to_https' not in configuration assert 'docker' not in configuration assert 'core' not in configuration reset()
def test_config_more_properties_docker_user_variables( self, project_loader, capsys: CaptureFixture): project_loader("more-properties") main(["config", "docker.user", "--variables"], reset_disabled=True) out = capsys.readouterr().out docker_user_gid = config.data.get('docker.user.gid') docker_user_uid = config.data.get('docker.user.uid') assert out == f"""docker.user.gid: {docker_user_gid} docker.user.group: None docker.user.name: None docker.user.uid: {docker_user_uid} """ reset()
def test_docker_binaries_condition(self, relative_cwd, expected, project_loader, capsys: CaptureFixture): project_loader("docker_condition") cwd = os.getcwd() if relative_cwd: cwd = os.path.join(cwd, relative_cwd) os.chdir(cwd) assert os.getcwd() == cwd try: main(["--clear-cache", "configure"], reset_disabled=True) assert config.cwd == cwd finally: reset() exceptions = main(["run", "node", "--version"]) assert not exceptions outerr = capsys.readouterr() assert expected in outerr.out