#!/usr/bin/env python # -*- coding: utf-8 -*- import sys try: import nose except ImportError, e: sys.stderr.write("Unable to run python tests: the third party 'nose' module is required\nTo install 'nose' do:\n\tsudo pip install nose (or on debian systems: apt-get install python-nose): %s\n" % e) sys.exit(1) try: import mapnik except ImportError: print '\x1b[31m✘\x1b[0m (\x1b[34m%s\x1b[0m)' % 'import mapnik failed - tests require python bindings' sys.exit(0) from python_tests.utilities import TodoPlugin from nose.plugins.doctests import Doctest import nose, sys, os, getopt def usage(): print("test.py -h | --help") print("test.py [-q | -v] [-p | --prefix ]") def main(): try: opts, args = getopt.getopt(sys.argv[1:], "hvqp:", ["help", "prefix="]) except getopt.GetoptError,err: print(str(err)) usage() sys.exit(2) prefix = None verbose = False quiet = False for o, a in opts: if o == "-q": quiet = True elif o == "-v": verbose = True elif o in ("-h", "--help"): usage() sys.exit() elif o in ("-p", "--prefix"): prefix = a else: assert False, "Unhandled option" if quiet and verbose: usage() sys.exit(2) if prefix: # Allow python to find libraries for testing on the buildbot sys.path.insert(0, os.path.join(prefix, "lib/python%s/site-packages" % sys.version[:3])) import mapnik if not quiet: print("- mapnik path: %s" % mapnik.__file__) if hasattr(mapnik,'_mapnik'): print("- _mapnik.so path: %s" % mapnik._mapnik.__file__) print("- Input plugins path: %s" % mapnik.inputpluginspath) print("- Font path: %s" % mapnik.fontscollectionpath) print('') print("- Running nosetests:") print('') argv = [__file__, '--exe', '--with-todo', '--with-doctest', '--doctest-tests'] if not quiet: argv.append('-v') if verbose: # 3 * '-v' gets us debugging information from nose argv.append('-v') argv.append('-v') dirname = os.path.dirname(sys.argv[0]) argv.extend(['-w', os.path.join(dirname,'python_tests')]) if not nose.run(argv=argv, plugins=[TodoPlugin(), Doctest()]): sys.exit(1) else: sys.exit(0) if __name__ == "__main__": main()