From b04fe7c29e4c097edc9d519fccf1c804969232f1 Mon Sep 17 00:00:00 2001 From: Matthew Brett Date: Wed, 19 Jan 2011 12:57:31 -0800 Subject: [PATCH] NF+TEST - fix to substitution with start of testing --- nisext/sexts.py | 17 ++++++++--------- nisext/tests/__init__.py | 1 + nisext/tests/test_sexts.py | 33 +++++++++++++++++++++++++++++++++ setup.py | 6 +++--- 4 files changed, 45 insertions(+), 12 deletions(-) create mode 100644 nisext/tests/__init__.py create mode 100644 nisext/tests/test_sexts.py diff --git a/nisext/sexts.py b/nisext/sexts.py index 9d70c78c7a..32bfe16011 100644 --- a/nisext/sexts.py +++ b/nisext/sexts.py @@ -107,7 +107,7 @@ def version_getter(pkg_name): 'missing opt': 'Missing optional package "%s"', 'opt suffix' : '; you may get run-time errors', 'version too old': 'You have version %s of package "%s"' - ' but we need version >= %s', } + ' but we need version >= %s', } msgs.update(messages) try: __import__(pkg_name) @@ -125,12 +125,11 @@ def version_getter(pkg_name): raise RuntimeError('Cannot find version for %s' % pkg_name) if checker(have_version) < checker(version): if optional: - log.warn(msgs['version too old'] + msgs['opt suffix'], - have_version, - pkg_name, - version) + log.warn(msgs['version too old'] % (have_version, + pkg_name, + version) + + msgs['opt suffix']) else: - raise RuntimeError(msgs['version too old'], - have_version, - pkg_name, - version) + raise RuntimeError(msgs['version too old'] % (have_version, + pkg_name, + version)) diff --git a/nisext/tests/__init__.py b/nisext/tests/__init__.py new file mode 100644 index 0000000000..af7d1d1dd2 --- /dev/null +++ b/nisext/tests/__init__.py @@ -0,0 +1 @@ +# Tests for nisext package diff --git a/nisext/tests/test_sexts.py b/nisext/tests/test_sexts.py new file mode 100644 index 0000000000..ba58f5636c --- /dev/null +++ b/nisext/tests/test_sexts.py @@ -0,0 +1,33 @@ +""" Tests for nisexts.sexts module +""" + +import sys +import imp + +from ..sexts import package_check + +from nose.tools import assert_true, assert_false, assert_equal, assert_raises + +FAKE_NAME = 'nisext_improbable' +assert FAKE_NAME not in sys.modules +FAKE_MODULE = imp.new_module('nisext_fake') + + +def test_package_check(): + # Try to use a required package - raise error + assert_raises(RuntimeError, package_check, FAKE_NAME) + # Optional, log.warn + package_check(FAKE_NAME, optional=True) + # Make a package + sys.modules[FAKE_NAME] = FAKE_MODULE + # Now it passes if we don't check the version + package_check(FAKE_NAME) + # A fake version + FAKE_MODULE.__version__ = '0.2' + package_check(FAKE_NAME, version='0.2') + # fails when version not good enough + assert_raises(RuntimeError, package_check, FAKE_NAME, '0.3') + # Unless optional in which case log.warns + package_check(FAKE_NAME, version='0.3', optional=True) + # Might do custom version check + package_check(FAKE_NAME, version='0.2', version_getter=lambda x: '0.2') diff --git a/setup.py b/setup.py index b8502c1c0d..10fc36e92f 100755 --- a/setup.py +++ b/setup.py @@ -71,9 +71,9 @@ def main(**extra_args): 'nibabel.nicom.tests', 'nibabel.testing', 'nibabel.tests', - # required in setup.py, hence needs to go into source - # dist - 'nisext'], + # install nisext as its own package + 'nisext', + 'nisext.tests'], # The package_data spec has no effect for me (on python 2.6) -- even # changing to data_files doesn't get this stuff included in the source # distribution -- not sure if it has something to do with the magic