def test_it_ignores_and_warns_duplicate_user_env_vars(self, mock_stdout): # and it is case insensitive branch = 'branch' owner = 'owner' repository = 'repo' site_prefix = 'prefix' base_url = 'url' user_env_vars = [{ 'name': 'BASEURL', 'value': 'bar' }, { 'name': 'repository', 'value': 'baz' }] result = build_env(branch, owner, repository, site_prefix, base_url, user_env_vars) assert result['BASEURL'] == base_url assert result['REPOSITORY'] == repository assert ('user environment variable name `BASEURL` conflicts' ' with system environment variable, it will be ignored.' ) in mock_stdout.getvalue() assert ('user environment variable name `repository`' ' conflicts with system environment variable, it will be' ' ignored.') in mock_stdout.getvalue()
def test_it_runs_federalist_script_when_it_exists(self, mock_get_logger, mock_run, patch_clone_dir): package_json_contents = json.dumps({ 'scripts': { 'federalist': 'echo hi', }, }) create_file(patch_clone_dir / PACKAGE_JSON, package_json_contents) kwargs = dict(branch='branch', owner='owner', repository='repo', site_prefix='site/prefix', base_url='/site/prefix') result = run_federalist_script(**kwargs) assert result == mock_run.return_value mock_get_logger.assert_called_once_with('run-federalist-script') mock_logger = mock_get_logger.return_value mock_logger.info.assert_called_with( 'Running federalist build script in package.json') mock_run.assert_called_once_with(mock_logger, 'npm run federalist', cwd=patch_clone_dir, env=build_env(*kwargs.values()), node=True)
def test_it_includes_user_env_vars(self): branch = 'branch' owner = 'owner' repository = 'repo' site_prefix = 'prefix' base_url = 'url' user_env_vars = [{'name': 'FOO', 'value': 'bar'}] result = build_env(branch, owner, repository, site_prefix, base_url, user_env_vars) assert result['FOO'] == 'bar'
def test_with_gemfile(self, mock_get_logger, mock_run, patch_clone_dir, patch_site_build_dir): command = 'bundle exec jekyll' create_file(patch_clone_dir / GEMFILE, 'foo') create_file(patch_clone_dir / JEKYLL_CONFIG_YML, 'hi: test') kwargs = dict(branch='branch', owner='owner', repository='repo', site_prefix='site/prefix', base_url='/site/prefix', config=json.dumps(dict(boop='beep'))) result = build_jekyll(**kwargs) assert result == mock_run.return_value mock_get_logger.assert_has_calls( [call('build-jekyll'), call('build-jekyll')]) mock_logger = mock_get_logger.return_value env = build_env(kwargs['branch'], kwargs['owner'], kwargs['repository'], kwargs['site_prefix'], kwargs['base_url']) env['JEKYLL_ENV'] = 'production' mock_run.assert_has_calls([ call( mock_logger, f'echo Building using Jekyll version: $({command} -v)', cwd=patch_clone_dir, env={}, check=True, ruby=True, ), call( mock_logger, f'{command} build --destination {patch_site_build_dir}', cwd=patch_clone_dir, env=env, node=True, ruby=True, ) ])
def test_it_includes_default_values(self): branch = 'branch' owner = 'owner' repository = 'repo' site_prefix = 'prefix' base_url = 'url' result = build_env(branch, owner, repository, site_prefix, base_url) assert result == { 'BRANCH': branch, 'OWNER': owner, 'REPOSITORY': repository, 'SITE_PREFIX': site_prefix, 'BASEURL': base_url, 'LANG': 'en_US.UTF-8', 'GATSBY_TELEMETRY_DISABLED': '1', }
def test_it_calls_hugo_as_expected(self, mock_get_logger, mock_run, patch_working_dir, patch_clone_dir, patch_site_build_dir): hugo_path = patch_working_dir / HUGO_BIN hugo_call = (f'{hugo_path} --source {patch_clone_dir} ' f'--destination {patch_site_build_dir} ' '--baseURL /site/prefix') kwargs = dict(branch='branch', owner='owner', repository='repo', site_prefix='site/prefix', base_url='/site/prefix') result = build_hugo(**kwargs) assert result == mock_run.return_value mock_get_logger.assert_called_once_with('build-hugo') mock_logger = mock_get_logger.return_value mock_logger.info.assert_called_with('Building site with hugo') mock_run.assert_has_calls([ call(mock_logger, f'echo hugo version: $({hugo_path} version)', env={}, check=True), call(mock_logger, hugo_call, cwd=patch_clone_dir, env=build_env(*kwargs.values()), node=True) ])