def main(testGroup=('test',), restoreEnvironmentDefaults=False, limit=None): '''Run all tests. Group can be test and external >>> print(None) None ''' s1 = commonTest.defaultDoctestSuite(__name__) modGather = commonTest.ModuleGather() modules = modGather.load(restoreEnvironmentDefaults) verbosity = 2 if 'verbose' in sys.argv: verbosity = 1 # this seems to hide most display environLocal.printDebug('looking for Test classes...\n') # look over each module and gather doc tests and unittests totalModules = 0 for moduleObject in common.sortModules(modules): unitTestCases = [] if limit is not None: if totalModules > limit: break totalModules += 1 # get Test classes in module if not hasattr(moduleObject, 'Test'): environLocal.printDebug('%s has no Test class' % moduleObject) else: if 'test' in testGroup: unitTestCases.append(moduleObject.Test) if not hasattr(moduleObject, 'TestExternal'): pass #environLocal.printDebug('%s has no TestExternal class\n' % module) else: if 'external' in testGroup or 'testExternal' in testGroup: unitTestCases.append(moduleObject.TestExternal) # for each Test class, load this into a suite for testCase in unitTestCases: s2 = unittest.defaultTestLoader.loadTestsFromTestCase(testCase) s1.addTests(s2) try: s3 = commonTest.defaultDoctestSuite(moduleObject) s1.addTests(s3) except ValueError: environLocal.printDebug('%s cannot load Doctests' % moduleObject) continue allLocals = [getattr(moduleObject, x) for x in dir(moduleObject)] globs = __import__('music21').__dict__.copy() docTestOptions = (doctest.ELLIPSIS|doctest.NORMALIZE_WHITESPACE) testRunner.addDocAttrTestsToSuite(s1, allLocals, outerFilename=moduleObject.__file__, globs=globs, optionflags=docTestOptions, # no checker here ) testRunner.fixTestsForPy2and3(s1) environLocal.printDebug('running Tests...\n') with warnings.catch_warnings(): warnings.simplefilter('ignore', RuntimeWarning) # import modules... runner = unittest.TextTestRunner(verbosity=verbosity) finalTestResults = runner.run(s1) coverageM21.stopCoverage(cov) if (finalTestResults.errors or finalTestResults.failures or finalTestResults.unexpectedSuccesses): returnCode = 1 else: returnCode = 0 return returnCode
def main(testGroup=('test',), restoreEnvironmentDefaults=False, limit=None, verbosity=2): ''' Run all tests. Group can be test and external >>> print(None) None ''' s1 = commonTest.defaultDoctestSuite(__name__) modGather = commonTest.ModuleGather() modules = modGather.load(restoreEnvironmentDefaults) environLocal.printDebug('looking for Test classes...\n') # look over each module and gather doc tests and unittests totalModules = 0 sortMods = common.misc.sortModules(modules) # print(dir(sortMods[0])) for moduleObject in sortMods: unitTestCases = [] if limit is not None: if totalModules > limit: break totalModules += 1 # get Test classes in module if not hasattr(moduleObject, 'Test'): environLocal.printDebug('%s has no Test class' % moduleObject) else: if 'test' in testGroup: unitTestCases.append(moduleObject.Test) if not hasattr(moduleObject, 'TestExternal'): pass #environLocal.printDebug('%s has no TestExternal class\n' % module) else: if 'external' in testGroup or 'testExternal' in testGroup: unitTestCases.append(moduleObject.TestExternal) # for each Test class, load this into a suite for testCase in unitTestCases: s2 = unittest.defaultTestLoader.loadTestsFromTestCase(testCase) s1.addTests(s2) try: s3 = commonTest.defaultDoctestSuite(moduleObject) s1.addTests(s3) except ValueError: environLocal.printDebug('%s cannot load Doctests' % moduleObject) continue allLocals = [getattr(moduleObject, x) for x in dir(moduleObject)] globs = __import__('music21').__dict__.copy() docTestOptions = (doctest.ELLIPSIS|doctest.NORMALIZE_WHITESPACE) testRunner.addDocAttrTestsToSuite(s1, allLocals, outerFilename=moduleObject.__file__, globs=globs, optionflags=docTestOptions, # no checker here ) testRunner.fixDoctests(s1) environLocal.printDebug('running Tests...\n') with warnings.catch_warnings(): warnings.simplefilter('once', RuntimeWarning) # import modules... warnings.simplefilter('ignore', FutureWarning) # a lot of these scipy->numpy runner = unittest.TextTestRunner(verbosity=verbosity) finalTestResults = runner.run(s1) coverageM21.stopCoverage(cov) if (finalTestResults.errors or finalTestResults.failures or finalTestResults.unexpectedSuccesses): returnCode = 1 else: returnCode = 0 return returnCode
def main( testGroup: t.Sequence[str] = ('test', ), restoreEnvironmentDefaults=False, limit=None, verbosity=2, show: bool = True, ): ''' Run all tests. Group can be 'test' and/or 'external'. External will not run doctests. ''' for group in testGroup: if group not in ('test', 'external'): raise ValueError( f"Valid test groups are 'test' and 'external'; got {group}") commonTest.testImports() s1 = commonTest.defaultDoctestSuite(__name__) modGather = commonTest.ModuleGather() modules = modGather.load(restoreEnvironmentDefaults) environLocal.printDebug('looking for Test classes...\n') # look over each module and gather doc tests and unittests totalModules = 0 sortMods = common.misc.sortModules(modules) # print(dir(sortMods[0])) for moduleObject in sortMods: unitTestCases = [] if limit is not None: if totalModules > limit: break totalModules += 1 # get Test classes in module if not hasattr(moduleObject, 'Test'): environLocal.printDebug(f'{moduleObject} has no Test class') else: if 'test' in testGroup: unitTestCases.append(moduleObject.Test) # type: ignore if not hasattr(moduleObject, 'TestExternal'): pass # environLocal.printDebug(f'{module} has no TestExternal class\n') else: if 'external' in testGroup: if not show: moduleObject.TestExternal.show = False # type: ignore unitTestCases.append(moduleObject.TestExternal) # type: ignore # for each Test class, load this into a suite for testCase in unitTestCases: s2 = unittest.defaultTestLoader.loadTestsFromTestCase(testCase) s1.addTests(s2) if testGroup == ('external', ): # don't load doctests for runs consisting solely of TestExternal continue try: s3 = commonTest.defaultDoctestSuite(moduleObject) s1.addTests(s3) except ValueError: environLocal.printDebug(f'{moduleObject} cannot load Doctests') continue allLocals = [getattr(moduleObject, x) for x in dir(moduleObject)] globs = __import__('music21').__dict__.copy() docTestOptions = (doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE) testRunner.addDocAttrTestsToSuite( s1, allLocals, outerFilename=moduleObject.__file__, # type: ignore globs=globs, optionflags=docTestOptions, # no checker here ) testRunner.fixDoctests(s1) environLocal.printDebug('running Tests...\n') with warnings.catch_warnings(): warnings.simplefilter('once', RuntimeWarning) # import modules... warnings.simplefilter('ignore', FutureWarning) # a lot of these scipy->numpy runner = unittest.TextTestRunner(verbosity=verbosity) finalTestResults = runner.run(s1) coverageM21.stopCoverage(cov) if (finalTestResults.errors or finalTestResults.failures or finalTestResults.unexpectedSuccesses): returnCode = 1 else: returnCode = 0 return returnCode