source: pyutilib.dev/trunk/pyutilib/dev/runtests.py @ 2188

Revision 2188, 4.8 KB checked in by wehart, 3 years ago (diff)

More debugging

  • Property svn:executable set to *
Line 
1
2import os
3import sys
4import pyutilib.subprocess
5import glob
6import optparse
7
8if sys.platform.startswith('win'):
9    platform='win'
10else:
11    platform='linux'
12
13def run(package, argv):
14    parser = optparse.OptionParser(usage='run [OPTIONS] <dirs>')
15
16    parser.add_option('-v','--verbose',
17        action='store_true',
18        dest='verbose',
19        default=False,
20        help='Verbose output')
21    parser.add_option('-p','--package',
22        action='store',
23        dest='pkg',
24        default='pyutilib',
25        help='Limit the coverage to this package')
26    parser.add_option('-o','--output',
27        action='store',
28        dest='output',
29        default=None,
30        help='Redirect output to a file')
31
32    options, args = parser.parse_args(argv)
33
34    if len(args) == 1:
35        parser.print_help()
36        sys.exit(1)
37
38    if options.pkg != "":
39        cpkg=' --cover-package='+options.pkg
40    else:
41        cpkg=''
42    if options.verbose:
43        vflag=' -v'
44    else:
45        vflag=''
46
47    os.environ['COVERAGE_FILE'] = os.getcwd()+os.sep+'.coverage'
48
49    dirs=set()
50    dirs.add( os.getcwd() )
51    for arg in args[1:]:
52        for dir in glob.glob(arg+'*'):
53            dirs.add(dir)
54
55    cwd = os.path.dirname(os.getcwd())
56    if platform == 'win':
57        srcdirs=[]
58        for dir in glob.glob('*'):
59            if os.path.isdir(dir):
60                srcdirs.append(os.path.abspath(dir))
61        os.environ['PYTHONPATH']=os.pathsep.join(srcdirs)
62        cmd =  os.sep.join([sys.exec_prefix,'Scripts','python.exe'])+' '+os.sep.join([sys.exec_prefix,'Scripts','nosetests-script.py'])+' --with-coverage --cover-erase'+vflag+cpkg+' --with-xunit --xunit-file=TEST-'+package+'.xml '+ " ".join(list(dirs))
63        os.environ['PATH'] = cwd+os.sep+'Scripts'+os.pathsep+os.environ.get('PATH','')
64    else:
65        cmd = sys.exec_prefix+os.sep+'bin'+os.sep+'nosetests --with-coverage --cover-erase'+vflag+cpkg+' --with-xunit --xunit-file=TEST-'+package+'.xml '+ " ".join(list(dirs))
66        os.environ['PATH'] = cwd+os.sep+'bin'+os.pathsep+os.environ.get('PATH','')
67    print "Running... "+cmd
68    print ""
69    if options.output:
70        print "Redirecting output to file '%s' ..." % options.output,
71        sys.stdout.flush()
72        pyutilib.subprocess.run(cmd, outfile=options.output)
73        print "done."
74        sys.stdout.flush()
75    else:
76        pyutilib.subprocess.run(cmd, tee=True)
77
78
79def runPyUtilibTests():
80    parser = optparse.OptionParser(usage='test.pyutilib [options] <dirs>')
81
82    parser.add_option('-d','--dir',
83        action='store',
84        dest='dir',
85        default=None,
86        help='Top-level source directory where the tests are applied.')
87    parser.add_option('--all',
88        action='store_true',
89        dest='all_cats',
90        default=False,
91        help='All tests are executed.')
92    parser.add_option('--cat','--category',
93        action='append',
94        dest='cats',
95        default=[],
96        help='Specify test categories.')
97    parser.add_option('-v','--verbose',
98        action='store_true',
99        dest='verbose',
100        default=False,
101        help='Verbose output')
102    parser.add_option('-o','--output',
103        action='store',
104        dest='output',
105        default=None,
106        help='Redirect output to a file')
107
108    _options, args = parser.parse_args(sys.argv)
109
110    if 'performance' in os.environ.get('PYUTILIB_UNITTEST_CATEGORIES','').split(','):
111        os.environ['NOSE_WITH_TESTDATA'] = '1'
112    print >>sys.stderr, os.environ
113
114    #if len(args) == 1:
115        #parser.print_help()
116        #sys.exit(1)
117
118    if _options.output:
119        outfile = os.path.abspath(_options.output)
120    else:
121        outfile = None
122    if _options.dir is None:
123        os.chdir( os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) )
124    else:
125        os.chdir( _options.dir )
126
127    print "Running tests in directory",os.getcwd()
128    if _options.all_cats is True:
129        _options.cats = []
130    elif len(_options.cats) == 0:
131        _options.cats = ['smoke']
132    elif 'all' in _options.cats:
133        _options.cats = []
134    if len(_options.cats) > 0:
135        os.environ['PYUTILIB_UNITTEST_CATEGORIES'] = ",".join(_options.cats)
136        print " ... for test categories: "+ os.environ['PYUTILIB_UNITTEST_CATEGORIES']
137    options=[]
138    if _options.verbose:
139        options.append('-v')
140    if outfile:
141        options.append('-o')
142        options.append(outfile)
143    if len(args) == 1:
144        dirs=['pyutilib']
145    else:
146        dirs=[]
147        for dir in args:
148            if dir.startswith('-'):
149                options.append(dir)
150            elif dir.startswith('pyutilib'):
151                dirs.append(dir)
152            else:
153                dirs.append('pyutilib.'+dir)
154        if len(dirs) == 0:
155            dirs = ['pyutilib']
156    pyutilib.dev.runtests.run('pyutilib',['runtests']+options+['-p','pyutilib']+dirs)
157
Note: See TracBrowser for help on using the repository browser.