def testBasicResultsWarning(self): obj = TestConditionResultParser() lines = [ "..\..\..\SelfTest\MessageTests.cpp(17): ", "warning:", " this is a warning", "", "-------------------------------------------------------------------------------" ] newLines = [] for line in lines: result = obj.parseResultLine(line) if isinstance(result, TestConditionData): #print result newLines += result.generateResultLines() newLines.append("-------------------------------------------------------------------------------") #print lines #print newLines self.assertTrue( len(lines) == len(newLines) ) self.assertTrue( lines == newLines )
def testBasicResultsParser(self): obj = TestConditionResultParser() lines = [ "..\..\..\SelfTest\ClassTests.cpp(28): FAILED:", " REQUIRE( s == \"world\" )", "with expansion:", " \"hello\" == \"world\"", "", "-------------------------------------------------------------------------------" ] newLines = [] for line in lines: result = obj.parseResultLine(line) if isinstance(result, TestConditionData): #print result newLines += result.generateResultLines() newLines.append("-------------------------------------------------------------------------------") #print lines #print newLines self.assertTrue( len(lines) == len(newLines) ) self.assertTrue( lines == newLines )
def __init__(self): self.state = self.NONE self.current = TestCaseData() self.conditionParser = TestConditionResultParser()
class TestCaseResultParser: NONE = 0 TEST_CASE_NAME_EXPECTED = 1 TEST_CASE_NAME = 2 TEST_CLASS_EXPECTED = 3 END_OF_CLASS_NAME_EXPECTED = 4 TEST_CONDITION_EXPECTED = 5 testFilenameParser = re.compile( r'(.*\\)(.*\..pp).*\((.*).*\)' ) def __init__(self): self.state = self.NONE self.current = TestCaseData() self.conditionParser = TestConditionResultParser() def parseResultLine(self,line): result = None if self.state == self.NONE: if line.startswith("-------------------------------------------------------------------------------"): self.state = self.TEST_CASE_NAME_EXPECTED elif len(line): raise Exception("Unknown parse line: '" + line + "'") elif self.state == self.TEST_CASE_NAME_EXPECTED: if len(line): self.current.name = line.strip() self.current.nameParts.append(line.strip()) self.state = self.TEST_CASE_NAME elif len(line): raise Exception("Unknown parse line: '" + line + "'") elif self.state == self.TEST_CASE_NAME: if line.startswith("-------------------------------------------------------------------------------"): self.state = self.TEST_CLASS_EXPECTED elif line.startswith(" "): #print "***SECTION: ",line self.current.sections.append(line[2:]) elif len(line): if len(self.current.name) > 0: self.current.name += line.strip() else: self.current.name = line.strip() self.current.nameParts.append(line.strip()) elif self.state == self.TEST_CLASS_EXPECTED: m = self.testFilenameParser.match(line) if m: self.current.filenamePrefix = m.group(1).strip() self.current.filename = m.group(2).strip() self.current.lineNumber = m.group(3).strip() self.state = self.END_OF_CLASS_NAME_EXPECTED elif len(line): raise Exception("Unknown parse line: '" + line + "'") elif self.state == self.END_OF_CLASS_NAME_EXPECTED: if line.startswith("..............................................................................."): self.state = self.TEST_CONDITION_EXPECTED elif len(line): raise Exception("Unknown parse line: '" + line + "'") elif self.state == self.TEST_CONDITION_EXPECTED: #print "**** LINE " + line condition = self.conditionParser.parseResultLine(line) if isinstance(condition, TestConditionData): #print "**** CASE " + repr(condition) self.current.conditions.append(condition) if line.startswith("-------------------------------------------------------------------------------"): result = self.current self.current = TestCaseData() self.state = self.TEST_CASE_NAME_EXPECTED elif line.startswith("==============================================================================="): result = self.current self.current = TestCaseData() self.state = self.NONE return result