tools/e32test-driver/rtestreport.py
changeset 34 92d87f2e53c2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/e32test-driver/rtestreport.py	Fri Jan 15 09:07:44 2010 +0000
@@ -0,0 +1,78 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# A simple report generator for the results of running an RTest testsuite.
+#
+
+import sys
+import qemuruntest
+import rtest
+
+class RTestReport(object):
+    def __init__(self, testRunner, reportFileRoot = None):
+        self.testRunner = testRunner
+        self.reportFileRoot = reportFileRoot
+
+    def SummariseErrors(self, file = sys.stdout ):
+        print >> file, "%d errors were detected while running rom %s :" % (len(self.erroredTests), self.parser.GetRomName())
+        for e in self.erroredTests:
+            print >> file, e.GetName()
+        print >> file, "\n"
+
+    def SummariseFailures(self, file = sys.stdout ):
+        print >> file, "%d failures were detected while running rom %s :" % (len(self.failedTests), self.parser.GetRomName())
+        for e in self.failedTests:
+            print >> file, e.GetName()
+            for l in e.ErrorContext():
+                print >> file, "\t%s" %(l)
+        print >> file, "\n"
+
+    def SummarisePassed(self, file = sys.stdout ):
+        print >> file, "The following %d tests passed while running rom %s (times are approximate):" % (len(self.passedTests), self.parser.GetRomName())
+        for e in self.passedTests:
+            print >> file, e.GetName(), " : ", e.GetTimeTaken(), "seconds"
+        print >> file, "\n"
+        
+    def OpenReportFile(self):
+        name = self.reportFileRoot
+        if not name:
+            name = self.testRunner.GetReportFileName()
+        return open(name, 'w')
+
+    def GetReportFileName(self):
+        return self.reportFileName
+    
+    def PrepareReport(self):
+        self.parser = rtest.RTestParser(self.testRunner)
+        try:
+            self.parser.Parse()
+        except rtest.NoRTestsFound, x:
+            print x
+            sys.exit(1)
+        self.failedTests = filter(rtest.RTest.Failedp, self.parser.GetRTests())
+        self.erroredTests = filter(rtest.RTest.Erroredp, self.parser.GetRTests())
+        self.passedTests = filter(rtest.RTest.Passedp, self.parser.GetRTests())
+
+    def WriteReport(self, file = sys.stdout):
+        self.PrepareReport()
+        print >> file, self.testRunner.GetSummary()
+        self.SummariseErrors(file)
+        self.SummariseFailures(file)
+        self.SummarisePassed(file)
+        return 0
+        
+