diff --git a/readthedocs_build/config/config.py b/readthedocs_build/config/config.py index 7d695a0..63c8e69 100644 --- a/readthedocs_build/config/config.py +++ b/readthedocs_build/config/config.py @@ -155,6 +155,8 @@ def validate(self): self.validate_requirements_file() self.validate_conf_file() + self.validate_pdflatex() + def validate_output_base(self): assert 'output_base' in self.env_config, ( '"output_base" required in "env_config"') @@ -291,6 +293,13 @@ def validate_conda(self): self['conda'] = conda + def validate_pdflatex(self): + if 'pdflatex' not in self.raw_config: + self['pdflatex'] = 'pdflatex' + else: + with self.catch_validation_error('pdflatex'): + self['pdflatex'] = validate_string(self.raw_config['pdflatex']) + def validate_requirements_file(self): if 'requirements_file' not in self.raw_config: return None diff --git a/readthedocs_build/config/test_config.py b/readthedocs_build/config/test_config.py index 5fc04f6..52d392b 100644 --- a/readthedocs_build/config/test_config.py +++ b/readthedocs_build/config/test_config.py @@ -204,6 +204,25 @@ def it_uses_validate_string(validate_string): validate_string.assert_any_call('tests') +def describe_validate_pdflatex(): + def it_defaults_to_pdflatex(): + build = get_build_config({'python': {}}) + build.validate_pdflatex() + assert build['pdflatex'] == 'pdflatex' + + def it_validates_is_a_string(): + build = get_build_config({'pdflatex': ['invalid']}) + with raises(InvalidConfig) as excinfo: + build.validate_pdflatex() + assert excinfo.value.key == 'pdflatex' + assert excinfo.value.code == INVALID_STRING + + def it_gets_set_correctly(): + build = get_build_config({'pdflatex': 'xelatex'}) + build.validate_pdflatex() + assert build['pdflatex'] == 'xelatex' + + def describe_validate_use_system_site_packages(): def it_defaults_to_false(): build = get_build_config({'python': {}})