Re: [Distutils] test command for setup.py

"Thomas Heller" thomas.heller@ion-tof.com writes:
I like the simplicity of your test command, however I would like (and have partly implmented) the following changes:
- don't use so many options, the build directories could
be retrieved from the 'build' command
I would, if I could figure out how. )-:
- wrap 'try' blocks around running the tests
I think, if a test failed, the script should abort. If you want it to continue, the try blocks should go into the test files themselves.
- output a summary of failed and passed tests
I will probably post my script later.
This again should go into the test implementations, or into a test framework. I think these are only good for the "enduser" testing. But I would like to handle some "developer" testing also by the distutils test command.
Berthold

"Thomas Heller" thomas.heller@ion-tof.com writes:
I like the simplicity of your test command, however I would like (and have partly implmented) the following changes:
- don't use so many options, the build directories could
be retrieved from the 'build' command
I would, if I could figure out how. )-:
This is what I currently have in one of my setup scripts:
class test (Command): # Original version of this class posted # by Berthold Höllmann to distutils-sig@python.org description = "test the distribution prior to install"
user_options = [ ('test-dir=', None, "directory that contains the test definitions"), ('test-prefix=', None, "prefix to the testcase filename"), ('test-suffix=', None, "a list of suffixes used to generate names the of the testcases") ]
def initialize_options (self): self.build_base = 'build' # these are decided only after 'build_base' has its final value # (unless overridden by the user or client) self.test_dir = 'test' self.test_prefix = 'test_' self.test_suffixes = None
# initialize_options ()
def finalize_options (self): import os if self.test_suffixes is None: self.test_suffixes = [] pref_len = len(self.test_prefix) for file in os.listdir(self.test_dir): if (file[-3:] == ".py" and file[:pref_len]==self.test_prefix): self.test_suffixes.append(file[pref_len:-3])
build = self.get_finalized_command('build') self.build_purelib = build.build_purelib self.build_platlib = build.build_platlib
# finalize_options ()
def run (self): import sys # Invoke the 'build' command to "build" pure Python modules # (ie. copy 'em into the build tree) self.run_command ('build')
# remember old sys.path to restore it afterwards old_path = sys.path[:]
# extend sys.path sys.path.insert(0, self.build_purelib) sys.path.insert(0, self.build_platlib) sys.path.insert(0, self.test_dir)
# build include path for test for case in self.test_suffixes: TEST = __import__(self.test_prefix+case, globals(), locals(), ['']) TEST.test()
# restore sys.path sys.path = old_path[:]
# run ()
# class test
Thomas
participants (2)
-
Berthold Höllmann
-
Thomas Heller