Exemple #1
0
    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()
Exemple #2
0
    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)
Exemple #3
0
    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'
Exemple #4
0
    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,
            )
        ])
Exemple #5
0
    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',
        }
Exemple #6
0
    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)
        ])