aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/tests/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools/tests/__init__.py')
-rw-r--r--setuptools/tests/__init__.py282
1 files changed, 127 insertions, 155 deletions
diff --git a/setuptools/tests/__init__.py b/setuptools/tests/__init__.py
index 823cf937..8cde6f60 100644
--- a/setuptools/tests/__init__.py
+++ b/setuptools/tests/__init__.py
@@ -1,8 +1,6 @@
"""Tests for the 'setuptools' package"""
import sys
import os
-import unittest
-import doctest
import distutils.core
import distutils.cmd
from distutils.errors import DistutilsOptionError, DistutilsPlatformError
@@ -11,23 +9,13 @@ from distutils.core import Extension
from distutils.version import LooseVersion
import six
+import pytest
import setuptools.dist
import setuptools.depends as dep
from setuptools import Feature
from setuptools.depends import Require
-def additional_tests():
- suite = unittest.TestSuite((
- doctest.DocFileSuite(
- os.path.join('tests', 'api_tests.txt'),
- optionflags=doctest.ELLIPSIS, package='pkg_resources',
- ),
- ))
- if sys.platform == 'win32':
- suite.addTest(doctest.DocFileSuite('win_script_wrapper.txt'))
- return suite
-
def makeSetup(**args):
"""Return distribution from 'setup(**args)', without executing commands"""
@@ -42,7 +30,12 @@ def makeSetup(**args):
distutils.core._setup_stop_after = None
-class DependsTests(unittest.TestCase):
+needs_bytecode = pytest.mark.skipif(
+ not hasattr(dep, 'get_module_constant'),
+ reason="bytecode support not available",
+)
+
+class TestDepends:
def testExtractConst(self):
if not hasattr(dep, 'extract_constant'):
@@ -55,86 +48,77 @@ class DependsTests(unittest.TestCase):
y = z
fc = six.get_function_code(f1)
+
# unrecognized name
- self.assertEqual(dep.extract_constant(fc,'q', -1), None)
+ assert dep.extract_constant(fc,'q', -1) is None
# constant assigned
- self.assertEqual(dep.extract_constant(fc,'x', -1), "test")
+ dep.extract_constant(fc,'x', -1) == "test"
# expression assigned
- self.assertEqual(dep.extract_constant(fc,'y', -1), -1)
+ dep.extract_constant(fc,'y', -1) == -1
# recognized name, not assigned
- self.assertEqual(dep.extract_constant(fc,'z', -1), None)
+ dep.extract_constant(fc,'z', -1) is None
def testFindModule(self):
- self.assertRaises(ImportError, dep.find_module, 'no-such.-thing')
- self.assertRaises(ImportError, dep.find_module, 'setuptools.non-existent')
+ with pytest.raises(ImportError):
+ dep.find_module('no-such.-thing')
+ with pytest.raises(ImportError):
+ dep.find_module('setuptools.non-existent')
f,p,i = dep.find_module('setuptools.tests')
f.close()
+ @needs_bytecode
def testModuleExtract(self):
- if not hasattr(dep, 'get_module_constant'):
- # skip on non-bytecode platforms
- return
-
from email import __version__
- self.assertEqual(
- dep.get_module_constant('email','__version__'), __version__
- )
- self.assertEqual(
- dep.get_module_constant('sys','version'), sys.version
- )
- self.assertEqual(
- dep.get_module_constant('setuptools.tests','__doc__'),__doc__
- )
+ assert dep.get_module_constant('email','__version__') == __version__
+ assert dep.get_module_constant('sys','version') == sys.version
+ assert dep.get_module_constant('setuptools.tests','__doc__') == __doc__
+ @needs_bytecode
def testRequire(self):
- if not hasattr(dep, 'extract_constant'):
- # skip on non-bytecode platformsh
- return
-
req = Require('Email','1.0.3','email')
- self.assertEqual(req.name, 'Email')
- self.assertEqual(req.module, 'email')
- self.assertEqual(req.requested_version, '1.0.3')
- self.assertEqual(req.attribute, '__version__')
- self.assertEqual(req.full_name(), 'Email-1.0.3')
+ assert req.name == 'Email'
+ assert req.module == 'email'
+ assert req.requested_version == '1.0.3'
+ assert req.attribute == '__version__'
+ assert req.full_name() == 'Email-1.0.3'
from email import __version__
- self.assertEqual(req.get_version(), __version__)
- self.assertTrue(req.version_ok('1.0.9'))
- self.assertTrue(not req.version_ok('0.9.1'))
- self.assertTrue(not req.version_ok('unknown'))
+ assert req.get_version() == __version__
+ assert req.version_ok('1.0.9')
+ assert not req.version_ok('0.9.1')
+ assert not req.version_ok('unknown')
- self.assertTrue(req.is_present())
- self.assertTrue(req.is_current())
+ assert req.is_present()
+ assert req.is_current()
req = Require('Email 3000','03000','email',format=LooseVersion)
- self.assertTrue(req.is_present())
- self.assertTrue(not req.is_current())
- self.assertTrue(not req.version_ok('unknown'))
+ assert req.is_present()
+ assert not req.is_current()
+ assert not req.version_ok('unknown')
req = Require('Do-what-I-mean','1.0','d-w-i-m')
- self.assertTrue(not req.is_present())
- self.assertTrue(not req.is_current())
+ assert not req.is_present()
+ assert not req.is_current()
req = Require('Tests', None, 'tests', homepage="http://example.com")
- self.assertEqual(req.format, None)
- self.assertEqual(req.attribute, None)
- self.assertEqual(req.requested_version, None)
- self.assertEqual(req.full_name(), 'Tests')
- self.assertEqual(req.homepage, 'http://example.com')
+ assert req.format is None
+ assert req.attribute is None
+ assert req.requested_version is None
+ assert req.full_name() == 'Tests'
+ assert req.homepage == 'http://example.com'
paths = [os.path.dirname(p) for p in __path__]
- self.assertTrue(req.is_present(paths))
- self.assertTrue(req.is_current(paths))
+ assert req.is_present(paths)
+ assert req.is_current(paths)
-class DistroTests(unittest.TestCase):
+class TestDistro:
- def setUp(self):
+ def setup_method(self, method):
self.e1 = Extension('bar.ext',['bar.c'])
self.e2 = Extension('c.y', ['y.c'])
@@ -146,21 +130,21 @@ class DistroTests(unittest.TestCase):
)
def testDistroType(self):
- self.assertTrue(isinstance(self.dist,setuptools.dist.Distribution))
+ assert isinstance(self.dist,setuptools.dist.Distribution)
def testExcludePackage(self):
self.dist.exclude_package('a')
- self.assertEqual(self.dist.packages, ['b','c'])
+ assert self.dist.packages == ['b','c']
self.dist.exclude_package('b')
- self.assertEqual(self.dist.packages, ['c'])
- self.assertEqual(self.dist.py_modules, ['x'])
- self.assertEqual(self.dist.ext_modules, [self.e1, self.e2])
+ assert self.dist.packages == ['c']
+ assert self.dist.py_modules == ['x']
+ assert self.dist.ext_modules == [self.e1, self.e2]
self.dist.exclude_package('c')
- self.assertEqual(self.dist.packages, [])
- self.assertEqual(self.dist.py_modules, ['x'])
- self.assertEqual(self.dist.ext_modules, [self.e1])
+ assert self.dist.packages == []
+ assert self.dist.py_modules == ['x']
+ assert self.dist.ext_modules == [self.e1]
# test removals from unspecified options
makeSetup().exclude_package('x')
@@ -168,21 +152,21 @@ class DistroTests(unittest.TestCase):
def testIncludeExclude(self):
# remove an extension
self.dist.exclude(ext_modules=[self.e1])
- self.assertEqual(self.dist.ext_modules, [self.e2])
+ assert self.dist.ext_modules == [self.e2]
# add it back in
self.dist.include(ext_modules=[self.e1])
- self.assertEqual(self.dist.ext_modules, [self.e2, self.e1])
+ assert self.dist.ext_modules == [self.e2, self.e1]
# should not add duplicate
self.dist.include(ext_modules=[self.e1])
- self.assertEqual(self.dist.ext_modules, [self.e2, self.e1])
+ assert self.dist.ext_modules == [self.e2, self.e1]
def testExcludePackages(self):
self.dist.exclude(packages=['c','b','a'])
- self.assertEqual(self.dist.packages, [])
- self.assertEqual(self.dist.py_modules, ['x'])
- self.assertEqual(self.dist.ext_modules, [self.e1])
+ assert self.dist.packages == []
+ assert self.dist.py_modules == ['x']
+ assert self.dist.ext_modules == [self.e1]
def testEmpty(self):
dist = makeSetup()
@@ -191,49 +175,41 @@ class DistroTests(unittest.TestCase):
dist.exclude(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
def testContents(self):
- self.assertTrue(self.dist.has_contents_for('a'))
+ assert self.dist.has_contents_for('a')
self.dist.exclude_package('a')
- self.assertTrue(not self.dist.has_contents_for('a'))
+ assert not self.dist.has_contents_for('a')
- self.assertTrue(self.dist.has_contents_for('b'))
+ assert self.dist.has_contents_for('b')
self.dist.exclude_package('b')
- self.assertTrue(not self.dist.has_contents_for('b'))
+ assert not self.dist.has_contents_for('b')
- self.assertTrue(self.dist.has_contents_for('c'))
+ assert self.dist.has_contents_for('c')
self.dist.exclude_package('c')
- self.assertTrue(not self.dist.has_contents_for('c'))
+ assert not self.dist.has_contents_for('c')
def testInvalidIncludeExclude(self):
- self.assertRaises(DistutilsSetupError,
- self.dist.include, nonexistent_option='x'
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.exclude, nonexistent_option='x'
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.include, packages={'x':'y'}
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.exclude, packages={'x':'y'}
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.include, ext_modules={'x':'y'}
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.exclude, ext_modules={'x':'y'}
- )
-
- self.assertRaises(DistutilsSetupError,
- self.dist.include, package_dir=['q']
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.exclude, package_dir=['q']
- )
-
-
-class FeatureTests(unittest.TestCase):
-
- def setUp(self):
+ with pytest.raises(DistutilsSetupError):
+ self.dist.include(nonexistent_option='x')
+ with pytest.raises(DistutilsSetupError):
+ self.dist.exclude(nonexistent_option='x')
+ with pytest.raises(DistutilsSetupError):
+ self.dist.include(packages={'x':'y'})
+ with pytest.raises(DistutilsSetupError):
+ self.dist.exclude(packages={'x':'y'})
+ with pytest.raises(DistutilsSetupError):
+ self.dist.include(ext_modules={'x':'y'})
+ with pytest.raises(DistutilsSetupError):
+ self.dist.exclude(ext_modules={'x':'y'})
+
+ with pytest.raises(DistutilsSetupError):
+ self.dist.include(package_dir=['q'])
+ with pytest.raises(DistutilsSetupError):
+ self.dist.exclude(package_dir=['q'])
+
+
+class TestFeatures:
+
+ def setup_method(self, method):
self.req = Require('Distutils','1.0.3','distutils')
self.dist = makeSetup(
features={
@@ -255,80 +231,75 @@ class FeatureTests(unittest.TestCase):
)
def testDefaults(self):
- self.assertTrue(not
- Feature(
- "test",standard=True,remove='x',available=False
- ).include_by_default()
- )
- self.assertTrue(
- Feature("test",standard=True,remove='x').include_by_default()
- )
+ assert not Feature(
+ "test",standard=True,remove='x',available=False
+ ).include_by_default()
+ assert Feature("test",standard=True,remove='x').include_by_default()
# Feature must have either kwargs, removes, or require_features
- self.assertRaises(DistutilsSetupError, Feature, "test")
+ with pytest.raises(DistutilsSetupError):
+ Feature("test")
def testAvailability(self):
- self.assertRaises(
- DistutilsPlatformError,
- self.dist.features['dwim'].include_in, self.dist
- )
+ with pytest.raises(DistutilsPlatformError):
+ self.dist.features['dwim'].include_in(self.dist)
def testFeatureOptions(self):
dist = self.dist
- self.assertTrue(
+ assert (
('with-dwim',None,'include DWIM') in dist.feature_options
)
- self.assertTrue(
+ assert (
('without-dwim',None,'exclude DWIM (default)') in dist.feature_options
)
- self.assertTrue(
+ assert (
('with-bar',None,'include bar (default)') in dist.feature_options
)
- self.assertTrue(
+ assert (
('without-bar',None,'exclude bar') in dist.feature_options
)
- self.assertEqual(dist.feature_negopt['without-foo'],'with-foo')
- self.assertEqual(dist.feature_negopt['without-bar'],'with-bar')
- self.assertEqual(dist.feature_negopt['without-dwim'],'with-dwim')
- self.assertTrue(not 'without-baz' in dist.feature_negopt)
+ assert dist.feature_negopt['without-foo'] == 'with-foo'
+ assert dist.feature_negopt['without-bar'] == 'with-bar'
+ assert dist.feature_negopt['without-dwim'] == 'with-dwim'
+ assert (not 'without-baz' in dist.feature_negopt)
def testUseFeatures(self):
dist = self.dist
- self.assertEqual(dist.with_foo,1)
- self.assertEqual(dist.with_bar,0)
- self.assertEqual(dist.with_baz,1)
- self.assertTrue(not 'bar_et' in dist.py_modules)
- self.assertTrue(not 'pkg.bar' in dist.packages)
- self.assertTrue('pkg.baz' in dist.packages)
- self.assertTrue('scripts/baz_it' in dist.scripts)
- self.assertTrue(('libfoo','foo/foofoo.c') in dist.libraries)
- self.assertEqual(dist.ext_modules,[])
- self.assertEqual(dist.require_features, [self.req])
+ assert dist.with_foo == 1
+ assert dist.with_bar == 0
+ assert dist.with_baz == 1
+ assert (not 'bar_et' in dist.py_modules)
+ assert (not 'pkg.bar' in dist.packages)
+ assert ('pkg.baz' in dist.packages)
+ assert ('scripts/baz_it' in dist.scripts)
+ assert (('libfoo','foo/foofoo.c') in dist.libraries)
+ assert dist.ext_modules == []
+ assert dist.require_features == [self.req]
# If we ask for bar, it should fail because we explicitly disabled
# it on the command line
- self.assertRaises(DistutilsOptionError, dist.include_feature, 'bar')
+ with pytest.raises(DistutilsOptionError):
+ dist.include_feature('bar')
def testFeatureWithInvalidRemove(self):
- self.assertRaises(
- SystemExit, makeSetup, features = {'x':Feature('x', remove='y')}
- )
+ with pytest.raises(SystemExit):
+ makeSetup(features={'x':Feature('x', remove='y')})
-class TestCommandTests(unittest.TestCase):
+class TestCommandTests:
def testTestIsCommand(self):
test_cmd = makeSetup().get_command_obj('test')
- self.assertTrue(isinstance(test_cmd, distutils.cmd.Command))
+ assert (isinstance(test_cmd, distutils.cmd.Command))
def testLongOptSuiteWNoDefault(self):
ts1 = makeSetup(script_args=['test','--test-suite=foo.tests.suite'])
ts1 = ts1.get_command_obj('test')
ts1.ensure_finalized()
- self.assertEqual(ts1.test_suite, 'foo.tests.suite')
+ assert ts1.test_suite == 'foo.tests.suite'
def testDefaultSuite(self):
ts2 = makeSetup(test_suite='bar.tests.suite').get_command_obj('test')
ts2.ensure_finalized()
- self.assertEqual(ts2.test_suite, 'bar.tests.suite')
+ assert ts2.test_suite == 'bar.tests.suite'
def testDefaultWModuleOnCmdLine(self):
ts3 = makeSetup(
@@ -336,16 +307,17 @@ class TestCommandTests(unittest.TestCase):
script_args=['test','-m','foo.tests']
).get_command_obj('test')
ts3.ensure_finalized()
- self.assertEqual(ts3.test_module, 'foo.tests')
- self.assertEqual(ts3.test_suite, 'foo.tests.test_suite')
+ assert ts3.test_module == 'foo.tests'
+ assert ts3.test_suite == 'foo.tests.test_suite'
def testConflictingOptions(self):
ts4 = makeSetup(
script_args=['test','-m','bar.tests', '-s','foo.tests.suite']
).get_command_obj('test')
- self.assertRaises(DistutilsOptionError, ts4.ensure_finalized)
+ with pytest.raises(DistutilsOptionError):
+ ts4.ensure_finalized()
def testNoSuite(self):
ts5 = makeSetup().get_command_obj('test')
ts5.ensure_finalized()
- self.assertEqual(ts5.test_suite, None)
+ assert ts5.test_suite == None