diff options
| author | PJ Eby <distutils-sig@python.org> | 2004-03-20 20:52:12 +0000 |
|---|---|---|
| committer | PJ Eby <distutils-sig@python.org> | 2004-03-20 20:52:12 +0000 |
| commit | 7ce55cabc53fe2c1378446ba0557e5f716c0cd31 (patch) | |
| tree | 6ae85cd0c23933ddfa883e131aabd2fe398263be /setuptools/tests | |
| parent | 8423e1ed14ac1691c2863c6e8cac9230cf558d7b (diff) | |
| download | python-setuptools-git-7ce55cabc53fe2c1378446ba0557e5f716c0cd31.tar.gz | |
Flesh out 'depends' command to display dependencies' status, and halt if
all requirements aren't met. (Also, check planned install location for
the dependencies, as well as checking sys.path.) Also:
* Allow 'Feature()' objects to include 'Require()' objects, so that
dependencies can be optional
* 'Require()' objects can set a homepage, whose URL will be displayed by
the 'depends' command if the dependency needs to be installed.
* Misc. fixes/refactoring of version validation to properly handle
"unknown" versions, and to decouple version fetching from version
checking.
* Updated TODO to remove various completed items.
--HG--
branch : setuptools
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/trunk/setuptools%4040876
Diffstat (limited to 'setuptools/tests')
| -rw-r--r-- | setuptools/tests/__init__.py | 69 |
1 files changed, 55 insertions, 14 deletions
diff --git a/setuptools/tests/__init__.py b/setuptools/tests/__init__.py index 662d4ec1..913c65bf 100644 --- a/setuptools/tests/__init__.py +++ b/setuptools/tests/__init__.py @@ -10,9 +10,10 @@ from distutils.core import Extension from setuptools.depends import extract_constant, get_module_constant from setuptools.depends import find_module, Require from distutils.version import StrictVersion, LooseVersion - +from distutils.util import convert_path import sys, os.path + def makeSetup(**args): """Return distribution from 'setup(**args)', without executing commands""" @@ -38,7 +39,6 @@ def makeSetup(**args): - class DependsTests(TestCase): def testExtractConst(self): @@ -80,24 +80,21 @@ class DependsTests(TestCase): get_module_constant('setuptools.tests','__doc__'),__doc__ ) - def testDependsCmd(self): - dist = makeSetup() - cmd = dist.get_command_obj('depends') - cmd.ensure_finalized() - self.assertEqual(cmd.temp, dist.get_command_obj('build').build_temp) - self.assertEqual(cmd.install_lib, dist.get_command_obj('install').install_lib) - - def testRequire(self): + req = Require('Distutils','1.0.3','distutils') self.assertEqual(req.name, 'Distutils') self.assertEqual(req.module, 'distutils') self.assertEqual(req.requested_version, '1.0.3') self.assertEqual(req.attribute, '__version__') + self.assertEqual(req.full_name(), 'Distutils-1.0.3') from distutils import __version__ self.assertEqual(req.get_version(), __version__) + self.failUnless(req.version_ok('1.0.9')) + self.failIf(req.version_ok('0.9.1')) + self.failIf(req.version_ok('unknown')) self.failUnless(req.is_present()) self.failUnless(req.is_current()) @@ -105,15 +102,18 @@ class DependsTests(TestCase): req = Require('Distutils 3000','03000','distutils',format=LooseVersion) self.failUnless(req.is_present()) self.failIf(req.is_current()) + self.failIf(req.version_ok('unknown')) req = Require('Do-what-I-mean','1.0','d-w-i-m') self.failIf(req.is_present()) self.failIf(req.is_current()) - req = Require('Tests', None, 'tests') + 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') paths = [os.path.dirname(p) for p in __path__] self.failUnless(req.is_present(paths)) @@ -121,6 +121,47 @@ class DependsTests(TestCase): + def testDependsCmd(self): + path1 = convert_path('foo/bar/baz') + path2 = convert_path('foo/bar/baz/spam') + + dist = makeSetup( + extra_path='spam', + script_args=['install','--install-lib',path1] + ) + + cmd = dist.get_command_obj('depends') + cmd.ensure_finalized() + + self.assertEqual(cmd.temp, dist.get_command_obj('build').build_temp) + self.assertEqual(cmd.search_path, [path2,path1]+sys.path) + + + + + + + + + + + + + + + + + + + + + + + + + + + class DistroTests(TestCase): def setUp(self): @@ -247,9 +288,10 @@ class DistroTests(TestCase): class FeatureTests(TestCase): def setUp(self): + self.req = Require('Distutils','1.0.3','distutils') self.dist = makeSetup( features={ - 'foo': Feature("foo",standard=True,requires='baz'), + 'foo': Feature("foo",standard=True,requires=['baz',self.req]), 'bar': Feature("bar", standard=True, packages=['pkg.bar'], py_modules=['bar_et'], remove=['bar.ext'], ), @@ -284,7 +326,6 @@ class FeatureTests(TestCase): self.dist.features['dwim'].include_in, self.dist ) - def testFeatureOptions(self): dist = self.dist self.failUnless( @@ -309,13 +350,13 @@ class FeatureTests(TestCase): self.assertEqual(dist.with_foo,1) self.assertEqual(dist.with_bar,0) self.assertEqual(dist.with_baz,1) - self.failIf('bar_et' in dist.py_modules) self.failIf('pkg.bar' in dist.packages) self.failUnless('pkg.baz' in dist.packages) self.failUnless('scripts/baz_it' in dist.scripts) self.failUnless(('libfoo','foo/foofoo.c') in dist.libraries) self.assertEqual(dist.ext_modules,[]) + self.assertEqual(dist.requires, [self.req]) # If we ask for bar, it should fail because we explicitly disabled # it on the command line |
