class CoderRunner(object): def __init__(self, configuration, testFiles): self.logger = Logger() self._configuration = configuration self._icoder = CoderUtil(configuration) self._testFiles = testFiles self._unittestRunner = unittest.TextTestRunner() self._testlist = unittest.TestSuite() self._switches = "" self._version = self._icoder.getVersion() def extractRelatedStories(self, line): # find string that starts with "#" and follows by numbers and characters # furthermore, see the link: https://docs.python.org/2/library/re.html return re.findall("#\d\w+", line) def extractTestProjectAndStartMethod(self, line): # find string that does not starts with "'%sys%'" rs = re.findall("(?<='%sys%' )[a-zA-Z0-9_]+", line) if len(rs) > 0: projectName = rs[0] tmp = re.findall("(?<={0} )[a-zA-Z0-9_]+".format(projectName), line) startMethod = tmp[0] if len(tmp) > 0 else projectName return (projectName, startMethod) else: self.logger.error("Cannot extract project and method from %s" % line) return (None, None) def run(self): try: self.logger.info(self._testFiles) for testFile in self._testFiles: with open(testFile) as tests: coderTestSuite = CoderTestSuites(testFile) for line in tests.readlines(): if line.startswith(";") or not line.strip(): continue if "switches=" in line: self._switches = re.search("(?<=switches=).*", line).group() continue projectName, startMethod = self.extractTestProjectAndStartMethod(line) relatedStories = self.extractRelatedStories(line) if projectName is not None and startMethod is not None: self._testlist.addTest(CoderTestCase(self._icoder, projectName, startMethod, relatedStories, switches=self._switches, cmpSrc=("CompareSrc" in line), coderTestSuite=coderTestSuite)) self._icoder.stopAndUnlockASCETServer("C:\ETAS\ASCET7.1_SERVER6.3") self._unittestRunner.run(self._testlist) ReportUtil(self._configuration, coderTestSuite, self._version).sendMail() except IOError as err: self.logger.error(str(err))
def __init__(self, configuration, testFiles): self.logger = Logger() self._configuration = configuration self._icoder = CoderUtil(configuration) self._testFiles = testFiles self._unittestRunner = unittest.TextTestRunner() self._testlist = unittest.TestSuite() self._switches = "" self._version = self._icoder.getVersion()