/[thuban]/branches/WIP-pyshapelib-bramz/test/runtests.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/test/runtests.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1377 by bh, Tue Jul 8 10:54:16 2003 UTC revision 2642 by bh, Fri Jul 1 20:49:04 2005 UTC
# Line 1  Line 1 
1  # Copyright (c) 2002, 2003 by Intevation GmbH  # Copyright (c) 2002, 2003, 2004, 2005 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  #  #
# Line 15  __version__ = "$Revision$" Line 15  __version__ = "$Revision$"
15  # $Source$  # $Source$
16  # $Id$  # $Id$
17    
18  import os, sys  import os
19    
20    # It should be possible to run the Thuban testsuite without an X
21    # connection, so we remove the DISPLAY environment variable which should
22    # lead to an error if the wxGTK module is imported accidentally. The
23    # DISPLAY variable is not always set so we catch and ignore the KeyError
24    try:
25        del os.environ["DISPLAY"]
26    except KeyError:
27        pass
28    
29    import sys
30  import warnings  import warnings
31  import unittest  import unittest
32  import getopt  import getopt
# Line 24  import support Line 35  import support
35  support.initthuban()  support.initthuban()
36  import Thuban.Lib.connector  import Thuban.Lib.connector
37    
38    def find_test_modules(dirname, package = None):
39        """Return a list the names of the test modules in the directory dirname
40    
41        The return value is a list of names that can be passed to
42        unittest.defaultTestLoader.loadTestsFromNames.  Each name of the
43        list is the name of a pure python module, one for each file in
44        dirname that starts with 'test'.
45    
46        The optional parameter package should be the name of the python
47        package whose directory is dirname.  If package is given all names
48        in the returned list will be prefixed with package and a dot.
49        """
50        if package:
51            prefix = package + "."
52        else:
53            prefix = ""
54    
55        return [prefix + name[:-3]
56                for name in os.listdir(dirname)
57                    if name[:4] == "test" and name[-3:] == ".py"]
58    
59    
60  def main():  def main():
61      """Run all the tests in the Thuban test suite"""      """Run all the tests in the Thuban test suite"""
62    
# Line 39  def main(): Line 72  def main():
72      warnings.filterwarnings("error", "The Layer attribute.*is deprecated",      warnings.filterwarnings("error", "The Layer attribute.*is deprecated",
73                              DeprecationWarning)                              DeprecationWarning)
74    
     # Usage of the old table interface. This old interface is still used  
     # by the test_table.py module which calls filterwarnings too to  
     # ignore the warnings issued by its own intended use of the old  
     # interface.  
     warnings.filterwarnings("error", ".*old table interface.*",  
                             DeprecationWarning)  
   
75      verbosity = 1      verbosity = 1
76    
77      opts, args = getopt.getopt(sys.argv[1:], 'v', ['verbose'])      opts, args = getopt.getopt(sys.argv[1:], 'v',
78                                   ['verbose', "internal-encoding="])
79      for optchar, value in opts:      for optchar, value in opts:
80          if optchar in ("-v", "--stub-auto-login"):          if optchar in ("-v", "--verbose"):
81              verbosity = 2              verbosity = 2
82          print>>sys.stderr, "Unknown option", optchar          elif optchar == "--internal-encoding":
83                Thuban.set_internal_encoding(value)
84      # All Python files starting with test in the current directory          else:
85      # contain test cases.              print>>sys.stderr, "Unknown option", optchar
86      # FIXME: It should be possible to run runtests.py even when not in  
87      # the test directory      # Build the list of test names.  If names were given on the command
88      files = os.listdir(os.curdir)      # line, run exactly those.  Othwerwise build a default list of
89      names = []      # names.
90      for file in files:      if args:
91          if file[:4] == "test" and file[-3:] == ".py":          names = args
92              names.append(file[:-3])      else:
93            # All Python files starting with 'test' in the current directory
94            # and some directories in Extensions contain test cases.
95            # FIXME: It should be possible to run runtests.py even when not in
96            # the test directory
97            names = find_test_modules(".")
98            names += find_test_modules("../Extensions/svgexport/test",
99                                       "Extensions.svgexport.test")
100            names += find_test_modules("../Extensions/ogr/test",
101                                       "Extensions.ogr.test")
102      suite = unittest.defaultTestLoader.loadTestsFromNames(names)      suite = unittest.defaultTestLoader.loadTestsFromNames(names)
103      runner = unittest.TextTestRunner(verbosity = verbosity)      runner = support.ThubanTestRunner(verbosity = verbosity)
104      result = runner.run(suite)      result = support.execute_as_testsuite(runner.run, suite)
   
     support.print_additional_summary()  
105    
106      sys.exit(not result.wasSuccessful())      sys.exit(not result.wasSuccessful())
107    

Legend:
Removed from v.1377  
changed lines
  Added in v.2642

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26