From 58a5c4ff662a19d07b81da4c7b08e851dc2f65c8 Mon Sep 17 00:00:00 2001 From: idle sign Date: Sat, 26 Nov 2016 21:42:27 +0700 Subject: Added tests for config module. --- setuptools/tests/test_config.py | 339 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 setuptools/tests/test_config.py (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py new file mode 100644 index 00000000..0ef7a994 --- /dev/null +++ b/setuptools/tests/test_config.py @@ -0,0 +1,339 @@ +import contextlib +import pytest +from distutils.errors import DistutilsOptionError +from setuptools.dist import Distribution +from setuptools.config import ConfigHandler + + +class ErrConfigHandler(ConfigHandler): + """Erroneous handler. Fails to implement required methods.""" + + +def fake_env(tmpdir, setup_cfg, setup_py=None): + + if setup_py is None: + setup_py = ( + 'from setuptools import setup\n' + 'setup()\n' + ) + + tmpdir.join('setup.py').write(setup_py) + tmpdir.join('setup.cfg').write(setup_cfg) + + package_name = 'fake_package' + dir_package = tmpdir.mkdir(package_name) + dir_package.join('__init__.py').write( + 'VERSION = (1, 2, 3)\n' + '\n' + 'VERSION_MAJOR = 1' + '\n' + 'def get_version():\n' + ' return [3, 4, 5, "dev"]\n' + '\n' + ) + + +@contextlib.contextmanager +def get_dist(tmpdir, kwargs_initial=None, parse=True): + kwargs_initial = kwargs_initial or {} + + with tmpdir.as_cwd(): + dist = Distribution(kwargs_initial) + dist.script_name = 'setup.py' + parse and dist.parse_config_files() + + yield dist + + +def test_parsers_implemented(): + + with pytest.raises(NotImplementedError): + handler = ErrConfigHandler(None, {}) + handler.parsers + + +class TestMetadata: + + def test_basic(self, tmpdir): + + fake_env( + tmpdir, + '[metadata]\n' + 'version = 10.1.1\n' + 'description = Some description\n' + 'long_description = file: README\n' + 'name = fake_name\n' + 'keywords = one, two\n' + 'provides = package, package.sub\n' + 'license = otherlic\n' + ) + + tmpdir.join('README').write('readme contents\nline2') + + meta_initial = { + # This will be used so `otherlic` won't replace it. + 'license': 'BSD 3-Clause License', + } + + with get_dist(tmpdir, meta_initial) as dist: + metadata = dist.metadata + + assert metadata.version == '10.1.1' + assert metadata.description == 'Some description' + assert metadata.long_description == 'readme contents\nline2' + assert metadata.provides == ['package', 'package.sub'] + assert metadata.license == 'BSD 3-Clause License' + assert metadata.name == 'fake_name' + assert metadata.keywords == ['one', 'two'] + + def test_version(self, tmpdir): + + fake_env( + tmpdir, + '[metadata]\n' + 'version = attr: fake_package.VERSION\n' + ) + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '1.2.3' + + tmpdir.join('setup.cfg').write( + '[metadata]\n' + 'version = attr: fake_package.get_version\n' + ) + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '3.4.5.dev' + + tmpdir.join('setup.cfg').write( + '[metadata]\n' + 'version = attr: fake_package.VERSION_MAJOR\n' + ) + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '1' + + subpack = tmpdir.join('fake_package').mkdir('subpackage') + subpack.join('__init__.py').write('') + subpack.join('submodule.py').write('VERSION = (2016, 11, 26)') + + tmpdir.join('setup.cfg').write( + '[metadata]\n' + 'version = attr: fake_package.subpackage.submodule.VERSION\n' + ) + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '2016.11.26' + + def test_unknown_meta_item(self, tmpdir): + + fake_env( + tmpdir, + '[metadata]\n' + 'name = fake_name\n' + 'unknown = some\n' + ) + with get_dist(tmpdir, parse=False) as dist: + with pytest.raises(DistutilsOptionError): + dist.parse_config_files() + + def test_usupported_section(self, tmpdir): + + fake_env( + tmpdir, + '[metadata:some]\n' + 'key = val\n' + ) + with get_dist(tmpdir, parse=False) as dist: + with pytest.raises(DistutilsOptionError): + dist.parse_config_files() + + def test_classifiers(self, tmpdir): + expected = { + 'Framework :: Django', + 'Programming Language :: Python :: 3.5', + } + + # From file. + fake_env( + tmpdir, + '[metadata]\n' + 'classifiers = file: classifiers\n' + ) + + tmpdir.join('classifiers').write( + 'Framework :: Django\n' + 'Programming Language :: Python :: 3.5\n' + ) + + with get_dist(tmpdir) as dist: + assert set(dist.metadata.classifiers) == expected + + # From section. + tmpdir.join('setup.cfg').write( + '[metadata:classifiers]\n' + 'Framework :: Django\n' + 'Programming Language :: Python :: 3.5\n' + ) + + with get_dist(tmpdir) as dist: + assert set(dist.metadata.classifiers) == expected + + +class TestOptions: + + def test_basic(self, tmpdir): + + fake_env( + tmpdir, + '[options]\n' + 'zip_safe = True\n' + 'use_2to3 = 1\n' + 'include_package_data = yes\n' + 'package_dir = b=c, =src\n' + 'packages = pack_a, pack_b.subpack\n' + 'namespace_packages = pack1, pack2\n' + 'use_2to3_fixers = your.fixers, or.here\n' + 'use_2to3_exclude_fixers = one.here, two.there\n' + 'convert_2to3_doctests = src/tests/one.txt, src/two.txt\n' + 'scripts = bin/one.py, bin/two.py\n' + 'eager_resources = bin/one.py, bin/two.py\n' + 'install_requires = docutils>=0.3; pack ==1.1, ==1.3; hey\n' + 'tests_require = mock==0.7.2; pytest\n' + 'setup_requires = docutils>=0.3; spack ==1.1, ==1.3; there\n' + 'dependency_links = http://some.com/here/1, ' + 'http://some.com/there/2\n' + ) + with get_dist(tmpdir) as dist: + assert dist.zip_safe + assert dist.use_2to3 + assert dist.include_package_data + assert dist.package_dir == {'': 'src', 'b': 'c'} + assert set(dist.packages) == {'pack_a', 'pack_b.subpack'} + assert set(dist.namespace_packages) == {'pack1', 'pack2'} + assert set(dist.use_2to3_fixers) == {'your.fixers', 'or.here'} + assert set(dist.use_2to3_exclude_fixers) == { + 'one.here', 'two.there'} + assert set(dist.convert_2to3_doctests) == { + 'src/tests/one.txt', 'src/two.txt'} + assert set(dist.scripts) == {'bin/one.py', 'bin/two.py'} + assert set(dist.dependency_links) == { + 'http://some.com/here/1', + 'http://some.com/there/2' + } + assert set(dist.install_requires) == { + 'docutils>=0.3', + 'pack ==1.1, ==1.3', + 'hey' + } + assert set(dist.setup_requires) == { + 'docutils>=0.3', + 'spack ==1.1, ==1.3', + 'there' + } + assert set(dist.tests_require) == { + 'mock==0.7.2', + 'pytest' + } + + def test_package_dir_fail(self, tmpdir): + fake_env( + tmpdir, + '[options]\n' + 'package_dir = a b\n' + ) + with get_dist(tmpdir, parse=False) as dist: + with pytest.raises(DistutilsOptionError): + dist.parse_config_files() + + def test_package_data(self, tmpdir): + fake_env( + tmpdir, + '[options:package_data]\n' + '* = *.txt, *.rst\n' + 'hello = *.msg\n' + '\n' + '[options:exclude_package_data]\n' + '* = fake1.txt, fake2.txt\n' + 'hello = *.dat\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.package_data == { + '': ['*.txt', '*.rst'], + 'hello': ['*.msg'], + } + assert dist.exclude_package_data == { + '': ['fake1.txt', 'fake2.txt'], + 'hello': ['*.dat'], + } + + def test_packages(self, tmpdir): + fake_env( + tmpdir, + '[options]\n' + 'packages = find:\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.packages == ['fake_package'] + + def test_extras_require(self, tmpdir): + fake_env( + tmpdir, + '[options:extras_require]\n' + 'pdf = ReportLab>=1.2; RXP\n' + 'rest = docutils>=0.3; pack ==1.1, ==1.3\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.extras_require == { + 'pdf': ['ReportLab>=1.2', 'RXP'], + 'rest': ['docutils>=0.3', 'pack ==1.1, ==1.3'] + } + + def test_entry_points(self, tmpdir): + fake_env( + tmpdir, + '[options:entry_points]\n' + 'group1 = point1 = pack.module:func, ' + '.point2 = pack.module2:func_rest [rest]\n' + 'group2 = point3 = pack.module:func2\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.entry_points == { + 'group1': [ + 'point1 = pack.module:func', + '.point2 = pack.module2:func_rest [rest]', + ], + 'group2': ['point3 = pack.module:func2'] + } + + expected = ( + '[blogtool.parsers]\n' + '.rst = some.nested.module:SomeClass.some_classmethod[reST]\n' + ) + + tmpdir.join('entry_points').write(expected) + + # From file. + tmpdir.join('setup.cfg').write( + '[options]\n' + 'entry_points = file: entry_points\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.entry_points == expected + + def test_dependency_links(self, tmpdir): + expected = { + 'http://some.com/here/1', + 'http://some.com/there/2' + } + # From section. + fake_env( + tmpdir, + '[options:dependency_links]\n' + '1 = http://some.com/here/1\n' + '2 = http://some.com/there/2\n' + ) + + with get_dist(tmpdir) as dist: + assert set(dist.dependency_links) == expected -- cgit v1.2.3 From 280d8e98ba0c3c4e37e38dff79aaf6e9efaf4175 Mon Sep 17 00:00:00 2001 From: idle sign Date: Sat, 26 Nov 2016 22:21:38 +0700 Subject: Tests for config module 2.6 compatible. --- setuptools/tests/test_config.py | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 0ef7a994..d044cbac 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -145,10 +145,10 @@ class TestMetadata: dist.parse_config_files() def test_classifiers(self, tmpdir): - expected = { + expected = set([ 'Framework :: Django', 'Programming Language :: Python :: 3.5', - } + ]) # From file. fake_env( @@ -205,32 +205,32 @@ class TestOptions: assert dist.use_2to3 assert dist.include_package_data assert dist.package_dir == {'': 'src', 'b': 'c'} - assert set(dist.packages) == {'pack_a', 'pack_b.subpack'} - assert set(dist.namespace_packages) == {'pack1', 'pack2'} - assert set(dist.use_2to3_fixers) == {'your.fixers', 'or.here'} - assert set(dist.use_2to3_exclude_fixers) == { - 'one.here', 'two.there'} - assert set(dist.convert_2to3_doctests) == { - 'src/tests/one.txt', 'src/two.txt'} - assert set(dist.scripts) == {'bin/one.py', 'bin/two.py'} - assert set(dist.dependency_links) == { + assert set(dist.packages) == set(['pack_a', 'pack_b.subpack']) + assert set(dist.namespace_packages) == set(['pack1', 'pack2']) + assert set(dist.use_2to3_fixers) == set(['your.fixers', 'or.here']) + assert set(dist.use_2to3_exclude_fixers) == set([ + 'one.here', 'two.there']) + assert set(dist.convert_2to3_doctests) == set([ + 'src/tests/one.txt', 'src/two.txt']) + assert set(dist.scripts) == set(['bin/one.py', 'bin/two.py']) + assert set(dist.dependency_links) == set([ 'http://some.com/here/1', 'http://some.com/there/2' - } - assert set(dist.install_requires) == { + ]) + assert set(dist.install_requires) == set([ 'docutils>=0.3', 'pack ==1.1, ==1.3', 'hey' - } - assert set(dist.setup_requires) == { + ]) + assert set(dist.setup_requires) == set([ 'docutils>=0.3', 'spack ==1.1, ==1.3', 'there' - } - assert set(dist.tests_require) == { + ]) + assert set(dist.tests_require) == set([ 'mock==0.7.2', 'pytest' - } + ]) def test_package_dir_fail(self, tmpdir): fake_env( @@ -323,10 +323,10 @@ class TestOptions: assert dist.entry_points == expected def test_dependency_links(self, tmpdir): - expected = { + expected = set([ 'http://some.com/here/1', 'http://some.com/there/2' - } + ]) # From section. fake_env( tmpdir, -- cgit v1.2.3 From 810eb439a629e1b2bc2d078f138126356e95a9bc Mon Sep 17 00:00:00 2001 From: idle sign Date: Sun, 4 Dec 2016 10:41:54 +0700 Subject: Added ConfigHandler.strict_mode. --- setuptools/tests/test_config.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index d044cbac..f1b1aa3f 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -130,8 +130,7 @@ class TestMetadata: 'unknown = some\n' ) with get_dist(tmpdir, parse=False) as dist: - with pytest.raises(DistutilsOptionError): - dist.parse_config_files() + dist.parse_config_files() # Skip unknown. def test_usupported_section(self, tmpdir): @@ -274,6 +273,18 @@ class TestOptions: with get_dist(tmpdir) as dist: assert dist.packages == ['fake_package'] + def test_unknown_options_item(self, tmpdir): + + fake_env( + tmpdir, + '[options]\n' + 'zip_safe = True\n' + 'usr_2to3 = 1\n' + ) + with get_dist(tmpdir, parse=False) as dist: + with pytest.raises(DistutilsOptionError): + dist.parse_config_files() + def test_extras_require(self, tmpdir): fake_env( tmpdir, -- cgit v1.2.3 From a5567b762cfe48a8e5a4aada5a997e5fd8072420 Mon Sep 17 00:00:00 2001 From: idle sign Date: Sun, 4 Dec 2016 11:05:11 +0700 Subject: Implemented proper dangling option values support. --- setuptools/tests/test_config.py | 111 +++++++++++++++++++++++++++++++++++----- 1 file changed, 98 insertions(+), 13 deletions(-) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index f1b1aa3f..b4bd089c 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -86,6 +86,27 @@ class TestMetadata: assert metadata.name == 'fake_name' assert metadata.keywords == ['one', 'two'] + def test_multiline(self, tmpdir): + + fake_env( + tmpdir, + '[metadata]\n' + 'name = fake_name\n' + 'keywords =\n' + ' one\n' + ' two\n' + 'classifiers =\n' + ' Framework :: Django\n' + ' Programming Language :: Python :: 3.5\n' + ) + with get_dist(tmpdir) as dist: + metadata = dist.metadata + assert metadata.keywords == ['one', 'two'] + assert metadata.classifiers == [ + 'Framework :: Django', + 'Programming Language :: Python :: 3.5', + ] + def test_version(self, tmpdir): fake_env( @@ -204,32 +225,96 @@ class TestOptions: assert dist.use_2to3 assert dist.include_package_data assert dist.package_dir == {'': 'src', 'b': 'c'} - assert set(dist.packages) == set(['pack_a', 'pack_b.subpack']) - assert set(dist.namespace_packages) == set(['pack1', 'pack2']) - assert set(dist.use_2to3_fixers) == set(['your.fixers', 'or.here']) - assert set(dist.use_2to3_exclude_fixers) == set([ - 'one.here', 'two.there']) - assert set(dist.convert_2to3_doctests) == set([ + assert dist.packages == ['pack_a', 'pack_b.subpack'] + assert dist.namespace_packages == ['pack1', 'pack2'] + assert dist.use_2to3_fixers == ['your.fixers', 'or.here'] + assert dist.use_2to3_exclude_fixers == ['one.here', 'two.there'] + assert dist.convert_2to3_doctests == ([ 'src/tests/one.txt', 'src/two.txt']) - assert set(dist.scripts) == set(['bin/one.py', 'bin/two.py']) - assert set(dist.dependency_links) == set([ + assert dist.scripts == ['bin/one.py', 'bin/two.py'] + assert dist.dependency_links == ([ 'http://some.com/here/1', 'http://some.com/there/2' ]) - assert set(dist.install_requires) == set([ + assert dist.install_requires == ([ 'docutils>=0.3', 'pack ==1.1, ==1.3', 'hey' ]) - assert set(dist.setup_requires) == set([ + assert dist.setup_requires == ([ 'docutils>=0.3', 'spack ==1.1, ==1.3', 'there' ]) - assert set(dist.tests_require) == set([ - 'mock==0.7.2', - 'pytest' + assert dist.tests_require == ['mock==0.7.2', 'pytest'] + + def test_multiline(self, tmpdir): + fake_env( + tmpdir, + '[options]\n' + 'package_dir = \n' + ' b=c\n' + ' =src\n' + 'packages = \n' + ' pack_a\n' + ' pack_b.subpack\n' + 'namespace_packages = \n' + ' pack1\n' + ' pack2\n' + 'use_2to3_fixers = \n' + ' your.fixers\n' + ' or.here\n' + 'use_2to3_exclude_fixers = \n' + ' one.here\n' + ' two.there\n' + 'convert_2to3_doctests = \n' + ' src/tests/one.txt\n' + ' src/two.txt\n' + 'scripts = \n' + ' bin/one.py\n' + ' bin/two.py\n' + 'eager_resources = \n' + ' bin/one.py\n' + ' bin/two.py\n' + 'install_requires = \n' + ' docutils>=0.3\n' + ' pack ==1.1, ==1.3\n' + ' hey\n' + 'tests_require = \n' + ' mock==0.7.2\n' + ' pytest\n' + 'setup_requires = \n' + ' docutils>=0.3\n' + ' spack ==1.1, ==1.3\n' + ' there\n' + 'dependency_links = \n' + ' http://some.com/here/1\n' + ' http://some.com/there/2\n' + ) + with get_dist(tmpdir) as dist: + assert dist.package_dir == {'': 'src', 'b': 'c'} + assert dist.packages == ['pack_a', 'pack_b.subpack'] + assert dist.namespace_packages == ['pack1', 'pack2'] + assert dist.use_2to3_fixers == ['your.fixers', 'or.here'] + assert dist.use_2to3_exclude_fixers == ['one.here', 'two.there'] + assert dist.convert_2to3_doctests == ( + ['src/tests/one.txt', 'src/two.txt']) + assert dist.scripts == ['bin/one.py', 'bin/two.py'] + assert dist.dependency_links == ([ + 'http://some.com/here/1', + 'http://some.com/there/2' + ]) + assert dist.install_requires == ([ + 'docutils>=0.3', + 'pack ==1.1, ==1.3', + 'hey' + ]) + assert dist.setup_requires == ([ + 'docutils>=0.3', + 'spack ==1.1, ==1.3', + 'there' ]) + assert dist.tests_require == ['mock==0.7.2', 'pytest'] def test_package_dir_fail(self, tmpdir): fake_env( -- cgit v1.2.3 From 49fc619dd4bc059ae823054f586753ebf35edeee Mon Sep 17 00:00:00 2001 From: idle sign Date: Sun, 4 Dec 2016 11:25:48 +0700 Subject: `dependency_links` as section not supported. --- setuptools/tests/test_config.py | 16 ---------------- 1 file changed, 16 deletions(-) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index b4bd089c..bfc863ec 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -417,19 +417,3 @@ class TestOptions: with get_dist(tmpdir) as dist: assert dist.entry_points == expected - - def test_dependency_links(self, tmpdir): - expected = set([ - 'http://some.com/here/1', - 'http://some.com/there/2' - ]) - # From section. - fake_env( - tmpdir, - '[options:dependency_links]\n' - '1 = http://some.com/here/1\n' - '2 = http://some.com/there/2\n' - ) - - with get_dist(tmpdir) as dist: - assert set(dist.dependency_links) == expected -- cgit v1.2.3 From 68c03bee07c55a9c337f1cb98fc102a3710add4b Mon Sep 17 00:00:00 2001 From: idle sign Date: Sun, 4 Dec 2016 16:22:07 +0700 Subject: Section names now dot-separated to mimic .toml table names. --- setuptools/tests/test_config.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index bfc863ec..e53b5ffd 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -157,7 +157,7 @@ class TestMetadata: fake_env( tmpdir, - '[metadata:some]\n' + '[metadata.some]\n' 'key = val\n' ) with get_dist(tmpdir, parse=False) as dist: @@ -187,7 +187,7 @@ class TestMetadata: # From section. tmpdir.join('setup.cfg').write( - '[metadata:classifiers]\n' + '[metadata.classifiers]\n' 'Framework :: Django\n' 'Programming Language :: Python :: 3.5\n' ) @@ -329,11 +329,11 @@ class TestOptions: def test_package_data(self, tmpdir): fake_env( tmpdir, - '[options:package_data]\n' + '[options.package_data]\n' '* = *.txt, *.rst\n' 'hello = *.msg\n' '\n' - '[options:exclude_package_data]\n' + '[options.exclude_package_data]\n' '* = fake1.txt, fake2.txt\n' 'hello = *.dat\n' ) @@ -373,9 +373,11 @@ class TestOptions: def test_extras_require(self, tmpdir): fake_env( tmpdir, - '[options:extras_require]\n' + '[options.extras_require]\n' 'pdf = ReportLab>=1.2; RXP\n' - 'rest = docutils>=0.3; pack ==1.1, ==1.3\n' + 'rest = \n' + ' docutils>=0.3\n' + ' pack ==1.1, ==1.3\n' ) with get_dist(tmpdir) as dist: @@ -387,7 +389,7 @@ class TestOptions: def test_entry_points(self, tmpdir): fake_env( tmpdir, - '[options:entry_points]\n' + '[options.entry_points]\n' 'group1 = point1 = pack.module:func, ' '.point2 = pack.module2:func_rest [rest]\n' 'group2 = point3 = pack.module:func2\n' -- cgit v1.2.3 From 21333fe86db1888dbee134043ea8a2f85b69d439 Mon Sep 17 00:00:00 2001 From: idle sign Date: Sun, 4 Dec 2016 17:11:37 +0700 Subject: Added `metadata` section aliases. --- setuptools/tests/test_config.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index e53b5ffd..3fabfb94 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -86,6 +86,31 @@ class TestMetadata: assert metadata.name == 'fake_name' assert metadata.keywords == ['one', 'two'] + def test_aliases(self, tmpdir): + + fake_env( + tmpdir, + '[metadata]\n' + 'author-email = test@test.com\n' + 'home_page = http://test.test.com/test/\n' + 'summary = Short summary\n' + 'platform = a, b\n' + 'classifier =\n' + ' Framework :: Django\n' + ' Programming Language :: Python :: 3.5\n' + ) + + with get_dist(tmpdir) as dist: + metadata = dist.metadata + assert metadata.author_email == 'test@test.com' + assert metadata.url == 'http://test.test.com/test/' + assert metadata.description == 'Short summary' + assert metadata.platforms == ['a', 'b'] + assert metadata.classifiers == [ + 'Framework :: Django', + 'Programming Language :: Python :: 3.5', + ] + def test_multiline(self, tmpdir): fake_env( -- cgit v1.2.3 From 8998172299cd562c937e83383e9fb666e6209b30 Mon Sep 17 00:00:00 2001 From: idle sign Date: Sun, 4 Dec 2016 17:24:05 +0700 Subject: `metadata` aliases update. --- setuptools/tests/test_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 3fabfb94..08c5bd19 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -92,7 +92,7 @@ class TestMetadata: tmpdir, '[metadata]\n' 'author-email = test@test.com\n' - 'home_page = http://test.test.com/test/\n' + 'home-page = http://test.test.com/test/\n' 'summary = Short summary\n' 'platform = a, b\n' 'classifier =\n' -- cgit v1.2.3 From af321fc6ad82c54a78e7c1a74601e0a6b34997da Mon Sep 17 00:00:00 2001 From: idle sign Date: Mon, 5 Dec 2016 21:55:48 +0700 Subject: `file:` directive sandboxed. --- setuptools/tests/test_config.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 08c5bd19..9fb55b06 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -86,6 +86,18 @@ class TestMetadata: assert metadata.name == 'fake_name' assert metadata.keywords == ['one', 'two'] + def test_file_sandboxed(self, tmpdir): + + fake_env( + tmpdir, + '[metadata]\n' + 'long_description = file: ../../README\n' + ) + + with get_dist(tmpdir, parse=False) as dist: + with pytest.raises(DistutilsOptionError): + dist.parse_config_files() # file: out of sandbox + def test_aliases(self, tmpdir): fake_env( -- cgit v1.2.3 From acaece809ee3592c0d135a9a0a8e556db0a9e587 Mon Sep 17 00:00:00 2001 From: idle sign Date: Mon, 5 Dec 2016 22:07:16 +0700 Subject: Tests and docstrings update. --- setuptools/tests/test_config.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 9fb55b06..259a396a 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -66,6 +66,8 @@ class TestMetadata: 'keywords = one, two\n' 'provides = package, package.sub\n' 'license = otherlic\n' + 'download_url = http://test.test.com/test/\n' + 'maintainer_email = test@test.com\n' ) tmpdir.join('README').write('readme contents\nline2') @@ -85,6 +87,8 @@ class TestMetadata: assert metadata.license == 'BSD 3-Clause License' assert metadata.name == 'fake_name' assert metadata.keywords == ['one', 'two'] + assert metadata.download_url == 'http://test.test.com/test/' + assert metadata.maintainer_email == 'test@test.com' def test_file_sandboxed(self, tmpdir): -- cgit v1.2.3 From 163f36449c2b8c19c272414bff0bf80c9f3f2c7d Mon Sep 17 00:00:00 2001 From: idle sign Date: Mon, 5 Dec 2016 23:13:35 +0700 Subject: Added API functions. --- setuptools/tests/test_config.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 259a396a..cd646dba 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -2,7 +2,7 @@ import contextlib import pytest from distutils.errors import DistutilsOptionError from setuptools.dist import Distribution -from setuptools.config import ConfigHandler +from setuptools.config import ConfigHandler, read_configuration class ErrConfigHandler(ConfigHandler): @@ -52,6 +52,24 @@ def test_parsers_implemented(): handler.parsers +class TestConfigurationReader: + + def test_basic(self, tmpdir): + fake_env( + tmpdir, + '[metadata]\n' + 'version = 10.1.1\n' + 'keywords = one, two\n' + '\n' + '[options]\n' + 'scripts = bin/a.py, bin/b.py\n' + ) + config_dict = read_configuration('%s' % tmpdir.join('setup.cfg')) + assert config_dict['metadata']['version'] == '10.1.1' + assert config_dict['metadata']['keywords'] == ['one', 'two'] + assert config_dict['options']['scripts'] == ['bin/a.py', 'bin/b.py'] + + class TestMetadata: def test_basic(self, tmpdir): -- cgit v1.2.3 From 6aae9fb3f2bf222466fc2fd0db5e22760c6239c6 Mon Sep 17 00:00:00 2001 From: idle sign Date: Mon, 5 Dec 2016 23:15:36 +0700 Subject: `strict_mode` removed to improve forward compatibility. --- setuptools/tests/test_config.py | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'setuptools/tests') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index cd646dba..2e8510be 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -417,18 +417,6 @@ class TestOptions: with get_dist(tmpdir) as dist: assert dist.packages == ['fake_package'] - def test_unknown_options_item(self, tmpdir): - - fake_env( - tmpdir, - '[options]\n' - 'zip_safe = True\n' - 'usr_2to3 = 1\n' - ) - with get_dist(tmpdir, parse=False) as dist: - with pytest.raises(DistutilsOptionError): - dist.parse_config_files() - def test_extras_require(self, tmpdir): fake_env( tmpdir, -- cgit v1.2.3 From a9350f32d3eeef3a1c53b243e763e60e211b72f6 Mon Sep 17 00:00:00 2001 From: idle sign Date: Wed, 7 Dec 2016 20:21:31 +0700 Subject: `read_configuration` now chdirs and tests for file. --- setuptools/tests/test_config.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'setuptools/tests') 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: -- cgit v1.2.3