summaryrefslogtreecommitdiff
path: root/setuptools/tests
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2014-03-08 08:24:33 -0500
committerJason R. Coombs <jaraco@jaraco.com>2014-03-08 08:24:33 -0500
commite4460fad043f4fa0edc7b7e1eef0b209f4588fe5 (patch)
tree378259e8207d745cf82ef53309ba08c93090a541 /setuptools/tests
parent3e99a57dcc3f2f0d9cc3f7f40077039bfd7a45a4 (diff)
downloadpython-setuptools-git-e4460fad043f4fa0edc7b7e1eef0b209f4588fe5.tar.gz
Backout b17e9a0ea116 and 50725de303ef, restoring Feature model. Fixes #161 and re-opens #65.
--HG-- extra : amend_source : f14bc0bf6c9f04e16d30ce0abf7bcb944f41ebea
Diffstat (limited to 'setuptools/tests')
-rw-r--r--setuptools/tests/__init__.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/setuptools/tests/__init__.py b/setuptools/tests/__init__.py
index a8eb7110..b5328ce6 100644
--- a/setuptools/tests/__init__.py
+++ b/setuptools/tests/__init__.py
@@ -14,6 +14,7 @@ from setuptools.compat import func_code
from setuptools.compat import func_code
import setuptools.dist
import setuptools.depends as dep
+from setuptools import Feature
from setuptools.depends import Require
def additional_tests():
@@ -230,6 +231,89 @@ class DistroTests(unittest.TestCase):
self.dist.exclude, package_dir=['q']
)
+
+class FeatureTests(unittest.TestCase):
+
+ def setUp(self):
+ self.req = Require('Distutils','1.0.3','distutils')
+ self.dist = makeSetup(
+ features={
+ 'foo': Feature("foo",standard=True,require_features=['baz',self.req]),
+ 'bar': Feature("bar", standard=True, packages=['pkg.bar'],
+ py_modules=['bar_et'], remove=['bar.ext'],
+ ),
+ 'baz': Feature(
+ "baz", optional=False, packages=['pkg.baz'],
+ scripts = ['scripts/baz_it'],
+ libraries=[('libfoo','foo/foofoo.c')]
+ ),
+ 'dwim': Feature("DWIM", available=False, remove='bazish'),
+ },
+ script_args=['--without-bar', 'install'],
+ packages = ['pkg.bar', 'pkg.foo'],
+ py_modules = ['bar_et', 'bazish'],
+ ext_modules = [Extension('bar.ext',['bar.c'])]
+ )
+
+ 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()
+ )
+ # Feature must have either kwargs, removes, or require_features
+ self.assertRaises(DistutilsSetupError, Feature, "test")
+
+ def testAvailability(self):
+ self.assertRaises(
+ DistutilsPlatformError,
+ self.dist.features['dwim'].include_in, self.dist
+ )
+
+ def testFeatureOptions(self):
+ dist = self.dist
+ self.assertTrue(
+ ('with-dwim',None,'include DWIM') in dist.feature_options
+ )
+ self.assertTrue(
+ ('without-dwim',None,'exclude DWIM (default)') in dist.feature_options
+ )
+ self.assertTrue(
+ ('with-bar',None,'include bar (default)') in dist.feature_options
+ )
+ self.assertTrue(
+ ('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)
+
+ 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])
+
+ # If we ask for bar, it should fail because we explicitly disabled
+ # it on the command line
+ self.assertRaises(DistutilsOptionError, dist.include_feature, 'bar')
+
+ def testFeatureWithInvalidRemove(self):
+ self.assertRaises(
+ SystemExit, makeSetup, features = {'x':Feature('x', remove='y')}
+ )
+
class TestCommandTests(unittest.TestCase):
def testTestIsCommand(self):