# ___________________________________________________________________________ # # Pyomo: Python Optimization Modeling Objects # Copyright 2017 National Technology and Engineering Solutions of Sandia, LLC # Under the terms of Contract DE-NA0003525 with National Technology and # Engineering Solutions of Sandia, LLC, the U.S. Government retains certain # rights in this software. # This software is distributed under the 3-clause BSD License. # ___________________________________________________________________________ #import glob #import sys #import os.path #import optparse from os.path import dirname, abspath, exists, join import sys import pyutilib.dev.runtests import pyomo.common @pyomo.common.pyomo_command('test.pyomo', "Execute Pyomo tests") def runPyomoTests(argv=None): if argv is None: argv = sys.argv basedir=dirname(dirname(dirname(abspath(__file__)))) targets=['pyomo'] if exists(join(basedir,'..','pyomo-model-libraries')): targets.append(join(basedir,'..','pyomo-model-libraries')) return pyutilib.dev.runtests.run(targets, basedir, argv) # def OLD_runPyomoTests(): # parser = optparse.OptionParser(usage='test.pyomo [options] ') # parser.add_option('-d','--dir', # action='store', # dest='dir', # default=None, # help='Top-level source directory where the tests are applied.') # parser.add_option('-e','--exclude', # action='append', # dest='exclude', # default=[], # help='Top-level source directories that are excluded.') # parser.add_option('--cat','--category', # action='store', # dest='cat', # default='smoke', # help='Specify test category.') # parser.add_option('--cov','--coverage', # action='store_true', # dest='coverage', # default=False, # help='Indicate that coverage information is collected') # parser.add_option('-v','--verbose', # action='store_true', # dest='verbose', # default=False, # help='Verbose output') # parser.add_option('-o','--output', # action='store', # dest='output', # default=None, # help='Redirect output to a file') # parser.add_option('--with-doctest', # action='store_true', # dest='doctests', # default=False, # help='Run tests included in Sphinx documentation') # parser.add_option('--doc-dir', # action='store', # dest='docdir', # default=None, # help='Top-level source directory for Sphinx documentation') # _options, args = parser.parse_args(sys.argv) # if _options.output: # outfile = os.path.abspath(_options.output) # else: # outfile = None # if _options.docdir: # docdir = os.path.abspath(_options.docdir) # if not os.path.exists(docdir): # raise ValueError("Invalid documentation directory, " # "path does not exist") # elif _options.doctests: # docdir = os.path.join('pyomo','doc','OnlineDocs') # else: # docdir = None # if _options.dir is None: # # the /src directory (for development installations) # os.chdir( os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) ) # else: # if os.path.exists(_options.dir): # os.chdir( _options.dir ) # print("Running tests in directory %s" % os.getcwd()) # _options.cat = os.environ.get('PYUTILIB_UNITTEST_CATEGORY', _options.cat) # if _options.cat == 'all': # if 'PYUTILIB_UNITTEST_CATEGORY' in os.environ: # del os.environ['PYUTILIB_UNITTEST_CATEGORY'] # elif _options.cat: # os.environ['PYUTILIB_UNITTEST_CATEGORY'] = _options.cat # print(" ... for test category: %s" % os.environ['PYUTILIB_UNITTEST_CATEGORY']) # options=[] # if _options.coverage: # options.append('--coverage') # if _options.verbose: # options.append('-v') # if _options.doctests: # options.append('--with-doctest') # if outfile: # options.append('-o') # options.append(outfile) # if len(args) > 1: # mydirs = args[1:] # else: # mydirs = [os.path.join('pyomo','pyomo'), 'pyomo-model-libraries'] # # # dirs=[] # for dir in mydirs: # if dir in _options.exclude: # continue # if dir.startswith('-'): # options.append(dir) # if dir.startswith('pyomo'): # if os.path.exists(dir): # dirs.append(dir) # elif '.' in dir: # dirs.append(os.path.join('pyomo','pyomo',dir.split('.')[1])) # else: # if os.path.exists('pyomo.'+dir): # dirs.append('pyomo.'+dir) # else: # dirs.append(os.path.join('pyomo','pyomo',dir)) # # # excluding = set() # for e in _options.exclude: # excluding.add(os.path.join('pyomo','pyomo',e)) # testdirs = [] # for topdir in dirs: # for root, subdirs, files in os.walk(topdir): # if not '__init__.py' in files: # # Skip directories that do not contain a __init__.py file. # continue # for f in files: # if f.startswith("test"): # skip=False # for e in excluding: # if root.startswith(e): # skip=True # if not skip: # testdirs.append(root) # break # # # if docdir: # testdirs.append(docdir) # return pyutilib.dev.runtests.run('pyomo', ['runtests']+options+['-p','pyomo']+testdirs)