Beispiel #1
0
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))      
Beispiel #2
0
 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()