diff --git a/readthedocs/config/config.py b/readthedocs/config/config.py index 68b4d0f62ca..a51ed0d2679 100644 --- a/readthedocs/config/config.py +++ b/readthedocs/config/config.py @@ -938,13 +938,9 @@ def validate_python(self): ] with self.catch_validation_error('python.system_packages'): - system_packages = self.defaults.get( - 'use_system_packages', - False, - ) system_packages = self.pop_config( 'python.system_packages', - system_packages, + False, ) python['use_system_site_packages'] = validate_bool(system_packages) diff --git a/readthedocs/config/tests/test_config.py b/readthedocs/config/tests/test_config.py index 4068c3c9ced..9850b9c79f2 100644 --- a/readthedocs/config/tests/test_config.py +++ b/readthedocs/config/tests/test_config.py @@ -1604,25 +1604,23 @@ def test_python_system_packages_check_default(self): build.validate() assert build.python.use_system_site_packages is False - def test_python_system_packages_respects_default(self): + def test_python_system_packages_dont_respects_default(self): build = self.get_build_config( {}, {'defaults': {'use_system_packages': True}}, ) build.validate() - assert build.python.use_system_site_packages is True + assert build.python.use_system_site_packages is False def test_python_system_packages_priority_over_default(self): build = self.get_build_config( {'python': {'system_packages': False}}, - {'defaults': {'use_system_packages': True}}, ) build.validate() assert build.python.use_system_site_packages is False build = self.get_build_config( {'python': {'system_packages': True}}, - {'defaults': {'use_system_packages': False}}, ) build.validate() assert build.python.use_system_site_packages is True diff --git a/readthedocs/rtd_tests/tests/test_config_integration.py b/readthedocs/rtd_tests/tests/test_config_integration.py index f8928be5526..c927aa6692b 100644 --- a/readthedocs/rtd_tests/tests/test_config_integration.py +++ b/readthedocs/rtd_tests/tests/test_config_integration.py @@ -767,6 +767,38 @@ def test_system_packages(self, run, checkout_path, tmpdir): assert '--system-site-packages' in args assert config.python.use_system_site_packages + @patch('readthedocs.doc_builder.environments.BuildEnvironment.run') + def test_system_packages_project_overrides(self, run, checkout_path, tmpdir): + + # Define `project.use_system_packages` as if it was marked in the Advanced settings. + self.version.project.use_system_packages = True + self.version.project.save() + + checkout_path.return_value = str(tmpdir) + self.create_config_file( + tmpdir, + { + # Do not define `system_packages: True` in the config file. + 'python': {}, + }, + ) + + update_docs = self.get_update_docs_task() + config = update_docs.config + + python_env = Virtualenv( + version=self.version, + build_env=update_docs.build_env, + config=config, + ) + update_docs.python_env = python_env + update_docs.python_env.setup_base() + + args, kwargs = run.call_args + + assert '--system-site-packages' not in args + assert not config.python.use_system_site_packages + @pytest.mark.parametrize( 'value,result', [