aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoridle sign <idlesign@yandex.ru>2016-12-07 20:21:31 +0700
committeridle sign <idlesign@yandex.ru>2016-12-07 20:21:31 +0700
commita9350f32d3eeef3a1c53b243e763e60e211b72f6 (patch)
tree76961552c885204d1cff6687d7a9396a7736d66f
parent43af23dcff02695ef77b862d2266d10019b7c67c (diff)
downloadexternal_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.py13
-rw-r--r--setuptools/tests/test_config.py6
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: