[120] | 1 | #Licensed to the Apache Software Foundation (ASF) under one |
---|
| 2 | #or more contributor license agreements. See the NOTICE file |
---|
| 3 | #distributed with this work for additional information |
---|
| 4 | #regarding copyright ownership. The ASF licenses this file |
---|
| 5 | #to you under the Apache License, Version 2.0 (the |
---|
| 6 | #"License"); you may not use this file except in compliance |
---|
| 7 | #with the License. You may obtain a copy of the License at |
---|
| 8 | |
---|
| 9 | # http://www.apache.org/licenses/LICENSE-2.0 |
---|
| 10 | |
---|
| 11 | #Unless required by applicable law or agreed to in writing, software |
---|
| 12 | #distributed under the License is distributed on an "AS IS" BASIS, |
---|
| 13 | #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
---|
| 14 | #See the License for the specific language governing permissions and |
---|
| 15 | #limitations under the License. |
---|
| 16 | import unittest, os, sys, re |
---|
| 17 | |
---|
| 18 | myPath = os.path.realpath(sys.argv[0]) |
---|
| 19 | rootDirectory = re.sub("/testing/.*", "", myPath) |
---|
| 20 | testingDir = os.path.join(rootDirectory, "testing") |
---|
| 21 | |
---|
| 22 | sys.path.append(rootDirectory) |
---|
| 23 | |
---|
| 24 | from testing.lib import printSeparator, printLine |
---|
| 25 | |
---|
| 26 | moduleList = [] |
---|
| 27 | allList = [] |
---|
| 28 | excludes = [ |
---|
| 29 | ] |
---|
| 30 | |
---|
| 31 | # Build a module list by scanning through all files in testingDir |
---|
| 32 | for file in os.listdir(testingDir): |
---|
| 33 | if(re.search(r".py$", file) and re.search(r"^test", file)): |
---|
| 34 | # All .py files with names starting in 'test' |
---|
| 35 | module = re.sub(r"^test","",file) |
---|
| 36 | module = re.sub(r".py$","",module) |
---|
| 37 | allList.append(module) |
---|
| 38 | if module not in excludes: |
---|
| 39 | moduleList.append(module) |
---|
| 40 | |
---|
| 41 | printLine("All testcases - %s" % allList) |
---|
| 42 | printLine("Excluding the testcases - %s" % excludes) |
---|
| 43 | printLine("Executing the testcases - %s" % moduleList) |
---|
| 44 | |
---|
| 45 | testsResult = 0 |
---|
| 46 | # Now import each of these modules and start calling the corresponding |
---|
| 47 | #testSuite methods |
---|
| 48 | for moduleBaseName in moduleList: |
---|
| 49 | try: |
---|
| 50 | module = "testing.test" + moduleBaseName |
---|
| 51 | suiteCaller = "Run" + moduleBaseName + "Tests" |
---|
| 52 | printSeparator() |
---|
| 53 | printLine("Running %s" % suiteCaller) |
---|
| 54 | |
---|
| 55 | # Import the corresponding test cases module |
---|
| 56 | imported_module = __import__(module , fromlist=[suiteCaller] ) |
---|
| 57 | |
---|
| 58 | # Call the corresponding suite method now |
---|
| 59 | testRes = getattr(imported_module, suiteCaller)() |
---|
| 60 | testsResult = testsResult + testRes |
---|
| 61 | printLine("Finished %s. TestSuite Result : %s\n" % \ |
---|
| 62 | (suiteCaller, testRes)) |
---|
| 63 | except ImportError, i: |
---|
| 64 | # Failed to import a test module |
---|
| 65 | printLine(i) |
---|
| 66 | testsResult = testsResult + 1 |
---|
| 67 | pass |
---|
| 68 | except AttributeError, n: |
---|
| 69 | # Failed to get suiteCaller from a test module |
---|
| 70 | printLine(n) |
---|
| 71 | testsResult = testsResult + 1 |
---|
| 72 | pass |
---|
| 73 | except Exception, e: |
---|
| 74 | # Test module suiteCaller threw some exception |
---|
| 75 | printLine("%s failed. \nReason : %s" % (suiteCaller, e)) |
---|
| 76 | printLine("Skipping %s" % suiteCaller) |
---|
| 77 | testsResult = testsResult + 1 |
---|
| 78 | pass |
---|
| 79 | |
---|
| 80 | if testsResult != 0: |
---|
| 81 | printSeparator() |
---|
| 82 | printLine("Total testcases with failure or error : %s" % testsResult) |
---|
| 83 | sys.exit(testsResult) |
---|