/[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 1476 by bh, Thu Jul 24 15:16:15 2003 UTC revision 2705 by bernhard, Sun Sep 24 18:55:30 2006 UTC
# Line 1  Line 1 
1  # Copyright (c) 2002, 2003 by Intevation GmbH  # Copyright (c) 2002, 2003, 2004, 2005, 2006 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  #  #
# Line 35  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    
63      # Turn Thuban's deprecation warnings into errors so they're cought      # Turn Thuban's deprecation warnings into errors so they're caught
64      # by the tests      # by the tests
65      #      #
66      # Maintenance: Keep a warning filter until the backwards      # Maintenance: Keep a warning filter until the backwards
# Line 50  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', 'setdecimalcommalocale', "internal-encoding="])
79      for optchar, value in opts:      for optchar, value in opts:
80          if optchar in ("-v", "--verbose"):          if optchar in ("-v", "--verbose"):
81              verbosity = 2              verbosity = 2
82            elif optchar == "--internal-encoding":
83                Thuban.set_internal_encoding(value)
84            elif optchar == "--setdecimalcommalocale":
85                import localessupport
86                oldlocale = localessupport.setdecimalcommalocale()
87                if oldlocale == None:
88                    print>>sys.stderr, "Did not find a locale with comma."
89          else:          else:
90              print>>sys.stderr, "Unknown option", optchar              print>>sys.stderr, "Unknown option", optchar
91    
92      # All Python files starting with test in the current directory      # Build the list of test names.  If names were given on the command
93      # contain test cases.      # line, run exactly those.  Othwerwise build a default list of
94      # FIXME: It should be possible to run runtests.py even when not in      # names.
95      # the test directory      if args:
96      files = os.listdir(os.curdir)          names = args
97      names = []      else:
98      for file in files:          # All Python files starting with 'test' in the current directory
99          if file[:4] == "test" and file[-3:] == ".py":          # and some directories in Extensions contain test cases.
100              names.append(file[:-3])          # FIXME: It should be possible to run runtests.py even when not in
101            # the test directory
102            names = find_test_modules(".")
103            names += find_test_modules("../Extensions/svgexport/test",
104                                       "Extensions.svgexport.test")
105            names += find_test_modules("../Extensions/ogr/test",
106                                       "Extensions.ogr.test")
107      suite = unittest.defaultTestLoader.loadTestsFromNames(names)      suite = unittest.defaultTestLoader.loadTestsFromNames(names)
108      runner = unittest.TextTestRunner(verbosity = verbosity)      runner = support.ThubanTestRunner(verbosity = verbosity)
109      result = runner.run(suite)      result = support.execute_as_testsuite(runner.run, suite)
   
     support.print_additional_summary()  
110    
111      sys.exit(not result.wasSuccessful())      sys.exit(not result.wasSuccessful())
112    

Legend:
Removed from v.1476  
changed lines
  Added in v.2705

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26