diff options
author | idle sign <idlesign@yandex.ru> | 2016-12-07 20:21:31 +0700 |
---|---|---|
committer | idle sign <idlesign@yandex.ru> | 2016-12-07 20:21:31 +0700 |
commit | a9350f32d3eeef3a1c53b243e763e60e211b72f6 (patch) | |
tree | 76961552c885204d1cff6687d7a9396a7736d66f | |
parent | 43af23dcff02695ef77b862d2266d10019b7c67c (diff) | |
download | external_python_setuptools-a9350f32d3eeef3a1c53b243e763e60e211b72f6.tar.gz external_python_setuptools-a9350f32d3eeef3a1c53b243e763e60e211b72f6.tar.bz2 external_python_setuptools-a9350f32d3eeef3a1c53b243e763e60e211b72f6.zip |
`read_configuration` now chdirs and tests for file.
-rw-r--r-- | setuptools/config.py | 13 | ||||
-rw-r--r-- | setuptools/tests/test_config.py | 6 |
2 files changed, 17 insertions, 2 deletions
diff --git a/setuptools/config.py b/setuptools/config.py index b2c0cea3..889dc683 100644 --- a/setuptools/config.py +++ b/setuptools/config.py @@ -5,7 +5,7 @@ import sys from collections import defaultdict from functools import partial -from distutils.errors import DistutilsOptionError +from distutils.errors import DistutilsOptionError, DistutilsFileError from setuptools.py26compat import import_module from setuptools.extern.six import string_types @@ -23,6 +23,15 @@ def read_configuration(filepath, find_others=False): """ from setuptools.dist import Distribution, _Distribution + filepath = os.path.abspath(filepath) + + if not os.path.isfile(filepath): + raise DistutilsFileError( + 'Configuration file %s does not exist.' % filepath) + + current_directory = os.getcwd() + os.chdir(os.path.dirname(filepath)) + dist = Distribution() filenames = dist.find_config_files() if find_others else [] @@ -33,6 +42,8 @@ def read_configuration(filepath, find_others=False): handlers = parse_configuration(dist, dist.command_options) + os.chdir(current_directory) + return configuration_to_dict(handlers) diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 2e8510be..21487720 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -1,6 +1,6 @@ import contextlib import pytest -from distutils.errors import DistutilsOptionError +from distutils.errors import DistutilsOptionError, DistutilsFileError from setuptools.dist import Distribution from setuptools.config import ConfigHandler, read_configuration @@ -69,6 +69,10 @@ class TestConfigurationReader: assert config_dict['metadata']['keywords'] == ['one', 'two'] assert config_dict['options']['scripts'] == ['bin/a.py', 'bin/b.py'] + def test_no_config(self, tmpdir): + with pytest.raises(DistutilsFileError): + read_configuration('%s' % tmpdir.join('setup.cfg')) + class TestMetadata: |