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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 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/test_config.py') 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.1 From 56dea7f0334f60603d4ca6a884ca523fe3389ef3 Mon Sep 17 00:00:00 2001 From: idle sign Date: Sat, 10 Dec 2016 12:06:26 +0700 Subject: `read_configuration()` now accepts `ignore_option_errors`. --- setuptools/tests/test_config.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 21487720..aaf78aef 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -73,6 +73,22 @@ class TestConfigurationReader: with pytest.raises(DistutilsFileError): read_configuration('%s' % tmpdir.join('setup.cfg')) + def test_ignore_errors(self, tmpdir): + fake_env( + tmpdir, + '[metadata]\n' + 'version = attr: none.VERSION\n' + 'keywords = one, two\n' + ) + with pytest.raises(ImportError): + read_configuration('%s' % tmpdir.join('setup.cfg')) + + config_dict = read_configuration( + '%s' % tmpdir.join('setup.cfg'), ignore_option_errors=True) + + assert config_dict['metadata']['keywords'] == ['one', 'two'] + assert 'version' not in config_dict['metadata'] + class TestMetadata: -- cgit v1.2.1 From b73891f82d5f1a353a2ad0090b1f5edece921508 Mon Sep 17 00:00:00 2001 From: idle sign Date: Sat, 10 Dec 2016 12:30:24 +0700 Subject: config tests refactored. --- setuptools/tests/test_config.py | 43 +++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 17 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index aaf78aef..35bdbad1 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -9,6 +9,13 @@ class ErrConfigHandler(ConfigHandler): """Erroneous handler. Fails to implement required methods.""" +def make_package_dir(name, base_dir): + dir_package = base_dir.mkdir(name) + init_file = dir_package.join('__init__.py') + init_file.write('') + return dir_package, init_file + + def fake_env(tmpdir, setup_cfg, setup_py=None): if setup_py is None: @@ -18,11 +25,12 @@ def fake_env(tmpdir, setup_cfg, setup_py=None): ) tmpdir.join('setup.py').write(setup_py) - tmpdir.join('setup.cfg').write(setup_cfg) + config = tmpdir.join('setup.cfg') + config.write(setup_cfg) + + package_dir, init_file = make_package_dir('fake_package', tmpdir) - package_name = 'fake_package' - dir_package = tmpdir.mkdir(package_name) - dir_package.join('__init__.py').write( + init_file.write( 'VERSION = (1, 2, 3)\n' '\n' 'VERSION_MAJOR = 1' @@ -31,6 +39,7 @@ def fake_env(tmpdir, setup_cfg, setup_py=None): ' return [3, 4, 5, "dev"]\n' '\n' ) + return package_dir, config @contextlib.contextmanager @@ -55,7 +64,7 @@ def test_parsers_implemented(): class TestConfigurationReader: def test_basic(self, tmpdir): - fake_env( + _, config = fake_env( tmpdir, '[metadata]\n' 'version = 10.1.1\n' @@ -64,7 +73,7 @@ class TestConfigurationReader: '[options]\n' 'scripts = bin/a.py, bin/b.py\n' ) - config_dict = read_configuration('%s' % tmpdir.join('setup.cfg')) + config_dict = read_configuration('%s' % config) 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'] @@ -74,17 +83,17 @@ class TestConfigurationReader: read_configuration('%s' % tmpdir.join('setup.cfg')) def test_ignore_errors(self, tmpdir): - fake_env( + _, config = fake_env( tmpdir, '[metadata]\n' 'version = attr: none.VERSION\n' 'keywords = one, two\n' ) with pytest.raises(ImportError): - read_configuration('%s' % tmpdir.join('setup.cfg')) + read_configuration('%s' % config) config_dict = read_configuration( - '%s' % tmpdir.join('setup.cfg'), ignore_option_errors=True) + '%s' % config, ignore_option_errors=True) assert config_dict['metadata']['keywords'] == ['one', 'two'] assert 'version' not in config_dict['metadata'] @@ -188,7 +197,7 @@ class TestMetadata: def test_version(self, tmpdir): - fake_env( + _, config = fake_env( tmpdir, '[metadata]\n' 'version = attr: fake_package.VERSION\n' @@ -196,14 +205,14 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '1.2.3' - tmpdir.join('setup.cfg').write( + config.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( + config.write( '[metadata]\n' 'version = attr: fake_package.VERSION_MAJOR\n' ) @@ -214,7 +223,7 @@ class TestMetadata: subpack.join('__init__.py').write('') subpack.join('submodule.py').write('VERSION = (2016, 11, 26)') - tmpdir.join('setup.cfg').write( + config.write( '[metadata]\n' 'version = attr: fake_package.subpackage.submodule.VERSION\n' ) @@ -250,7 +259,7 @@ class TestMetadata: ]) # From file. - fake_env( + _, config = fake_env( tmpdir, '[metadata]\n' 'classifiers = file: classifiers\n' @@ -265,7 +274,7 @@ class TestMetadata: assert set(dist.metadata.classifiers) == expected # From section. - tmpdir.join('setup.cfg').write( + config.write( '[metadata.classifiers]\n' 'Framework :: Django\n' 'Programming Language :: Python :: 3.5\n' @@ -454,7 +463,7 @@ class TestOptions: } def test_entry_points(self, tmpdir): - fake_env( + _, config = fake_env( tmpdir, '[options.entry_points]\n' 'group1 = point1 = pack.module:func, ' @@ -479,7 +488,7 @@ class TestOptions: tmpdir.join('entry_points').write(expected) # From file. - tmpdir.join('setup.cfg').write( + config.write( '[options]\n' 'entry_points = file: entry_points\n' ) -- cgit v1.2.1 From a262947e39e6125ee15d3752a2124acf0c62bda6 Mon Sep 17 00:00:00 2001 From: idle sign Date: Sat, 10 Dec 2016 13:33:57 +0700 Subject: Implemented find() configuration support for `packages`. --- setuptools/tests/test_config.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 35bdbad1..08e398b3 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -446,6 +446,44 @@ class TestOptions: with get_dist(tmpdir) as dist: assert dist.packages == ['fake_package'] + def test_find_directive(self, tmpdir): + dir_package, config = fake_env( + tmpdir, + '[options]\n' + 'packages = find:\n' + ) + + dir_sub_one, _ = make_package_dir('sub_one', dir_package) + dir_sub_two, _ = make_package_dir('sub_two', dir_package) + + with get_dist(tmpdir) as dist: + assert dist.packages == [ + 'fake_package', 'fake_package.sub_two', 'fake_package.sub_one'] + + config.write( + '[options]\n' + 'packages = find:\n' + '\n' + '[options.packages.find]\n' + 'where = .\n' + 'include =\n' + ' fake_package.sub_one\n' + ' two\n' + ) + with get_dist(tmpdir) as dist: + assert dist.packages == ['fake_package.sub_one'] + + config.write( + '[options]\n' + 'packages = find:\n' + '\n' + '[options.packages.find]\n' + 'exclude =\n' + ' fake_package.sub_one\n' + ) + with get_dist(tmpdir) as dist: + assert dist.packages == ['fake_package', 'fake_package.sub_two'] + def test_extras_require(self, tmpdir): fake_env( tmpdir, -- cgit v1.2.1 From f85a821b039a03eb0231e6bd0fc925a4e37f3911 Mon Sep 17 00:00:00 2001 From: idle sign Date: Sat, 10 Dec 2016 13:48:03 +0700 Subject: Fixed test for `find()` results. --- setuptools/tests/test_config.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 08e398b3..677ccf2c 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -457,8 +457,9 @@ class TestOptions: dir_sub_two, _ = make_package_dir('sub_two', dir_package) with get_dist(tmpdir) as dist: - assert dist.packages == [ - 'fake_package', 'fake_package.sub_two', 'fake_package.sub_one'] + assert set(dist.packages) == set([ + 'fake_package', 'fake_package.sub_two', 'fake_package.sub_one' + ]) config.write( '[options]\n' @@ -482,7 +483,8 @@ class TestOptions: ' fake_package.sub_one\n' ) with get_dist(tmpdir) as dist: - assert dist.packages == ['fake_package', 'fake_package.sub_two'] + assert set(dist.packages) == set( + ['fake_package', 'fake_package.sub_two']) def test_extras_require(self, tmpdir): fake_env( -- cgit v1.2.1 From 35f3d1f37fdb137d5f5316058d49c96b9f28ca2d Mon Sep 17 00:00:00 2001 From: idle sign Date: Sat, 10 Dec 2016 15:23:49 +0700 Subject: `test_ignore_errors` side effect mitigated. --- setuptools/tests/test_config.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 677ccf2c..fa8d523b 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -98,6 +98,8 @@ class TestConfigurationReader: assert config_dict['metadata']['keywords'] == ['one', 'two'] assert 'version' not in config_dict['metadata'] + config.remove() + class TestMetadata: -- cgit v1.2.1 From 50830de19302234b6741e2d1b853fbf07fbedf95 Mon Sep 17 00:00:00 2001 From: idle sign Date: Sat, 4 Feb 2017 15:21:12 +0700 Subject: Dropped support for classifiers subsection handling in setup.cfg (see #952). --- setuptools/tests/test_config.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index fa8d523b..799fb165 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -257,6 +257,7 @@ class TestMetadata: def test_classifiers(self, tmpdir): expected = set([ 'Framework :: Django', + 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.5', ]) @@ -269,19 +270,21 @@ class TestMetadata: tmpdir.join('classifiers').write( 'Framework :: Django\n' + 'Programming Language :: Python :: 3\n' 'Programming Language :: Python :: 3.5\n' ) with get_dist(tmpdir) as dist: assert set(dist.metadata.classifiers) == expected - # From section. + # From list notation config.write( - '[metadata.classifiers]\n' - 'Framework :: Django\n' - 'Programming Language :: Python :: 3.5\n' + '[metadata]\n' + 'classifiers =\n' + ' Framework :: Django\n' + ' Programming Language :: Python :: 3\n' + ' Programming Language :: Python :: 3.5\n' ) - with get_dist(tmpdir) as dist: assert set(dist.metadata.classifiers) == expected -- cgit v1.2.1 From abaf7c4dd76c56eb509f6a5f6caa2f8e886801b6 Mon Sep 17 00:00:00 2001 From: Marcel Bargull Date: Fri, 7 Apr 2017 13:42:51 +0200 Subject: Fixes #999: support python_requires, py_modules in configuration files --- setuptools/tests/test_config.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 799fb165..8bd2a494 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -312,6 +312,8 @@ class TestOptions: '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' + 'python_requires = >=1.0, !=2.8\n' + 'py_modules = module1, module2\n' ) with get_dist(tmpdir) as dist: assert dist.zip_safe @@ -340,6 +342,8 @@ class TestOptions: 'there' ]) assert dist.tests_require == ['mock==0.7.2', 'pytest'] + assert dist.python_requires == '>=1.0, !=2.8' + assert dist.py_modules == ['module1', 'module2'] def test_multiline(self, tmpdir): fake_env( -- cgit v1.2.1 From 096f3287314549ac423f1c1c443f8aefa0b64b4f Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Thu, 27 Jul 2017 01:45:54 +0200 Subject: fix requires handling when using setup.cfg --- setuptools/tests/test_config.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 8bd2a494..dbabd69e 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -333,7 +333,7 @@ class TestOptions: ]) assert dist.install_requires == ([ 'docutils>=0.3', - 'pack ==1.1, ==1.3', + 'pack==1.1,==1.3', 'hey' ]) assert dist.setup_requires == ([ @@ -403,7 +403,7 @@ class TestOptions: ]) assert dist.install_requires == ([ 'docutils>=0.3', - 'pack ==1.1, ==1.3', + 'pack==1.1,==1.3', 'hey' ]) assert dist.setup_requires == ([ @@ -508,7 +508,7 @@ class TestOptions: with get_dist(tmpdir) as dist: assert dist.extras_require == { 'pdf': ['ReportLab>=1.2', 'RXP'], - 'rest': ['docutils>=0.3', 'pack ==1.1, ==1.3'] + 'rest': ['docutils>=0.3', 'pack==1.1,==1.3'] } def test_entry_points(self, tmpdir): -- cgit v1.2.1 From 986ff42f117e8ac3cc952bfc2c043f7de8ba7084 Mon Sep 17 00:00:00 2001 From: Sviatoslav Sydorenko Date: Wed, 9 Aug 2017 23:16:13 +0300 Subject: Allow adding few files @ metadata.long_description --- setuptools/tests/test_config.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index dbabd69e..95ae60b2 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -139,6 +139,30 @@ class TestMetadata: assert metadata.download_url == 'http://test.test.com/test/' assert metadata.maintainer_email == 'test@test.com' + def test_file_mixed(self, tmpdir): + + fake_env( + tmpdir, + '[metadata]\n' + 'long_description =\n' + ' Some normal line\n' + ' file: README.rst\n' + ' Another line\n' + ' file: CHANGES.rst\n' + '\n' + ) + + tmpdir.join('README.rst').write('readme contents\nline2') + tmpdir.join('CHANGES.rst').write('changelog contents\nand stuff') + + with get_dist(tmpdir) as dist: + assert dist.metadata.long_description == ( + 'Some normal line\n' + 'readme contents\nline2\n' + 'Another line\n' + 'changelog contents\nand stuff' + ) + def test_file_sandboxed(self, tmpdir): fake_env( -- cgit v1.2.1 From b699f94728c82691bed9b67a48b170951535fa38 Mon Sep 17 00:00:00 2001 From: Sviatoslav Sydorenko Date: Mon, 28 Aug 2017 10:22:21 +0300 Subject: Support list of files passed to `file:` directive * `file:` not accepts comma-separated list of filenames * files' contents are glues with an LF separator --- setuptools/tests/test_config.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 95ae60b2..d81d4288 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -144,11 +144,7 @@ class TestMetadata: fake_env( tmpdir, '[metadata]\n' - 'long_description =\n' - ' Some normal line\n' - ' file: README.rst\n' - ' Another line\n' - ' file: CHANGES.rst\n' + 'long_description = file: README.rst, CHANGES.rst\n' '\n' ) @@ -157,9 +153,7 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.long_description == ( - 'Some normal line\n' 'readme contents\nline2\n' - 'Another line\n' 'changelog contents\nand stuff' ) @@ -168,7 +162,7 @@ class TestMetadata: fake_env( tmpdir, '[metadata]\n' - 'long_description = file: ../../README\n' + 'long_description = file: CHANGES.rst, ../../README\n' ) with get_dist(tmpdir, parse=False) as dist: -- cgit v1.2.1 From 5da6479d917d77c8091d8b4c32724054ae5adf65 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Mon, 28 Aug 2017 08:50:44 -0400 Subject: Avoid interaction of multiple factors in test. If one wishes to test both 'mixed' and 'sandboxed', let's create a separate test for that, but it's probably unnecessary. --- setuptools/tests/test_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index d81d4288..cdfa5af4 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -162,7 +162,7 @@ class TestMetadata: fake_env( tmpdir, '[metadata]\n' - 'long_description = file: CHANGES.rst, ../../README\n' + 'long_description = file: ../../README\n' ) with get_dist(tmpdir, parse=False) as dist: -- cgit v1.2.1 From 3686dedb4bfbd0e6630c10119c8fe7af9369248e Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Wed, 25 Oct 2017 17:50:22 +0200 Subject: add test to ensure `setup.cfg` interpolation behavior remain unchanged --- setuptools/tests/test_config.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index cdfa5af4..2494a0bc 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -3,6 +3,7 @@ import pytest from distutils.errors import DistutilsOptionError, DistutilsFileError from setuptools.dist import Distribution from setuptools.config import ConfigHandler, read_configuration +from setuptools.extern.six.moves.configparser import InterpolationMissingOptionError class ErrConfigHandler(ConfigHandler): @@ -306,6 +307,15 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert set(dist.metadata.classifiers) == expected + def test_interpolation(self, tmpdir): + fake_env( + tmpdir, + '[metadata]\n' + 'description = %(message)s\n' + ) + with pytest.raises(InterpolationMissingOptionError): + with get_dist(tmpdir): + pass class TestOptions: -- cgit v1.2.1 From 2c897b5b877d401e13b661f2a0a14e99a1aabdc8 Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Wed, 25 Oct 2017 17:55:26 +0200 Subject: improve encoding handling for `setup.cfg` Support the same mechanism as for Python sources for declaring the encoding to be used when reading `setup.cfg` (see PEP 263), and return the results of reading it as Unicode. Fix #1062 and #1136. --- setuptools/tests/test_config.py | 65 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 2 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 2494a0bc..89fde257 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -1,9 +1,13 @@ +# -*- coding: UTF-8 -*- +from __future__ import unicode_literals + import contextlib import pytest from distutils.errors import DistutilsOptionError, DistutilsFileError from setuptools.dist import Distribution from setuptools.config import ConfigHandler, read_configuration from setuptools.extern.six.moves.configparser import InterpolationMissingOptionError +from setuptools.tests import is_ascii class ErrConfigHandler(ConfigHandler): @@ -17,7 +21,7 @@ def make_package_dir(name, base_dir): return dir_package, init_file -def fake_env(tmpdir, setup_cfg, setup_py=None): +def fake_env(tmpdir, setup_cfg, setup_py=None, encoding='ascii'): if setup_py is None: setup_py = ( @@ -27,7 +31,7 @@ def fake_env(tmpdir, setup_cfg, setup_py=None): tmpdir.join('setup.py').write(setup_py) config = tmpdir.join('setup.cfg') - config.write(setup_cfg) + config.write(setup_cfg.encode(encoding), mode='wb') package_dir, init_file = make_package_dir('fake_package', tmpdir) @@ -317,6 +321,63 @@ class TestMetadata: with get_dist(tmpdir): pass + skip_if_not_ascii = pytest.mark.skipif(not is_ascii, reason='Test not supported with this locale') + + @skip_if_not_ascii + def test_non_ascii_1(self, tmpdir): + fake_env( + tmpdir, + '[metadata]\n' + 'description = éàïôñ\n', + encoding='utf-8' + ) + with pytest.raises(UnicodeDecodeError): + with get_dist(tmpdir): + pass + + def test_non_ascii_2(self, tmpdir): + fake_env( + tmpdir, + '# -*- coding: invalid\n' + ) + with pytest.raises(LookupError): + with get_dist(tmpdir): + pass + + def test_non_ascii_3(self, tmpdir): + fake_env( + tmpdir, + '\n' + '# -*- coding: invalid\n' + ) + with get_dist(tmpdir): + pass + + @skip_if_not_ascii + def test_non_ascii_4(self, tmpdir): + fake_env( + tmpdir, + '# -*- coding: utf-8\n' + '[metadata]\n' + 'description = éàïôñ\n', + encoding='utf-8' + ) + with get_dist(tmpdir) as dist: + assert dist.metadata.description == 'éàïôñ' + + @skip_if_not_ascii + def test_non_ascii_5(self, tmpdir): + fake_env( + tmpdir, + '# vim: set fileencoding=iso-8859-15 :\n' + '[metadata]\n' + 'description = éàïôñ\n', + encoding='iso-8859-15' + ) + with get_dist(tmpdir) as dist: + assert dist.metadata.description == 'éàïôñ' + + class TestOptions: def test_basic(self, tmpdir): -- cgit v1.2.1 From 553e21e12ca2ebe6ab0f597e69594b71271faecc Mon Sep 17 00:00:00 2001 From: Henk-Jaap Wagenaar Date: Tue, 21 Nov 2017 22:16:53 +0000 Subject: Add setup.cfg support for long_description_content_type (in line with docs). --- setuptools/tests/test_config.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index cdfa5af4..15b0cee1 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -110,6 +110,7 @@ class TestMetadata: '[metadata]\n' 'version = 10.1.1\n' 'description = Some description\n' + 'long_description_content_type = text/something\n' 'long_description = file: README\n' 'name = fake_name\n' 'keywords = one, two\n' @@ -131,6 +132,7 @@ class TestMetadata: assert metadata.version == '10.1.1' assert metadata.description == 'Some description' + assert metadata.long_description_content_type == 'text/something' assert metadata.long_description == 'readme contents\nline2' assert metadata.provides == ['package', 'package.sub'] assert metadata.license == 'BSD 3-Clause License' -- cgit v1.2.1 From df2246449c271c07586bcecc3eaa36e9b0e94e3d Mon Sep 17 00:00:00 2001 From: Jeremy Stanley Date: Tue, 21 Nov 2017 00:48:44 +0000 Subject: Support PEP 345 Project-URL metadata By including one or more Project-URL entries in PKG-INFO metadata, PyPI can display helpful hyperlinks in a generic manner. Add support here to be able to pass it through setup.cfg and setup.py with a project_urls dict. See the corresponding section of the Core Metadata Specifications from the Python Packaging User Guide for details: https://packaging.python.org/specifications/core-metadata/#project-url-multiple-use --- setuptools/tests/test_config.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index cdfa5af4..a69bca46 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -215,6 +215,22 @@ class TestMetadata: 'Programming Language :: Python :: 3.5', ] + def test_dict(self, tmpdir): + + fake_env( + tmpdir, + '[metadata]\n' + 'project_urls =\n' + ' Link One = https://example.com/one/\n' + ' Link Two = https://example.com/two/\n' + ) + with get_dist(tmpdir) as dist: + metadata = dist.metadata + assert metadata.project_urls == { + 'Link One': 'https://example.com/one/', + 'Link Two': 'https://example.com/two/', + } + def test_version(self, tmpdir): _, config = fake_env( -- cgit v1.2.1 From b2ea3c4a20d008622caec445f5b6916ddd420d16 Mon Sep 17 00:00:00 2001 From: Dustin Ingram Date: Mon, 5 Mar 2018 21:57:06 -0600 Subject: Updates for PEP 566 (Metadata 2.1) --- setuptools/tests/test_config.py | 1 + 1 file changed, 1 insertion(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 383e0d30..abb953a8 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -546,6 +546,7 @@ class TestOptions: 'pdf': ['ReportLab>=1.2', 'RXP'], 'rest': ['docutils>=0.3', 'pack==1.1,==1.3'] } + assert dist.metadata.provides_extras == set(['pdf', 'rest']) def test_entry_points(self, tmpdir): _, config = fake_env( -- cgit v1.2.1 From a960ee1c3f1d1d1067ec1e3c88dc345060bd33a4 Mon Sep 17 00:00:00 2001 From: Jeremy Bowman Date: Mon, 14 May 2018 17:53:42 -0400 Subject: Support loading version from a file --- setuptools/tests/test_config.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index abb953a8..17ac09c8 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -268,6 +268,23 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' + def test_version_file(self, tmpdir): + + _, config = fake_env( + tmpdir, + '[metadata]\n' + 'version = file: fake_package/version.txt\n' + ) + tmpdir.join('fake_package', 'version.txt').write('1.2.3\n') + + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '1.2.3' + + tmpdir.join('fake_package', 'version.txt').write('1.2.3\n4.5.6\n') + with pytest.raises(DistutilsOptionError): + with get_dist(tmpdir) as dist: + _ = dist.metadata.version + def test_unknown_meta_item(self, tmpdir): fake_env( -- cgit v1.2.1 From 0c2e5c9db4c7dd26ba49ffc4a75657715be587b0 Mon Sep 17 00:00:00 2001 From: Jeremy Bowman Date: Tue, 15 May 2018 16:26:04 -0400 Subject: Fix attr: with package_dirs --- setuptools/tests/test_config.py | 53 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 17ac09c8..de7c8b4d 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -10,13 +10,15 @@ class ErrConfigHandler(ConfigHandler): def make_package_dir(name, base_dir): - dir_package = base_dir.mkdir(name) + dir_package = base_dir + for dir_name in name.split('/'): + dir_package = dir_package.mkdir(dir_name) init_file = dir_package.join('__init__.py') init_file.write('') return dir_package, init_file -def fake_env(tmpdir, setup_cfg, setup_py=None): +def fake_env(tmpdir, setup_cfg, setup_py=None, package_path='fake_package'): if setup_py is None: setup_py = ( @@ -28,7 +30,7 @@ def fake_env(tmpdir, setup_cfg, setup_py=None): config = tmpdir.join('setup.cfg') config.write(setup_cfg) - package_dir, init_file = make_package_dir('fake_package', tmpdir) + package_dir, init_file = make_package_dir(package_path, tmpdir) init_file.write( 'VERSION = (1, 2, 3)\n' @@ -285,6 +287,51 @@ class TestMetadata: with get_dist(tmpdir) as dist: _ = dist.metadata.version + def test_version_with_package_dir_simple(self, tmpdir): + + _, config = fake_env( + tmpdir, + '[metadata]\n' + 'version = attr: fake_package_simple.VERSION\n' + '[options]\n' + 'package_dir =\n' + ' = src\n', + package_path='src/fake_package_simple' + ) + + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '1.2.3' + + def test_version_with_package_dir_rename(self, tmpdir): + + _, config = fake_env( + tmpdir, + '[metadata]\n' + 'version = attr: fake_package_rename.VERSION\n' + '[options]\n' + 'package_dir =\n' + ' fake_package_rename = fake_dir\n', + package_path='fake_dir' + ) + + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '1.2.3' + + def test_version_with_package_dir_complex(self, tmpdir): + + _, config = fake_env( + tmpdir, + '[metadata]\n' + 'version = attr: fake_package_complex.VERSION\n' + '[options]\n' + 'package_dir =\n' + ' fake_package_complex = src/fake_dir\n', + package_path='src/fake_dir' + ) + + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '1.2.3' + def test_unknown_meta_item(self, tmpdir): fake_env( -- cgit v1.2.1 From 07cd2e4e716264fd51aededcb77cefe37aafb25a Mon Sep 17 00:00:00 2001 From: Ian Wienand Date: Mon, 30 Apr 2018 19:08:58 +1000 Subject: Allow setting long_description_content_type externally Some tools, such as PBR, might want to set long_description_content_type during the parent object's Distribution.__init__() call (during distutils setup_keywords entry points). However, that field is currently unconditionally overwritten after these calls, erasing the value. We would rather not duplicate the existing method of copying into dist.metadata as done with project_urls. This preserves the fields within Distribution.metadata described by self._DISTUTIULS_UNUPPORTED_METADATA, or otherwise takes it from arguments. A test case that simulates setting the long description and overriding the arguments is added. --- setuptools/tests/test_config.py | 43 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 17ac09c8..91471306 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -1,7 +1,8 @@ import contextlib import pytest from distutils.errors import DistutilsOptionError, DistutilsFileError -from setuptools.dist import Distribution +from mock import patch +from setuptools.dist import Distribution, _Distribution from setuptools.config import ConfigHandler, read_configuration @@ -598,3 +599,43 @@ class TestOptions: with get_dist(tmpdir) as dist: assert dist.entry_points == expected + +saved_dist_init = _Distribution.__init__ +class TestExternalSetters: + # During creation of the setuptools Distribution() object, we call + # the init of the parent distutils Distribution object via + # _Distribution.__init__ (). + # + # It's possible distutils calls out to various keyword + # implementations (i.e. distutils.setup_keywords entry points) + # that may set a range of variables. + # + # This wraps distutil's Distribution.__init__ and simulates + # pbr or something else setting these values. + def _fake_distribution_init(self, dist, attrs): + saved_dist_init(dist, attrs) + # see self._DISTUTUILS_UNSUPPORTED_METADATA + setattr(dist.metadata, 'long_description_content_type', + 'text/something') + # Test overwrite setup() args + setattr(dist.metadata, 'project_urls', { + 'Link One': 'https://example.com/one/', + 'Link Two': 'https://example.com/two/', + }) + return None + + @patch.object(_Distribution, '__init__', autospec=True) + def test_external_setters(self, mock_parent_init, tmpdir): + mock_parent_init.side_effect = self._fake_distribution_init + + dist = Distribution(attrs={ + 'project_urls': { + 'will_be': 'ignored' + } + }) + + assert dist.metadata.long_description_content_type == 'text/something' + assert dist.metadata.project_urls == { + 'Link One': 'https://example.com/one/', + 'Link Two': 'https://example.com/two/', + } -- cgit v1.2.1 From 0254a2fda8e8bd4f289d01e2179191e936517f04 Mon Sep 17 00:00:00 2001 From: Carsten Klein Date: Fri, 17 Aug 2018 14:58:35 +0200 Subject: Rename find_namepaces_ns to find_namespace_packages (#1423) * fix #1419 PEP420: add find_namespace: directive * fix #1419 PEP420: add find_namespace: directive to documentation * fix #1419 PEP420: add tests * fix #1419 PEP420: clean up code * fix #1419 PEP420: fix typo in documentation * fix #1419 PEP420: fix typo in documentation * fix #1419 PEP420: clean up code * fix #1419 PEP420: add changelog entry * fixup! fix #1419 PEP420: add tests * fix #1419 PEP420: cleanup code refactor markers * #1420: Rename find_namespace_ns to find_namespace_packages * #1420: update changelog entry --- setuptools/tests/test_config.py | 64 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 4 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 19b37633..acf22154 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -4,18 +4,20 @@ from distutils.errors import DistutilsOptionError, DistutilsFileError from mock import patch from setuptools.dist import Distribution, _Distribution from setuptools.config import ConfigHandler, read_configuration - +from . import py2_only, py3_only class ErrConfigHandler(ConfigHandler): """Erroneous handler. Fails to implement required methods.""" -def make_package_dir(name, base_dir): +def make_package_dir(name, base_dir, ns=False): dir_package = base_dir for dir_name in name.split('/'): dir_package = dir_package.mkdir(dir_name) - init_file = dir_package.join('__init__.py') - init_file.write('') + init_file = None + if not ns: + init_file = dir_package.join('__init__.py') + init_file.write('') return dir_package, init_file @@ -596,6 +598,60 @@ class TestOptions: assert set(dist.packages) == set( ['fake_package', 'fake_package.sub_two']) + @py2_only + def test_find_namespace_directive_fails_on_py2(self, tmpdir): + dir_package, config = fake_env( + tmpdir, + '[options]\n' + 'packages = find_namespace:\n' + ) + + with pytest.raises(DistutilsOptionError): + with get_dist(tmpdir) as dist: + dist.parse_config_files() + + @py3_only + def test_find_namespace_directive(self, tmpdir): + dir_package, config = fake_env( + tmpdir, + '[options]\n' + 'packages = find_namespace:\n' + ) + + dir_sub_one, _ = make_package_dir('sub_one', dir_package) + dir_sub_two, _ = make_package_dir('sub_two', dir_package, ns=True) + + with get_dist(tmpdir) as dist: + assert set(dist.packages) == { + 'fake_package', 'fake_package.sub_two', 'fake_package.sub_one' + } + + config.write( + '[options]\n' + 'packages = find_namespace:\n' + '\n' + '[options.packages.find]\n' + 'where = .\n' + 'include =\n' + ' fake_package.sub_one\n' + ' two\n' + ) + with get_dist(tmpdir) as dist: + assert dist.packages == ['fake_package.sub_one'] + + config.write( + '[options]\n' + 'packages = find_namespace:\n' + '\n' + '[options.packages.find]\n' + 'exclude =\n' + ' fake_package.sub_one\n' + ) + with get_dist(tmpdir) as dist: + assert set(dist.packages) == { + 'fake_package', 'fake_package.sub_two' + } + def test_extras_require(self, tmpdir): fake_env( tmpdir, -- cgit v1.2.1 From 74afc688fc4084390c9e9169984b5f7d8339b8e4 Mon Sep 17 00:00:00 2001 From: Satoru SATOH Date: Wed, 24 Oct 2018 03:42:01 +0900 Subject: Add data_files support in setup.cfg with test case In the test case, dist.data_files needs to be sorted because the current implementation loads the configuration files as a dictionary with arbitrary order on Python < 3.6. --- setuptools/tests/test_config.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index acf22154..76759ec5 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -703,6 +703,23 @@ class TestOptions: with get_dist(tmpdir) as dist: assert dist.entry_points == expected + def test_data_files(self, tmpdir): + fake_env( + tmpdir, + '[options.data_files]\n' + 'cfg =\n' + ' a/b.conf\n' + ' c/d.conf\n' + 'data = e/f.dat, g/h.dat\n' + ) + + with get_dist(tmpdir) as dist: + expected = [ + ('cfg', ['a/b.conf', 'c/d.conf']), + ('data', ['e/f.dat', 'g/h.dat']), + ] + assert sorted(dist.data_files) == sorted(expected) + saved_dist_init = _Distribution.__init__ class TestExternalSetters: # During creation of the setuptools Distribution() object, we call -- cgit v1.2.1 From a6a5040ae14b74bfaaaf835d57129ee7618e5cfd Mon Sep 17 00:00:00 2001 From: Sreejith Menon Date: Sat, 27 Oct 2018 10:29:08 -0700 Subject: Deprecate the requires keyword For runtime dependencies, install_requires should be used. For build dependencies, a PEP 518-compliant `pyproject.toml` should be used. Other dependencies can use extra requirements. --- setuptools/tests/test_config.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 76759ec5..736c184d 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -391,6 +391,23 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert set(dist.metadata.classifiers) == expected + def test_deprecated_config_handlers(self, tmpdir): + fake_env( + tmpdir, + '[metadata]\n' + 'version = 10.1.1\n' + 'description = Some description\n' + 'requires = some, requirement\n' + ) + + with pytest.deprecated_call(): + with get_dist(tmpdir) as dist: + metadata = dist.metadata + + assert metadata.version == '10.1.1' + assert metadata.description == 'Some description' + assert metadata.requires == ['some', 'requirement'] + class TestOptions: -- cgit v1.2.1 From 3db95bcc3dcc72dbb47d7dfc987ae646b249addd Mon Sep 17 00:00:00 2001 From: Paul Ganssle Date: Sat, 29 Dec 2018 11:13:43 -0500 Subject: Add explicit test for license in setup.cfg --- setuptools/tests/test_config.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 736c184d..53b8a956 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -1,10 +1,12 @@ import contextlib import pytest + from distutils.errors import DistutilsOptionError, DistutilsFileError from mock import patch from setuptools.dist import Distribution, _Distribution from setuptools.config import ConfigHandler, read_configuration from . import py2_only, py3_only +from .textwrap import DALS class ErrConfigHandler(ConfigHandler): """Erroneous handler. Fails to implement required methods.""" @@ -146,6 +148,24 @@ class TestMetadata: assert metadata.download_url == 'http://test.test.com/test/' assert metadata.maintainer_email == 'test@test.com' + def test_license_cfg(self, tmpdir): + fake_env( + tmpdir, + DALS(""" + [metadata] + name=foo + version=0.0.1 + license=Apache 2.0 + """) + ) + + with get_dist(tmpdir) as dist: + metadata = dist.metadata + + assert metadata.name == "foo" + assert metadata.version == "0.0.1" + assert metadata.license == "Apache 2.0" + def test_file_mixed(self, tmpdir): fake_env( -- cgit v1.2.1 From 5cd86987530892bfb01f68ad5f1a2b997a3d01e7 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 26 Jan 2019 20:20:12 -0500 Subject: Feed the hobgoblins (delint). --- setuptools/tests/test_config.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 53b8a956..a6b44b9f 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -8,6 +8,7 @@ from setuptools.config import ConfigHandler, read_configuration from . import py2_only, py3_only from .textwrap import DALS + class ErrConfigHandler(ConfigHandler): """Erroneous handler. Fails to implement required methods.""" @@ -18,8 +19,8 @@ def make_package_dir(name, base_dir, ns=False): dir_package = dir_package.mkdir(dir_name) init_file = None if not ns: - init_file = dir_package.join('__init__.py') - init_file.write('') + init_file = dir_package.join('__init__.py') + init_file.write('') return dir_package, init_file @@ -308,7 +309,7 @@ class TestMetadata: tmpdir.join('fake_package', 'version.txt').write('1.2.3\n4.5.6\n') with pytest.raises(DistutilsOptionError): with get_dist(tmpdir) as dist: - _ = dist.metadata.version + dist.metadata.version def test_version_with_package_dir_simple(self, tmpdir): @@ -451,7 +452,7 @@ class TestOptions: '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' + 'http://some.com/there/2\n' 'python_requires = >=1.0, !=2.8\n' 'py_modules = module1, module2\n' ) @@ -659,7 +660,7 @@ class TestOptions: dir_sub_two, _ = make_package_dir('sub_two', dir_package, ns=True) with get_dist(tmpdir) as dist: - assert set(dist.packages) == { + assert set(dist.packages) == { 'fake_package', 'fake_package.sub_two', 'fake_package.sub_one' } @@ -711,7 +712,7 @@ class TestOptions: tmpdir, '[options.entry_points]\n' 'group1 = point1 = pack.module:func, ' - '.point2 = pack.module2:func_rest [rest]\n' + '.point2 = pack.module2:func_rest [rest]\n' 'group2 = point3 = pack.module:func2\n' ) @@ -757,7 +758,10 @@ class TestOptions: ] assert sorted(dist.data_files) == sorted(expected) + saved_dist_init = _Distribution.__init__ + + class TestExternalSetters: # During creation of the setuptools Distribution() object, we call # the init of the parent distutils Distribution object via -- cgit v1.2.1 From 393809a02ed4d0f07faec5c1f23384233e6cd68e Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 5 Apr 2019 09:27:23 -0400 Subject: Feed the hobgoblins (delint). --- setuptools/tests/test_config.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 6b177709..4daf1df1 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -8,7 +8,7 @@ from distutils.errors import DistutilsOptionError, DistutilsFileError from mock import patch from setuptools.dist import Distribution, _Distribution from setuptools.config import ConfigHandler, read_configuration -from setuptools.extern.six.moves.configparser import InterpolationMissingOptionError +from setuptools.extern.six.moves import configparser from setuptools.tests import is_ascii from . import py2_only, py3_only from .textwrap import DALS @@ -29,7 +29,9 @@ def make_package_dir(name, base_dir, ns=False): return dir_package, init_file -def fake_env(tmpdir, setup_cfg, setup_py=None, encoding='ascii', package_path='fake_package'): +def fake_env( + tmpdir, setup_cfg, setup_py=None, + encoding='ascii', package_path='fake_package'): if setup_py is None: setup_py = ( @@ -440,11 +442,12 @@ class TestMetadata: '[metadata]\n' 'description = %(message)s\n' ) - with pytest.raises(InterpolationMissingOptionError): + with pytest.raises(configparser.InterpolationMissingOptionError): with get_dist(tmpdir): pass - skip_if_not_ascii = pytest.mark.skipif(not is_ascii, reason='Test not supported with this locale') + skip_if_not_ascii = pytest.mark.skipif( + not is_ascii, reason='Test not supported with this locale') @skip_if_not_ascii def test_non_ascii_1(self, tmpdir): -- cgit v1.2.1 From 85fa4a6bc506be12fdbd0f4cff139e7c4e3bc6a8 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 5 Apr 2019 10:04:50 -0400 Subject: When reading config files, require them to be encoded with UTF-8. Fixes #1702. --- setuptools/tests/test_config.py | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 4daf1df1..bc97664d 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -9,7 +9,6 @@ from mock import patch from setuptools.dist import Distribution, _Distribution from setuptools.config import ConfigHandler, read_configuration from setuptools.extern.six.moves import configparser -from setuptools.tests import is_ascii from . import py2_only, py3_only from .textwrap import DALS @@ -446,10 +445,6 @@ class TestMetadata: with get_dist(tmpdir): pass - skip_if_not_ascii = pytest.mark.skipif( - not is_ascii, reason='Test not supported with this locale') - - @skip_if_not_ascii def test_non_ascii_1(self, tmpdir): fake_env( tmpdir, @@ -457,18 +452,8 @@ class TestMetadata: 'description = éàïôñ\n', encoding='utf-8' ) - with pytest.raises(UnicodeDecodeError): - with get_dist(tmpdir): - pass - - def test_non_ascii_2(self, tmpdir): - fake_env( - tmpdir, - '# -*- coding: invalid\n' - ) - with pytest.raises(LookupError): - with get_dist(tmpdir): - pass + with get_dist(tmpdir): + pass def test_non_ascii_3(self, tmpdir): fake_env( @@ -479,7 +464,6 @@ class TestMetadata: with get_dist(tmpdir): pass - @skip_if_not_ascii def test_non_ascii_4(self, tmpdir): fake_env( tmpdir, @@ -491,8 +475,10 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.description == 'éàïôñ' - @skip_if_not_ascii - def test_non_ascii_5(self, tmpdir): + def test_not_utf8(self, tmpdir): + """ + Config files encoded not in UTF-8 will fail + """ fake_env( tmpdir, '# vim: set fileencoding=iso-8859-15 :\n' @@ -500,8 +486,9 @@ class TestMetadata: 'description = éàïôñ\n', encoding='iso-8859-15' ) - with get_dist(tmpdir) as dist: - assert dist.metadata.description == 'éàïôñ' + with pytest.raises(UnicodeDecodeError): + with get_dist(tmpdir): + pass class TestOptions: -- cgit v1.2.1 From ca0ee009f81a460b483c7e451e58dfdcd7787045 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Wed, 11 Sep 2019 16:39:57 +0100 Subject: Add test capturing failure. Ref #1787. --- setuptools/tests/test_config.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index bc97664d..42187138 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -819,6 +819,18 @@ class TestOptions: ] assert sorted(dist.data_files) == sorted(expected) + def test_python_requires_invalid(self, tmpdir): + fake_env( + tmpdir, + DALS(""" + [options] + python_requires=invalid + """), + ) + with pytest.raises(DistutilsOptionError): + with get_dist(tmpdir) as dist: + dist.parse_config_files() + saved_dist_init = _Distribution.__init__ -- cgit v1.2.1 From b31777cd50c7cb59b4ef6c22bd014f0229ef32fa Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Wed, 11 Sep 2019 16:52:58 +0100 Subject: Add more tests for valid behavior. Expand exception, any should do. --- setuptools/tests/test_config.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 42187138..1b94a586 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -819,6 +819,28 @@ class TestOptions: ] assert sorted(dist.data_files) == sorted(expected) + def test_python_requires_simple(self, tmpdir): + fake_env( + tmpdir, + DALS(""" + [options] + python_requires=>=2.7 + """), + ) + with get_dist(tmpdir) as dist: + dist.parse_config_files() + + def test_python_requires_compound(self, tmpdir): + fake_env( + tmpdir, + DALS(""" + [options] + python_requires=>=2.7,!=3.0.* + """), + ) + with get_dist(tmpdir) as dist: + dist.parse_config_files() + def test_python_requires_invalid(self, tmpdir): fake_env( tmpdir, @@ -827,7 +849,7 @@ class TestOptions: python_requires=invalid """), ) - with pytest.raises(DistutilsOptionError): + with pytest.raises(Exception): with get_dist(tmpdir) as dist: dist.parse_config_files() -- cgit v1.2.1 From d89682fcba90595d5d6aaf071d6efcc815bceba8 Mon Sep 17 00:00:00 2001 From: Jon Dufresne Date: Mon, 21 Oct 2019 16:49:13 -0700 Subject: Change coding cookie to use utf-8 (lowercase) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit While perfectly valid, the encoding 'UTF-8' (uppercase) is not recognized by the Emacs MULE system. As such, it displays the following warning when opening a file with it used as an encoding cookie: Warning (mule): Invalid coding system ‘UTF-8’ is specified for the current buffer/file by the :coding tag. It is highly recommended to fix it before writing to a file. Some discussion of this can be found at: https://stackoverflow.com/questions/14031724/how-to-make-emacs-accept-utf-8-uppercase-encoding While the post does offer a workaround for Emacs users, rather than ask all to implement it, use the more typical utf-8 (lowercase). --- setuptools/tests/test_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 1b94a586..69d8d00d 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -1,4 +1,4 @@ -# -*- coding: UTF-8 -*- +# -*- coding: utf-8 -*- from __future__ import unicode_literals import contextlib -- cgit v1.2.1 From 5ce9e5f343ca14f9875106f37f16ad498b294183 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 19 Jan 2020 13:25:45 -0500 Subject: =?UTF-8?q?=F0=9F=91=B9=20Feed=20the=20hobgoblins=20(delint).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setuptools/tests/test_config.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 69d8d00d..2fa0b374 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -695,7 +695,7 @@ class TestOptions: ) with get_dist(tmpdir) as dist: assert set(dist.packages) == set( - ['fake_package', 'fake_package.sub_two']) + ['fake_package', 'fake_package.sub_two']) @py2_only def test_find_namespace_directive_fails_on_py2(self, tmpdir): @@ -748,7 +748,7 @@ class TestOptions: ) with get_dist(tmpdir) as dist: assert set(dist.packages) == { - 'fake_package', 'fake_package.sub_two' + 'fake_package', 'fake_package.sub_two' } def test_extras_require(self, tmpdir): @@ -881,7 +881,7 @@ class TestExternalSetters: return None @patch.object(_Distribution, '__init__', autospec=True) - def test_external_setters(self, mock_parent_init, tmpdir): + def test_external_setters(self, mock_parent_init, tmpdir): mock_parent_init.side_effect = self._fake_distribution_init dist = Distribution(attrs={ -- cgit v1.2.1 From 6de971f158553c47ce11e7be9d38d268e0398193 Mon Sep 17 00:00:00 2001 From: "John T. Wodder II" Date: Sat, 27 Apr 2019 19:21:50 +0000 Subject: Implement a "literal_attr:" config directive --- setuptools/tests/test_config.py | 64 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 2fa0b374..03e6916b 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -300,6 +300,37 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' + def test_literal_version(self, tmpdir): + + _, config = fake_env( + tmpdir, + '[metadata]\n' + 'version = literal_attr: fake_package.VERSION\n' + ) + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '1.2.3' + + config.write( + '[metadata]\n' + 'version = literal_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( + 'import third_party_module\n' + 'VERSION = (2016, 11, 26)' + ) + + config.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_version_file(self, tmpdir): _, config = fake_env( @@ -332,6 +363,17 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '1.2.3' + config.write( + '[metadata]\n' + 'version = literal_attr: fake_package_simple.VERSION\n' + '[options]\n' + 'package_dir =\n' + ' = src\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '1.2.3' + def test_version_with_package_dir_rename(self, tmpdir): _, config = fake_env( @@ -347,6 +389,17 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '1.2.3' + config.write( + '[metadata]\n' + 'version = literal_attr: fake_package_rename.VERSION\n' + '[options]\n' + 'package_dir =\n' + ' fake_package_rename = fake_dir\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '1.2.3' + def test_version_with_package_dir_complex(self, tmpdir): _, config = fake_env( @@ -362,6 +415,17 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '1.2.3' + config.write( + '[metadata]\n' + 'version = literal_attr: fake_package_complex.VERSION\n' + '[options]\n' + 'package_dir =\n' + ' fake_package_complex = src/fake_dir\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.metadata.version == '1.2.3' + def test_unknown_meta_item(self, tmpdir): fake_env( -- cgit v1.2.1 From d6bcf5e89ef6a523c2476b249aba810af9808d8b Mon Sep 17 00:00:00 2001 From: "John T. Wodder II" Date: Fri, 15 May 2020 21:17:49 +0000 Subject: Merge `literal_attr:` functionality into `attr:` --- setuptools/tests/test_config.py | 54 +---------------------------------------- 1 file changed, 1 insertion(+), 53 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 03e6916b..d8347c78 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -103,7 +103,7 @@ class TestConfigurationReader: 'version = attr: none.VERSION\n' 'keywords = one, two\n' ) - with pytest.raises(ImportError): + with pytest.raises(DistutilsOptionError): read_configuration('%s' % config) config_dict = read_configuration( @@ -300,25 +300,6 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' - def test_literal_version(self, tmpdir): - - _, config = fake_env( - tmpdir, - '[metadata]\n' - 'version = literal_attr: fake_package.VERSION\n' - ) - with get_dist(tmpdir) as dist: - assert dist.metadata.version == '1.2.3' - - config.write( - '[metadata]\n' - 'version = literal_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( 'import third_party_module\n' 'VERSION = (2016, 11, 26)' @@ -363,17 +344,6 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '1.2.3' - config.write( - '[metadata]\n' - 'version = literal_attr: fake_package_simple.VERSION\n' - '[options]\n' - 'package_dir =\n' - ' = src\n' - ) - - with get_dist(tmpdir) as dist: - assert dist.metadata.version == '1.2.3' - def test_version_with_package_dir_rename(self, tmpdir): _, config = fake_env( @@ -389,17 +359,6 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '1.2.3' - config.write( - '[metadata]\n' - 'version = literal_attr: fake_package_rename.VERSION\n' - '[options]\n' - 'package_dir =\n' - ' fake_package_rename = fake_dir\n' - ) - - with get_dist(tmpdir) as dist: - assert dist.metadata.version == '1.2.3' - def test_version_with_package_dir_complex(self, tmpdir): _, config = fake_env( @@ -415,17 +374,6 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '1.2.3' - config.write( - '[metadata]\n' - 'version = literal_attr: fake_package_complex.VERSION\n' - '[options]\n' - 'package_dir =\n' - ' fake_package_complex = src/fake_dir\n' - ) - - with get_dist(tmpdir) as dist: - assert dist.metadata.version == '1.2.3' - def test_unknown_meta_item(self, tmpdir): fake_env( -- cgit v1.2.1 From e1824c093bf89e8875ddd329f316b9ed3e7dd533 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 16 May 2020 19:54:13 -0400 Subject: Extract StaticModule and patch_path helpers. --- setuptools/tests/test_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index d8347c78..961f8d42 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -103,7 +103,7 @@ class TestConfigurationReader: 'version = attr: none.VERSION\n' 'keywords = one, two\n' ) - with pytest.raises(DistutilsOptionError): + with pytest.raises(ImportError): read_configuration('%s' % config) config_dict = read_configuration( -- cgit v1.2.1 From a11c8eac4bf7e1b97f489395565d96076285617d Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 16 May 2020 20:18:54 -0400 Subject: Alter test so it actually triggers the intended behavior. --- setuptools/tests/test_config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 961f8d42..6840a8e2 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -300,14 +300,14 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' - subpack.join('submodule.py').write( + subpack.join('othersub.py').write( 'import third_party_module\n' 'VERSION = (2016, 11, 26)' ) config.write( '[metadata]\n' - 'version = attr: fake_package.subpackage.submodule.VERSION\n' + 'version = attr: fake_package.subpackage.othersub.VERSION\n' ) with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' -- cgit v1.2.1 From 7681ff9f70f33651f40c7b64a8186471a7014515 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 16 May 2020 20:57:15 -0400 Subject: Delete packages from sys.modules --- setuptools/tests/test_config.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 6840a8e2..942050e0 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -1,7 +1,9 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals +import sys import contextlib + import pytest from distutils.errors import DistutilsOptionError, DistutilsFileError @@ -300,6 +302,9 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' + del sys.modules['fake_package'] + del sys.modules['fake_package.subpackage'] + subpack.join('othersub.py').write( 'import third_party_module\n' 'VERSION = (2016, 11, 26)' -- cgit v1.2.1 From 4c62d634784a935eb0fbeedc174a25b82f05e1d6 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 16 May 2020 21:21:30 -0400 Subject: Update test to create separate subpackages. Hoping that avoids issues with caching. --- setuptools/tests/test_config.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 942050e0..eeac32ce 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -import sys import contextlib import pytest @@ -291,28 +290,27 @@ class TestMetadata: 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)') + sub_a = tmpdir.join('fake_package').mkdir('subpkg_a') + sub_a.join('__init__.py').write('') + sub_a.join('mod.py').write('VERSION = (2016, 11, 26)') config.write( '[metadata]\n' - 'version = attr: fake_package.subpackage.submodule.VERSION\n' + 'version = attr: fake_package.subpkg_a.mod.VERSION\n' ) with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' - del sys.modules['fake_package'] - del sys.modules['fake_package.subpackage'] - - subpack.join('othersub.py').write( + sub_b = tmpdir.join('fake_package').mkdir('subpkg_b') + sub_b.join('__init__.py').write('') + sub_b.join('mod.py').write( 'import third_party_module\n' 'VERSION = (2016, 11, 26)' ) config.write( '[metadata]\n' - 'version = attr: fake_package.subpackage.othersub.VERSION\n' + 'version = attr: fake_package.subpkg_b.mod.VERSION\n' ) with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' -- cgit v1.2.1 From 55456fe32ab2b5d7a4d476149ba935dbfd6e5fca Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 16 May 2020 21:45:40 -0400 Subject: Try constructing the fake package at the beginning of the test. --- setuptools/tests/test_config.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index eeac32ce..77b853eb 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -54,6 +54,7 @@ def fake_env( ' return [3, 4, 5, "dev"]\n' '\n' ) + return package_dir, config @@ -268,11 +269,23 @@ class TestMetadata: def test_version(self, tmpdir): - _, config = fake_env( + package_dir, config = fake_env( tmpdir, '[metadata]\n' 'version = attr: fake_package.VERSION\n' ) + + sub_a = package_dir.mkdir('subpkg_a') + sub_a.join('__init__.py').write('') + sub_a.join('mod.py').write('VERSION = (2016, 11, 26)') + + sub_b = package_dir.mkdir('subpkg_b') + sub_b.join('__init__.py').write('') + sub_b.join('mod.py').write( + 'import third_party_module\n' + 'VERSION = (2016, 11, 26)' + ) + with get_dist(tmpdir) as dist: assert dist.metadata.version == '1.2.3' @@ -290,10 +303,6 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '1' - sub_a = tmpdir.join('fake_package').mkdir('subpkg_a') - sub_a.join('__init__.py').write('') - sub_a.join('mod.py').write('VERSION = (2016, 11, 26)') - config.write( '[metadata]\n' 'version = attr: fake_package.subpkg_a.mod.VERSION\n' @@ -301,13 +310,6 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' - sub_b = tmpdir.join('fake_package').mkdir('subpkg_b') - sub_b.join('__init__.py').write('') - sub_b.join('mod.py').write( - 'import third_party_module\n' - 'VERSION = (2016, 11, 26)' - ) - config.write( '[metadata]\n' 'version = attr: fake_package.subpkg_b.mod.VERSION\n' -- cgit v1.2.1 From 39a37c0758f43b130e5163156facffbbe89cf9fa Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 16 May 2020 22:18:25 -0400 Subject: Disable test on Python 2. --- setuptools/tests/test_config.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 77b853eb..67992c04 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -10,6 +10,7 @@ from mock import patch from setuptools.dist import Distribution, _Distribution from setuptools.config import ConfigHandler, read_configuration from setuptools.extern.six.moves import configparser +from setuptools.extern import six from . import py2_only, py3_only from .textwrap import DALS @@ -310,6 +311,10 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' + if six.PY2: + # static version loading is unsupported on Python 2 + return + config.write( '[metadata]\n' 'version = attr: fake_package.subpkg_b.mod.VERSION\n' -- cgit v1.2.1 From fb7ab81a3d080422687bad71f9ae9d36eeefbee2 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 16 Aug 2020 00:29:24 -0400 Subject: Remove Python 2 compatibility --- setuptools/tests/test_config.py | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 67992c04..1dee1271 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -1,7 +1,5 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - import contextlib +import configparser import pytest @@ -9,9 +7,6 @@ from distutils.errors import DistutilsOptionError, DistutilsFileError from mock import patch from setuptools.dist import Distribution, _Distribution from setuptools.config import ConfigHandler, read_configuration -from setuptools.extern.six.moves import configparser -from setuptools.extern import six -from . import py2_only, py3_only from .textwrap import DALS @@ -311,10 +306,6 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' - if six.PY2: - # static version loading is unsupported on Python 2 - return - config.write( '[metadata]\n' 'version = attr: fake_package.subpkg_b.mod.VERSION\n' @@ -719,19 +710,6 @@ class TestOptions: assert set(dist.packages) == set( ['fake_package', 'fake_package.sub_two']) - @py2_only - def test_find_namespace_directive_fails_on_py2(self, tmpdir): - dir_package, config = fake_env( - tmpdir, - '[options]\n' - 'packages = find_namespace:\n' - ) - - with pytest.raises(DistutilsOptionError): - with get_dist(tmpdir) as dist: - dist.parse_config_files() - - @py3_only def test_find_namespace_directive(self, tmpdir): dir_package, config = fake_env( tmpdir, -- cgit v1.2.1 From cb00954729e1deaef431697bae8b8a6a7198c2ce Mon Sep 17 00:00:00 2001 From: Simone Pierazzini Date: Thu, 18 Feb 2021 06:40:17 +0100 Subject: Correctly parse cmdclass in setup.cfg. Fixes #2570 --- setuptools/tests/test_config.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 1dee1271..16892cb1 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -1,3 +1,6 @@ +import types +import sys + import contextlib import configparser @@ -7,6 +10,7 @@ from distutils.errors import DistutilsOptionError, DistutilsFileError from mock import patch from setuptools.dist import Distribution, _Distribution from setuptools.config import ConfigHandler, read_configuration +from distutils.core import Command from .textwrap import DALS @@ -853,6 +857,26 @@ class TestOptions: with get_dist(tmpdir) as dist: dist.parse_config_files() + def test_cmdclass(self, tmpdir): + class CustomCmd(Command): + pass + + m = types.ModuleType('custom_build', 'test package') + + m.__dict__['CustomCmd'] = CustomCmd + + sys.modules['custom_build'] = m + + fake_env( + tmpdir, + '[options]\n' + 'cmdclass =\n' + ' customcmd = custom_build.CustomCmd\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.cmdclass == {'customcmd': CustomCmd} + saved_dist_init = _Distribution.__init__ -- cgit v1.2.1 From 90d8740c353ddf20c1c76d8c06cd923c19b8cc84 Mon Sep 17 00:00:00 2001 From: Melissa Li Date: Tue, 23 Feb 2021 21:06:55 -0500 Subject: Add case-sensitive entry point name test --- setuptools/tests/test_config.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 1dee1271..6cc1d0a4 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -802,6 +802,40 @@ class TestOptions: with get_dist(tmpdir) as dist: assert dist.entry_points == expected + def test_case_sensitive_entry_points(self, tmpdir): + _, config = 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. + config.write( + '[options]\n' + 'entry_points = file: entry_points\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.entry_points == expected + def test_data_files(self, tmpdir): fake_env( tmpdir, -- cgit v1.2.1 From 7f3e6d688e5ff080ee6bd7ccc6bd81a87c05cfd7 Mon Sep 17 00:00:00 2001 From: Melissa Li Date: Wed, 24 Feb 2021 23:57:59 -0500 Subject: Update test for case-sensitive entry point names --- setuptools/tests/test_config.py | 16 ---------------- 1 file changed, 16 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 6cc1d0a4..64907560 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -820,22 +820,6 @@ class TestOptions: '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. - config.write( - '[options]\n' - 'entry_points = file: entry_points\n' - ) - - with get_dist(tmpdir) as dist: - assert dist.entry_points == expected - def test_data_files(self, tmpdir): fake_env( tmpdir, -- cgit v1.2.1 From d027d6d2140daf87079dd3bd186585a5b063269e Mon Sep 17 00:00:00 2001 From: Melissa Li Date: Tue, 2 Mar 2021 20:13:06 -0500 Subject: Modify existing tests to be compatible with future underscore change --- setuptools/tests/test_config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 6db86c7c..0983f836 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -210,8 +210,8 @@ class TestMetadata: fake_env( tmpdir, '[metadata]\n' - 'author-email = test@test.com\n' - 'home-page = http://test.test.com/test/\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' -- cgit v1.2.1 From 08d6a2f2b0fb4b57f749d0adaaca3efc158419cd Mon Sep 17 00:00:00 2001 From: Melissa Li Date: Tue, 2 Mar 2021 22:54:53 -0500 Subject: Add test for conversion warning --- setuptools/tests/test_config.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 0983f836..4a399179 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -507,6 +507,25 @@ class TestMetadata: with get_dist(tmpdir): pass + def test_dash_to_underscore_warning(self, tmpdir): + # dash_to_underscore_warning() is a method in setuptools.dist + # remove this test and method when dash convert to underscore in setup.cfg + # is no longer supported + fake_env( + tmpdir, + '[metadata]\n' + 'author-email = test@test.com\n' + 'maintainer_email = foo@foo.com\n' + ) + msg = ("Usage of dash-separated 'author-email' will not be supported " + "in future versions. " + "Please use the underscore name 'author_email' instead") + with pytest.warns(UserWarning, match=msg): + with get_dist(tmpdir) as dist: + metadata = dist.metadata + assert metadata.author_email == 'test@test.com' + assert metadata.maintainer_email == 'foo@foo.com' + class TestOptions: -- cgit v1.2.1 From 67a5991997659326fd1439a58e2140731144f08c Mon Sep 17 00:00:00 2001 From: Melissa Li Date: Tue, 2 Mar 2021 23:25:39 -0500 Subject: Add test for dash preserved extras_require in setup.cfg --- setuptools/tests/test_config.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 4a399179..eac26749 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -791,6 +791,20 @@ class TestOptions: } assert dist.metadata.provides_extras == set(['pdf', 'rest']) + def test_dash_preserved_extras_require(self, tmpdir): + fake_env( + tmpdir, + '[options.extras_require]\n' + 'foo-a = foo\n' + 'foo_b = test\n' + ) + + with get_dist(tmpdir) as dist: + assert dist.extras_require == { + 'foo-a': ['foo'], + 'foo_b': ['test'] + } + def test_entry_points(self, tmpdir): _, config = fake_env( tmpdir, -- cgit v1.2.1 From fa48ac3626c21efc5261b4f112270ca40d2e004d Mon Sep 17 00:00:00 2001 From: Melissa Li Date: Fri, 5 Mar 2021 23:20:59 -0500 Subject: Test for uppercase metadata warning --- setuptools/tests/test_config.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index eac26749..454ffb24 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -526,6 +526,24 @@ class TestMetadata: assert metadata.author_email == 'test@test.com' assert metadata.maintainer_email == 'foo@foo.com' + def test_uppercase_warning(self, tmpdir): + # remove this test and the method uppercase_warning() in setuptools.dist + # when no longer needed + fake_env( + tmpdir, + '[metadata]\n' + 'Name = foo\n' + 'description = Some description\n' + ) + msg = ("Usage of uppercase key 'Name' in 'metadata' will be deprecated in " + "future versions. " + "Please use lowercase 'name' instead") + with pytest.warns(UserWarning, match=msg): + with get_dist(tmpdir) as dist: + metadata = dist.metadata + assert metadata.name == 'foo' + assert metadata.description == 'Some description' + class TestOptions: -- cgit v1.2.1 From 0bffc7c1c673f9735bdac71a2949fae809ec07a3 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 6 Mar 2021 21:47:15 -0500 Subject: Apply suggestions in code review. Co-authored-by: Sviatoslav Sydorenko --- setuptools/tests/test_config.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 454ffb24..1ff5ee41 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -541,8 +541,9 @@ class TestMetadata: with pytest.warns(UserWarning, match=msg): with get_dist(tmpdir) as dist: metadata = dist.metadata - assert metadata.name == 'foo' - assert metadata.description == 'Some description' + + assert metadata.name == 'foo' + assert metadata.description == 'Some description' class TestOptions: -- cgit v1.2.1 From 7129ad1107f7015fe16f275eec17bf36a8badd84 Mon Sep 17 00:00:00 2001 From: Melissa Li Date: Mon, 8 Mar 2021 03:25:14 -0500 Subject: Fix formatting of tests and change dash deprecation method name --- setuptools/tests/test_config.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 1ff5ee41..21f1becd 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -507,10 +507,9 @@ class TestMetadata: with get_dist(tmpdir): pass - def test_dash_to_underscore_warning(self, tmpdir): - # dash_to_underscore_warning() is a method in setuptools.dist - # remove this test and method when dash convert to underscore in setup.cfg - # is no longer supported + def test_warn_dash_deprecation(self, tmpdir): + # warn_dash_deprecation() is a method in setuptools.dist + # remove this test and the method when no longer needed fake_env( tmpdir, '[metadata]\n' @@ -523,11 +522,12 @@ class TestMetadata: with pytest.warns(UserWarning, match=msg): with get_dist(tmpdir) as dist: metadata = dist.metadata - assert metadata.author_email == 'test@test.com' - assert metadata.maintainer_email == 'foo@foo.com' - def test_uppercase_warning(self, tmpdir): - # remove this test and the method uppercase_warning() in setuptools.dist + assert metadata.author_email == 'test@test.com' + assert metadata.maintainer_email == 'foo@foo.com' + + def test_make_option_lowercase(self, tmpdir): + # remove this test and the method make_option_lowercase() in setuptools.dist # when no longer needed fake_env( tmpdir, -- cgit v1.2.1 From 36b4820f519d93bad998302141ae6de2cb15191c Mon Sep 17 00:00:00 2001 From: Alan Fregtman <941331+darkvertex@users.noreply.github.com> Date: Wed, 30 Jun 2021 01:15:18 -0400 Subject: Implement "glob:" directive for declarative "data_files" option. --- setuptools/tests/test_config.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 21f1becd..c86c8573 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -893,6 +893,41 @@ class TestOptions: ] assert sorted(dist.data_files) == sorted(expected) + def test_data_files_globby(self, tmpdir): + fake_env( + tmpdir, + '[options.data_files]\n' + 'cfg =\n' + ' a/b.conf\n' + ' c/d.conf\n' + 'data = glob: *.dat\n' + 'icons = \n' + ' glob: *.ico\n' + 'audio = \n' + ' glob:*.wav\n' + ' sounds.db\n' + ) + + # Create dummy files for glob()'s sake: + tmpdir.join('a.dat').write('') + tmpdir.join('b.dat').write('') + tmpdir.join('c.dat').write('') + tmpdir.join('a.ico').write('') + tmpdir.join('b.ico').write('') + tmpdir.join('c.ico').write('') + tmpdir.join('beep.wav').write('') + tmpdir.join('boop.wav').write('') + tmpdir.join('sounds.db').write('') + + with get_dist(tmpdir) as dist: + expected = [ + ('cfg', ['a/b.conf', 'c/d.conf']), + ('data', ['a.dat', 'b.dat', 'c.dat']), + ('icons', ['a.ico', 'b.ico', 'c.ico']), + ('audio', ['beep.wav', 'boop.wav', 'sounds.db']), + ] + assert sorted(dist.data_files) == sorted(expected) + def test_python_requires_simple(self, tmpdir): fake_env( tmpdir, -- cgit v1.2.1 From cb05fb0c94716b1d328ecca0573346218505b859 Mon Sep 17 00:00:00 2001 From: Alan Fregtman <941331+darkvertex@users.noreply.github.com> Date: Wed, 21 Jul 2021 17:34:14 -0400 Subject: Update globbing for [options.data_files] to be implicit, not requiring a custom directive. --- setuptools/tests/test_config.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index c86c8573..5172c6de 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -900,12 +900,13 @@ class TestOptions: 'cfg =\n' ' a/b.conf\n' ' c/d.conf\n' - 'data = glob: *.dat\n' + 'data = *.dat\n' 'icons = \n' - ' glob: *.ico\n' + ' *.ico\n' 'audio = \n' - ' glob:*.wav\n' + ' *.wav\n' ' sounds.db\n' + 'strangeness = literal_weird_filename?.txt\n' ) # Create dummy files for glob()'s sake: @@ -918,6 +919,7 @@ class TestOptions: tmpdir.join('beep.wav').write('') tmpdir.join('boop.wav').write('') tmpdir.join('sounds.db').write('') + tmpdir.join('literal_weird_filename?.txt').write('') with get_dist(tmpdir) as dist: expected = [ @@ -925,6 +927,7 @@ class TestOptions: ('data', ['a.dat', 'b.dat', 'c.dat']), ('icons', ['a.ico', 'b.ico', 'c.ico']), ('audio', ['beep.wav', 'boop.wav', 'sounds.db']), + ('strangeness', ['literal_weird_filename?.txt']), ] assert sorted(dist.data_files) == sorted(expected) -- cgit v1.2.1 From f094b7767b35e23f8e81f2f54c67cac9043e66be Mon Sep 17 00:00:00 2001 From: Alan Fregtman <941331+darkvertex@users.noreply.github.com> Date: Wed, 21 Jul 2021 23:30:32 -0400 Subject: globbing for [options.data_files]: Remove special treatment for filenames with globby characters that exist literally. --- setuptools/tests/test_config.py | 3 --- 1 file changed, 3 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index 5172c6de..ec65250e 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -906,7 +906,6 @@ class TestOptions: 'audio = \n' ' *.wav\n' ' sounds.db\n' - 'strangeness = literal_weird_filename?.txt\n' ) # Create dummy files for glob()'s sake: @@ -919,7 +918,6 @@ class TestOptions: tmpdir.join('beep.wav').write('') tmpdir.join('boop.wav').write('') tmpdir.join('sounds.db').write('') - tmpdir.join('literal_weird_filename?.txt').write('') with get_dist(tmpdir) as dist: expected = [ @@ -927,7 +925,6 @@ class TestOptions: ('data', ['a.dat', 'b.dat', 'c.dat']), ('icons', ['a.ico', 'b.ico', 'c.ico']), ('audio', ['beep.wav', 'boop.wav', 'sounds.db']), - ('strangeness', ['literal_weird_filename?.txt']), ] assert sorted(dist.data_files) == sorted(expected) -- cgit v1.2.1 From ca296ca8663a376f3c36c9f8fd86b10ba81366c2 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Sun, 18 Jul 2021 09:27:21 +0100 Subject: remove lib2to3 usage --- setuptools/tests/test_config.py | 353 ++++++++++++++-------------------------- 1 file changed, 123 insertions(+), 230 deletions(-) (limited to 'setuptools/tests/test_config.py') diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index ec65250e..005742e4 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -30,14 +30,11 @@ def make_package_dir(name, base_dir, ns=False): def fake_env( - tmpdir, setup_cfg, setup_py=None, - encoding='ascii', package_path='fake_package'): + tmpdir, setup_cfg, setup_py=None, encoding='ascii', package_path='fake_package' +): if setup_py is None: - setup_py = ( - 'from setuptools import setup\n' - 'setup()\n' - ) + setup_py = 'from setuptools import setup\n' 'setup()\n' tmpdir.join('setup.py').write(setup_py) config = tmpdir.join('setup.cfg') @@ -78,7 +75,6 @@ def test_parsers_implemented(): class TestConfigurationReader: - def test_basic(self, tmpdir): _, config = fake_env( tmpdir, @@ -87,7 +83,7 @@ class TestConfigurationReader: 'keywords = one, two\n' '\n' '[options]\n' - 'scripts = bin/a.py, bin/b.py\n' + 'scripts = bin/a.py, bin/b.py\n', ) config_dict = read_configuration('%s' % config) assert config_dict['metadata']['version'] == '10.1.1' @@ -101,15 +97,12 @@ class TestConfigurationReader: def test_ignore_errors(self, tmpdir): _, config = fake_env( tmpdir, - '[metadata]\n' - 'version = attr: none.VERSION\n' - 'keywords = one, two\n' + '[metadata]\n' 'version = attr: none.VERSION\n' 'keywords = one, two\n', ) with pytest.raises(ImportError): read_configuration('%s' % config) - config_dict = read_configuration( - '%s' % config, ignore_option_errors=True) + config_dict = read_configuration('%s' % config, ignore_option_errors=True) assert config_dict['metadata']['keywords'] == ['one', 'two'] assert 'version' not in config_dict['metadata'] @@ -118,7 +111,6 @@ class TestConfigurationReader: class TestMetadata: - def test_basic(self, tmpdir): fake_env( @@ -133,7 +125,7 @@ class TestMetadata: 'provides = package, package.sub\n' 'license = otherlic\n' 'download_url = http://test.test.com/test/\n' - 'maintainer_email = test@test.com\n' + 'maintainer_email = test@test.com\n', ) tmpdir.join('README').write('readme contents\nline2') @@ -160,12 +152,14 @@ class TestMetadata: def test_license_cfg(self, tmpdir): fake_env( tmpdir, - DALS(""" + DALS( + """ [metadata] name=foo version=0.0.1 license=Apache 2.0 - """) + """ + ), ) with get_dist(tmpdir) as dist: @@ -179,9 +173,7 @@ class TestMetadata: fake_env( tmpdir, - '[metadata]\n' - 'long_description = file: README.rst, CHANGES.rst\n' - '\n' + '[metadata]\n' 'long_description = file: README.rst, CHANGES.rst\n' '\n', ) tmpdir.join('README.rst').write('readme contents\nline2') @@ -189,17 +181,12 @@ class TestMetadata: with get_dist(tmpdir) as dist: assert dist.metadata.long_description == ( - 'readme contents\nline2\n' - 'changelog contents\nand stuff' + 'readme contents\nline2\n' 'changelog contents\nand stuff' ) def test_file_sandboxed(self, tmpdir): - fake_env( - tmpdir, - '[metadata]\n' - 'long_description = file: ../../README\n' - ) + fake_env(tmpdir, '[metadata]\n' 'long_description = file: ../../README\n') with get_dist(tmpdir, parse=False) as dist: with pytest.raises(DistutilsOptionError): @@ -216,7 +203,7 @@ class TestMetadata: 'platform = a, b\n' 'classifier =\n' ' Framework :: Django\n' - ' Programming Language :: Python :: 3.5\n' + ' Programming Language :: Python :: 3.5\n', ) with get_dist(tmpdir) as dist: @@ -241,7 +228,7 @@ class TestMetadata: ' two\n' 'classifiers =\n' ' Framework :: Django\n' - ' Programming Language :: Python :: 3.5\n' + ' Programming Language :: Python :: 3.5\n', ) with get_dist(tmpdir) as dist: metadata = dist.metadata @@ -258,7 +245,7 @@ class TestMetadata: '[metadata]\n' 'project_urls =\n' ' Link One = https://example.com/one/\n' - ' Link Two = https://example.com/two/\n' + ' Link Two = https://example.com/two/\n', ) with get_dist(tmpdir) as dist: metadata = dist.metadata @@ -270,9 +257,7 @@ class TestMetadata: def test_version(self, tmpdir): package_dir, config = fake_env( - tmpdir, - '[metadata]\n' - 'version = attr: fake_package.VERSION\n' + tmpdir, '[metadata]\n' 'version = attr: fake_package.VERSION\n' ) sub_a = package_dir.mkdir('subpkg_a') @@ -282,37 +267,28 @@ class TestMetadata: sub_b = package_dir.mkdir('subpkg_b') sub_b.join('__init__.py').write('') sub_b.join('mod.py').write( - 'import third_party_module\n' - 'VERSION = (2016, 11, 26)' + 'import third_party_module\n' 'VERSION = (2016, 11, 26)' ) with get_dist(tmpdir) as dist: assert dist.metadata.version == '1.2.3' - config.write( - '[metadata]\n' - 'version = attr: fake_package.get_version\n' - ) + config.write('[metadata]\n' 'version = attr: fake_package.get_version\n') with get_dist(tmpdir) as dist: assert dist.metadata.version == '3.4.5.dev' - config.write( - '[metadata]\n' - 'version = attr: fake_package.VERSION_MAJOR\n' - ) + config.write('[metadata]\n' 'version = attr: fake_package.VERSION_MAJOR\n') with get_dist(tmpdir) as dist: assert dist.metadata.version == '1' config.write( - '[metadata]\n' - 'version = attr: fake_package.subpkg_a.mod.VERSION\n' + '[metadata]\n' 'version = attr: fake_package.subpkg_a.mod.VERSION\n' ) with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' config.write( - '[metadata]\n' - 'version = attr: fake_package.subpkg_b.mod.VERSION\n' + '[metadata]\n' 'version = attr: fake_package.subpkg_b.mod.VERSION\n' ) with get_dist(tmpdir) as dist: assert dist.metadata.version == '2016.11.26' @@ -320,9 +296,7 @@ class TestMetadata: def test_version_file(self, tmpdir): _, config = fake_env( - tmpdir, - '[metadata]\n' - 'version = file: fake_package/version.txt\n' + tmpdir, '[metadata]\n' 'version = file: fake_package/version.txt\n' ) tmpdir.join('fake_package', 'version.txt').write('1.2.3\n') @@ -343,7 +317,7 @@ class TestMetadata: '[options]\n' 'package_dir =\n' ' = src\n', - package_path='src/fake_package_simple' + package_path='src/fake_package_simple', ) with get_dist(tmpdir) as dist: @@ -358,7 +332,7 @@ class TestMetadata: '[options]\n' 'package_dir =\n' ' fake_package_rename = fake_dir\n', - package_path='fake_dir' + package_path='fake_dir', ) with get_dist(tmpdir) as dist: @@ -373,7 +347,7 @@ class TestMetadata: '[options]\n' 'package_dir =\n' ' fake_package_complex = src/fake_dir\n', - package_path='src/fake_dir' + package_path='src/fake_dir', ) with get_dist(tmpdir) as dist: @@ -381,39 +355,28 @@ class TestMetadata: def test_unknown_meta_item(self, tmpdir): - fake_env( - tmpdir, - '[metadata]\n' - 'name = fake_name\n' - 'unknown = some\n' - ) + fake_env(tmpdir, '[metadata]\n' 'name = fake_name\n' 'unknown = some\n') with get_dist(tmpdir, parse=False) as dist: dist.parse_config_files() # Skip unknown. def test_usupported_section(self, tmpdir): - fake_env( - tmpdir, - '[metadata.some]\n' - 'key = val\n' - ) + 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 = set([ - 'Framework :: Django', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.5', - ]) + expected = set( + [ + 'Framework :: Django', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.5', + ] + ) # From file. - _, config = fake_env( - tmpdir, - '[metadata]\n' - 'classifiers = file: classifiers\n' - ) + _, config = fake_env(tmpdir, '[metadata]\n' 'classifiers = file: classifiers\n') tmpdir.join('classifiers').write( 'Framework :: Django\n' @@ -441,7 +404,7 @@ class TestMetadata: '[metadata]\n' 'version = 10.1.1\n' 'description = Some description\n' - 'requires = some, requirement\n' + 'requires = some, requirement\n', ) with pytest.deprecated_call(): @@ -453,41 +416,26 @@ class TestMetadata: assert metadata.requires == ['some', 'requirement'] def test_interpolation(self, tmpdir): - fake_env( - tmpdir, - '[metadata]\n' - 'description = %(message)s\n' - ) + fake_env(tmpdir, '[metadata]\n' 'description = %(message)s\n') with pytest.raises(configparser.InterpolationMissingOptionError): with get_dist(tmpdir): pass def test_non_ascii_1(self, tmpdir): - fake_env( - tmpdir, - '[metadata]\n' - 'description = éàïôñ\n', - encoding='utf-8' - ) + fake_env(tmpdir, '[metadata]\n' 'description = éàïôñ\n', encoding='utf-8') with get_dist(tmpdir): pass def test_non_ascii_3(self, tmpdir): - fake_env( - tmpdir, - '\n' - '# -*- coding: invalid\n' - ) + fake_env(tmpdir, '\n' '# -*- coding: invalid\n') with get_dist(tmpdir): pass def test_non_ascii_4(self, tmpdir): fake_env( tmpdir, - '# -*- coding: utf-8\n' - '[metadata]\n' - 'description = éàïôñ\n', - encoding='utf-8' + '# -*- coding: utf-8\n' '[metadata]\n' 'description = éàïôñ\n', + encoding='utf-8', ) with get_dist(tmpdir) as dist: assert dist.metadata.description == 'éàïôñ' @@ -501,7 +449,7 @@ class TestMetadata: '# vim: set fileencoding=iso-8859-15 :\n' '[metadata]\n' 'description = éàïôñ\n', - encoding='iso-8859-15' + encoding='iso-8859-15', ) with pytest.raises(UnicodeDecodeError): with get_dist(tmpdir): @@ -514,11 +462,13 @@ class TestMetadata: tmpdir, '[metadata]\n' 'author-email = test@test.com\n' - 'maintainer_email = foo@foo.com\n' - ) - msg = ("Usage of dash-separated 'author-email' will not be supported " - "in future versions. " - "Please use the underscore name 'author_email' instead") + 'maintainer_email = foo@foo.com\n', + ) + msg = ( + "Usage of dash-separated 'author-email' will not be supported " + "in future versions. " + "Please use the underscore name 'author_email' instead" + ) with pytest.warns(UserWarning, match=msg): with get_dist(tmpdir) as dist: metadata = dist.metadata @@ -530,14 +480,13 @@ class TestMetadata: # remove this test and the method make_option_lowercase() in setuptools.dist # when no longer needed fake_env( - tmpdir, - '[metadata]\n' - 'Name = foo\n' - 'description = Some description\n' + tmpdir, '[metadata]\n' 'Name = foo\n' 'description = Some description\n' + ) + msg = ( + "Usage of uppercase key 'Name' in 'metadata' will be deprecated in " + "future versions. " + "Please use lowercase 'name' instead" ) - msg = ("Usage of uppercase key 'Name' in 'metadata' will be deprecated in " - "future versions. " - "Please use lowercase 'name' instead") with pytest.warns(UserWarning, match=msg): with get_dist(tmpdir) as dist: metadata = dist.metadata @@ -547,21 +496,16 @@ class TestMetadata: 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' @@ -570,34 +514,24 @@ class TestOptions: 'dependency_links = http://some.com/here/1, ' 'http://some.com/there/2\n' 'python_requires = >=1.0, !=2.8\n' - 'py_modules = module1, module2\n' + 'py_modules = module1, module2\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 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.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'] assert dist.python_requires == '>=1.0, !=2.8' assert dist.py_modules == ['module1', 'module2'] @@ -615,15 +549,6 @@ class TestOptions: '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' @@ -643,39 +568,26 @@ class TestOptions: ' there\n' 'dependency_links = \n' ' http://some.com/here/1\n' - ' http://some.com/there/2\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.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( - tmpdir, - '[options]\n' - 'package_dir = a b\n' - ) + 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() @@ -689,7 +601,7 @@ class TestOptions: '\n' '[options.exclude_package_data]\n' '* = fake1.txt, fake2.txt\n' - 'hello = *.dat\n' + 'hello = *.dat\n', ) with get_dist(tmpdir) as dist: @@ -703,29 +615,21 @@ class TestOptions: } def test_packages(self, tmpdir): - fake_env( - tmpdir, - '[options]\n' - 'packages = find:\n' - ) + fake_env(tmpdir, '[options]\n' 'packages = find:\n') with get_dist(tmpdir) as dist: assert dist.packages == ['fake_package'] def test_find_directive(self, tmpdir): - dir_package, config = fake_env( - tmpdir, - '[options]\n' - 'packages = find:\n' - ) + dir_package, config = fake_env(tmpdir, '[options]\n' 'packages = find:\n') dir_sub_one, _ = make_package_dir('sub_one', dir_package) dir_sub_two, _ = make_package_dir('sub_two', dir_package) with get_dist(tmpdir) as dist: - assert set(dist.packages) == set([ - 'fake_package', 'fake_package.sub_two', 'fake_package.sub_one' - ]) + assert set(dist.packages) == set( + ['fake_package', 'fake_package.sub_two', 'fake_package.sub_one'] + ) config.write( '[options]\n' @@ -749,14 +653,11 @@ class TestOptions: ' fake_package.sub_one\n' ) with get_dist(tmpdir) as dist: - assert set(dist.packages) == set( - ['fake_package', 'fake_package.sub_two']) + assert set(dist.packages) == set(['fake_package', 'fake_package.sub_two']) def test_find_namespace_directive(self, tmpdir): dir_package, config = fake_env( - tmpdir, - '[options]\n' - 'packages = find_namespace:\n' + tmpdir, '[options]\n' 'packages = find_namespace:\n' ) dir_sub_one, _ = make_package_dir('sub_one', dir_package) @@ -764,7 +665,9 @@ class TestOptions: with get_dist(tmpdir) as dist: assert set(dist.packages) == { - 'fake_package', 'fake_package.sub_two', 'fake_package.sub_one' + 'fake_package', + 'fake_package.sub_two', + 'fake_package.sub_one', } config.write( @@ -789,9 +692,7 @@ class TestOptions: ' fake_package.sub_one\n' ) with get_dist(tmpdir) as dist: - assert set(dist.packages) == { - 'fake_package', 'fake_package.sub_two' - } + assert set(dist.packages) == {'fake_package', 'fake_package.sub_two'} def test_extras_require(self, tmpdir): fake_env( @@ -800,29 +701,21 @@ class TestOptions: 'pdf = ReportLab>=1.2; RXP\n' 'rest = \n' ' docutils>=0.3\n' - ' pack ==1.1, ==1.3\n' + ' 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'] + 'rest': ['docutils>=0.3', 'pack==1.1,==1.3'], } assert dist.metadata.provides_extras == set(['pdf', 'rest']) def test_dash_preserved_extras_require(self, tmpdir): - fake_env( - tmpdir, - '[options.extras_require]\n' - 'foo-a = foo\n' - 'foo_b = test\n' - ) + fake_env(tmpdir, '[options.extras_require]\n' 'foo-a = foo\n' 'foo_b = test\n') with get_dist(tmpdir) as dist: - assert dist.extras_require == { - 'foo-a': ['foo'], - 'foo_b': ['test'] - } + assert dist.extras_require == {'foo-a': ['foo'], 'foo_b': ['test']} def test_entry_points(self, tmpdir): _, config = fake_env( @@ -830,7 +723,7 @@ class TestOptions: '[options.entry_points]\n' 'group1 = point1 = pack.module:func, ' '.point2 = pack.module2:func_rest [rest]\n' - 'group2 = point3 = pack.module:func2\n' + 'group2 = point3 = pack.module:func2\n', ) with get_dist(tmpdir) as dist: @@ -839,7 +732,7 @@ class TestOptions: 'point1 = pack.module:func', '.point2 = pack.module2:func_rest [rest]', ], - 'group2': ['point3 = pack.module:func2'] + 'group2': ['point3 = pack.module:func2'], } expected = ( @@ -850,10 +743,7 @@ class TestOptions: tmpdir.join('entry_points').write(expected) # From file. - config.write( - '[options]\n' - 'entry_points = file: entry_points\n' - ) + config.write('[options]\n' 'entry_points = file: entry_points\n') with get_dist(tmpdir) as dist: assert dist.entry_points == expected @@ -864,7 +754,7 @@ class TestOptions: '[options.entry_points]\n' 'GROUP1 = point1 = pack.module:func, ' '.point2 = pack.module2:func_rest [rest]\n' - 'group2 = point3 = pack.module:func2\n' + 'group2 = point3 = pack.module:func2\n', ) with get_dist(tmpdir) as dist: @@ -873,7 +763,7 @@ class TestOptions: 'point1 = pack.module:func', '.point2 = pack.module2:func_rest [rest]', ], - 'group2': ['point3 = pack.module:func2'] + 'group2': ['point3 = pack.module:func2'], } def test_data_files(self, tmpdir): @@ -883,7 +773,7 @@ class TestOptions: 'cfg =\n' ' a/b.conf\n' ' c/d.conf\n' - 'data = e/f.dat, g/h.dat\n' + 'data = e/f.dat, g/h.dat\n', ) with get_dist(tmpdir) as dist: @@ -931,10 +821,12 @@ class TestOptions: def test_python_requires_simple(self, tmpdir): fake_env( tmpdir, - DALS(""" + DALS( + """ [options] python_requires=>=2.7 - """), + """ + ), ) with get_dist(tmpdir) as dist: dist.parse_config_files() @@ -942,10 +834,12 @@ class TestOptions: def test_python_requires_compound(self, tmpdir): fake_env( tmpdir, - DALS(""" + DALS( + """ [options] python_requires=>=2.7,!=3.0.* - """), + """ + ), ) with get_dist(tmpdir) as dist: dist.parse_config_files() @@ -953,10 +847,12 @@ class TestOptions: def test_python_requires_invalid(self, tmpdir): fake_env( tmpdir, - DALS(""" + DALS( + """ [options] python_requires=invalid - """), + """ + ), ) with pytest.raises(Exception): with get_dist(tmpdir) as dist: @@ -974,9 +870,7 @@ class TestOptions: fake_env( tmpdir, - '[options]\n' - 'cmdclass =\n' - ' customcmd = custom_build.CustomCmd\n' + '[options]\n' 'cmdclass =\n' ' customcmd = custom_build.CustomCmd\n', ) with get_dist(tmpdir) as dist: @@ -1000,24 +894,23 @@ class TestExternalSetters: def _fake_distribution_init(self, dist, attrs): saved_dist_init(dist, attrs) # see self._DISTUTUILS_UNSUPPORTED_METADATA - setattr(dist.metadata, 'long_description_content_type', - 'text/something') + setattr(dist.metadata, 'long_description_content_type', 'text/something') # Test overwrite setup() args - setattr(dist.metadata, 'project_urls', { - 'Link One': 'https://example.com/one/', - 'Link Two': 'https://example.com/two/', - }) + setattr( + dist.metadata, + 'project_urls', + { + 'Link One': 'https://example.com/one/', + 'Link Two': 'https://example.com/two/', + }, + ) return None @patch.object(_Distribution, '__init__', autospec=True) def test_external_setters(self, mock_parent_init, tmpdir): mock_parent_init.side_effect = self._fake_distribution_init - dist = Distribution(attrs={ - 'project_urls': { - 'will_be': 'ignored' - } - }) + dist = Distribution(attrs={'project_urls': {'will_be': 'ignored'}}) assert dist.metadata.long_description_content_type == 'text/something' assert dist.metadata.project_urls == { -- cgit v1.2.1