"Thomas Heller"
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