[dts] [PATCH 4/9] framework rst: add class to handle RST report

Marvin Liu yong.liu at intel.com
Thu Aug 4 07:38:17 CEST 2016


Each suite will generate its own rst report. So add new class to support
that.

Signed-off-by: Marvin Liu <yong.liu at intel.com>

diff --git a/framework/rst.py b/framework/rst.py
index 9b8eb69..ef1825c 100644
--- a/framework/rst.py
+++ b/framework/rst.py
@@ -30,9 +30,9 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import os
-import dts
 import shutil
 import re
+from exception import VerifyFailure
 
 """
 Generate Rst Test Result Report
@@ -54,108 +54,108 @@ Result:
 
 path2Plan = 'test_plans'
 path2Result = 'output'
-rstName = ""
-rstAnnexName = ""
-
-
-def generate_results_rst(crbName, target, nic, suite, perf=False):
-    """
-    copy desc from #Name#_test_plan.rst to TestResult_#Name#.rst
-    """
-    global rstName, rstAnnexName
-
-    try:
-        path = [path2Result, crbName, target, nic]
-        # ensure the level folder exist
-        for node in range(0, len(path)):
-            if not os.path.exists('/'.join(path[:node + 1])):
-                for level in range(node, len(path)):
-                    os.mkdir('/'.join(path[:level + 1]))
-                break
-
-        rstName = "%s/TestResult_%s.rst" % ('/'.join(path), suite)
-        rstReport = open(rstName, 'w')
-
-        if perf is True:
-            rstAnnexName = "%s/TestResult_%s_Annex.rst" % ('/'.join(path), suite)
-            rstAnnexReport = open(rstAnnexName, 'w')
-
-        f = open("%s/%s_test_plan.rst" % (path2Plan, suite), 'r')
-        for line in f:
-            if line[:13] == "Prerequisites":
-                break
-            rstReport.write(line)
-            if perf is True:
-                rstAnnexReport.write(line)
-        f.close()
-
-        rstReport.close()
-
-    except Exception as e:
-        raise dts.VerifyFailure("RST Error: " + str(e))
-
-
-def clear_all_rst(crbName, target):
-    path = [path2Result, crbName, target]
-    shutil.rmtree('/'.join(path), True)
-
-
-def write_title(text):
-    """
-    write case title Test Case: #Name#
-    -----------------
-    """
-    line = "\n%s\n" % text
-    with open(rstName, "a") as f:
-        f.write(line)
-        f.write('-' * len(line) + '\n')
-
 
-def write_annex_title(text):
-    """
-    write annex to test case title Annex to #Name#
-    -----------------
-    """
-    line = "\n%s\n" % text
-    with open(rstAnnexName, "a") as f:
-        f.write(line)
-        f.write('-' * len(line) + '\n')
 
+class RstReport(object):
 
-def write_text(text, annex=False):
+    def __init__(self, crbName, target, nic, suite, perf=False):
+        """
+        copy desc from #Name#_test_plan.rst to TestResult_#Name#.rst
+        """
+        try:
+            path = [path2Result, crbName, target, nic]
+            # ensure the level folder exist
+            for node in range(0, len(path)):
+                if not os.path.exists('/'.join(path[:node + 1])):
+                    for level in range(node, len(path)):
+                        os.mkdir('/'.join(path[:level + 1]))
+                    break
 
-    rstFile = rstAnnexName if annex else rstName
+            self.rstName = "%s/TestResult_%s.rst" % ('/'.join(path), suite)
+            rstReport = open(self.rstName, 'w')
 
-    with open(rstFile, "a") as f:
-        f.write(text)
-
-
-def write_frame(text, annex=False):
-    write_text("\n::\n\n", annex)
-    parts = re.findall(r'\S+', text)
-    text = ""
-    length = 0
-
-    for part in parts:
-        if length + len(part) > 75:
-            text = text + "\n" + " " + part
-            length = len(part)
+            if perf is True:
+                self.rstAnnexName = "%s/TestResult_%s_Annex.rst" % (
+                    '/'.join(path), suite)
+                rstAnnexReport = open(self.rstAnnexName, 'w')
+
+            f = open("%s/%s_test_plan.rst" % (path2Plan, suite), 'r')
+            for line in f:
+                if line[:13] == "Prerequisites":
+                    break
+                rstReport.write(line)
+                if perf is True:
+                    rstAnnexReport.write(line)
+            f.close()
+
+            rstReport.close()
+
+        except Exception as e:
+            raise VerifyFailure("RST Error: " + str(e))
+
+    def clear_all_rst(self, crbName, target):
+        path = [path2Result, crbName, target]
+        shutil.rmtree('/'.join(path), True)
+
+    def write_title(self, text):
+        """
+        write case title Test Case: #Name#
+        -----------------
+        """
+        line = "\n%s\n" % text
+        with open(self.rstName, "a") as f:
+            f.write(line)
+            f.write('-' * len(line) + '\n')
+
+    def write_annex_title(self, text):
+        """
+        write annex to test case title Annex to #Name#
+        -----------------
+        """
+        line = "\n%s\n" % text
+        with open(self.rstAnnexName, "a") as f:
+            f.write(line)
+            f.write('-' * len(line) + '\n')
+
+    def write_text(self, text, annex=False):
+        rstFile = self.rstAnnexName if annex else self.rstName
+
+        with open(rstFile, "a") as f:
+            f.write(text)
+
+    def write_frame(self, text, annex=False):
+        self.write_text("\n::\n\n", annex)
+        parts = re.findall(r'\S+', text)
+        text = ""
+        length = 0
+
+        for part in parts:
+            if length + len(part) > 75:
+                text = text + "\n" + " " + part
+                length = len(part)
+            else:
+                length = length + len(part)
+                text = text + " " + part
+        self.write_text(text, annex)
+        self.write_text("\n\n", annex)
+
+    def write_result(self, result):
+        with open(self.rstName, "a") as f:
+            f.write("\nResult: " + result + "\n")
+
+    def include_image(self, image, width=90):
+        """
+        Includes an image in the RST file.
+        The argument must include path, name and extension.
+        """
+        with open(self.rstName, "a") as f:
+            f.write(".. image:: %s\n   :width: %d%%\n\n" % (image, width))
+
+    def report(self, text, frame=False, annex=False):
+        """
+        Save report text into rst file.
+        """
+        if frame:
+            self.write_frame(text, annex)
         else:
-            length = length + len(part)
-            text = text + " " + part
-    write_text(text, annex)
-    write_text("\n\n", annex)
-
-
-def write_result(result):
-    with open(rstName, "a") as f:
-        f.write("\nResult: " + result + "\n")
-
-
-def include_image(image, width=90):
-    """
-    Includes an image in the RST file.
-    The argument must include path, name and extension.
-    """
-    with open(rstName, "a") as f:
-        f.write(".. image:: %s\n   :width: %d%%\n\n" % (image, width))
+            self.write_text(text, annex)
-- 
1.9.3



More information about the dts mailing list