+1 for me.

Best,
Regards

Daisy (Ô˹úÁ«)
VSM Team, China Systems & Technology Labs (CSTL)
E-mail: yunguol@cn.ibm.com
TEL: (86)-21-60922403
Building 10, 399 Ke Yuan Rd, Pudong Shanghai, 201203


libvirt-cim-bounces@redhat.com wrote on 2008-08-07 03:28:36:

> # HG changeset patch
> # User Kaitlin Rupert <karupert@us.ibm.com>
> # Date 1213136844 25200
> # Node ID 63757929dd9a15671ae59fb54b89121bbc93d50d
> # Parent  502dddef8c34eeb85b571df0ee97f0ee0676861b
> [TEST] Enable test infrastructure to support writing to a temporary file.
>
> Allow the option to print to a file in addition to stdout.  This
> will allow a test suite to read back the file after the test
> execution is complete.
>
> If a previous log exists at the start of the run, it is removed and
> a new one is created.
>
> Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com>
>
> diff -r 502dddef8c34 -r 63757929dd9a lib/Reporter.py
> --- a/lib/Reporter.py   Tue Jul 01 14:12:48 2008 -0700
> +++ b/lib/Reporter.py   Tue Jun 10 15:27:24 2008 -0700
> @@ -19,10 +19,13 @@
>  # License along with this library; if not, write to the Free Software
>  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
>  #
> +from CimTest.ReturnCodes import PASS, FAIL, SKIP, XFAIL
> +
>  class Reporter:
>  
> -    def __init__(self, verbosity=1):
> +    def __init__(self, verbosity=1, log_fd=None):
>          self.verbosity = verbosity
> +        self.log_fd = log_fd
>  
>      def __red(self, str):
>          return "\033[01;31m%s\033[00m" % str
> @@ -36,11 +39,38 @@
>      def __blue(self, str):
>          return "\033[01;34m%s\033[00m" % str
>          
> -    def __out(self, str):
> -        """We might not always be just printing output to stdout,
> so this should
> -        be used for all output."""
> -        # Right now we just mimic print.
> -        print(str)
> +    def __out(self, str, status, bug):
> +        def no_color(string):
> +            return string
> +
> +        colors = { "FAIL"  : self.__red,
> +                   "PASS"  : self.__green,
> +                   "SKIP"  : self.__yellow,
> +                   "XFAIL" : self.__blue,
> +                 }
> +
> +        fn = colors.get(status, no_color)
> +
> +        if status == XFAIL:
> +            print "%s: %s\tBug: %s" % (str, fn(status), bug)
> +        else:
> +            print "%s: %s" % (str, fn(status))
> +
> +        if self.log_fd is not None:
> +            if status == XFAIL:
> +                self.log_fd.write("%s: %s\tBug: %s" % (str, status, bug))
> +            else:
> +                self.log_fd.write("%s: %s" % (str, status))
> +    
> +    def results(self, str, status, bug):
> +
> +        rc = { FAIL  : "FAIL",
> +               PASS  : "PASS",
> +               SKIP  : "SKIP",
> +               XFAIL : "XFAIL"
> +             }
> +    
> +        self.__out(str, rc[status], bug)
>      
>      def debug(self, level, str):
>          """Produces debug output if appropriate for current verbosity level.
> @@ -49,20 +79,5 @@
>          priority output will be printed in the most levels, while
> low priority
>          output will only be printed when verbosity is high."""
>          if level <= self.verbosity:
> -            self.__out(str)
> +            print(str)
>  
> -    def pass_test(self, test_name):
> -        str = self.__green("PASS")
> -        self.__out("%s: %s" % (test_name, str))
> -
> -    def fail_test(self, test_name):
> -        str = self.__red("FAIL")
> -        self.__out("%s: %s" % (test_name, str))
> -
> -    def xfail_test(self, test_name, bug):
> -        str = self.__blue("XFAIL")
> -        self.__out("%s: %s\tBug: %s" % (test_name, str, bug))
> -
> -    def skip_test(self, test_name):
> -        str = self.__yellow("SKIP")
> -        self.__out("%s: %s" % (test_name, str))
> diff -r 502dddef8c34 -r 63757929dd9a lib/TestSuite.py
> --- a/lib/TestSuite.py   Tue Jul 01 14:12:48 2008 -0700
> +++ b/lib/TestSuite.py   Tue Jun 10 15:27:24 2008 -0700
> @@ -24,48 +24,59 @@
>  
>  DEFAULT_RPC_URL = "http://morbo.linux.ibm.com/xenotest/testrun/api"
>  
> +DEFAULT_LOG_FILE = "run_report.txt"
> +
>  import Reporter
>  import re
> +import os
> +from CimTest.ReturnCodes import PASS, FAIL, XFAIL, SKIP
>  
>  class TestSuite:
>      """Test Suite class to make the output of driving test suites a
> bit more consistant"""
>  
> -    def __init__(self):
> -        self.rep = Reporter.Reporter(verbosity=5)
> +    def __init__(self, log=False, file_name=None):
> +        if log == True:
> +            if file_name is None:
> +                self.log_file = DEFAULT_LOG_FILE
> +            else:
> +                self.log_file = file_name
>  
> -    def ok(self, group, test, output=""):
> -        self.rep.pass_test("%s - %s" % (group, test))
> +            if os.path.exists(self.log_file):
> +                os.remove(self.log_file)
> +            self.log_fd = open(self.log_file, "w")
> +        else:
> +            self.log_file = None
> +            self.log_fd = None
>  
> -    def skip(self, group, test, output=""):
> -        self.rep.skip_test("%s - %s" % (group, test))
> +        self.rep = Reporter.Reporter(verbosity=5, log_fd=self.log_fd)
> +
> +    def print_results(self, group, test, status, output=""):
> +        bug = None
> +        if status == XFAIL:
> +            err = "Test error: returned XFAIL without a valid bug string."
> +            bug = err
> +            if len(output) > 0:
> +                try:
> +                    str = re.search('Bug:<[0-9]*>', output).group()
> +                    bug = re.search("Bug:<([0-9]+)>", str).group(1)
> +                    if len(str) > 0:
> +                        if output == str:
> +                            #No need to pring bug twice
> +                            output = ""
> +                except:
> +                    #If we hit a problem, make sure bug = error msg
> +                    bug = err
> +
> +        self.rep.results("%s - %s" % (group, test), status, bug)
>          if output:
>              self.rep.debug(1, output)
>  
> -    def fail(self, group, test, output=""):
> -        self.rep.fail_test("%s - %s" % (group, test))
> -        if output:
> -            self.rep.debug(1, output)
> -
> -    def xfail(self, group, test, output=""):
> -        err = "Test error: returned XFAIL without a valid bug string."
> -        bug = err
> -        if len(output) > 0:
> -            try:
> -                str = re.search('Bug:<[0-9]*>', output).group()
> -                bug = re.search("Bug:<([0-9]+)>", str).group(1)
> -                if len(str) > 0:
> -                    if output == str:
> -                        #No need to pring bug twice
> -                        output = ""
> -            except:
> -                #If we hit a problem, make sure bug is equal to theerror msg
> -                bug = err
> -        self.rep.xfail_test("%s - %s" % (group, test), bug)
> -        if output:
> -            self.rep.debug(1, output)
> +    def debug(self, str):
> +            self.rep.debug(1, str)
>  
>      def finish(self):
> -        pass
> +        if self.log_fd is not None:
> +            self.log_fd.close()
>  
>  class RPCTestSuite:
>      """Test Suite class to make the output of driving test suites a
> bit more consistant
> diff -r 502dddef8c34 -r 63757929dd9a suites/libvirt-cim/main.py
> --- a/suites/libvirt-cim/main.py   Tue Jul 01 14:12:48 2008 -0700
> +++ b/suites/libvirt-cim/main.py   Tue Jun 10 15:27:24 2008 -0700
> @@ -153,14 +153,7 @@
>  
>          os_status = os.WEXITSTATUS(status)
>  
> -        if os_status == PASS:
> -            testsuite.ok(test['group'], test['test'])
> -        elif os_status == SKIP:
> -            testsuite.skip(test['group'], test['test'], output)
> -        elif os_status == XFAIL:
> -            testsuite.xfail(test['group'], test['test'], output)
> -        else:
> -            testsuite.fail(test['group'], test['test'], output)
> +        testsuite.print_results(test['group'], test['test'], os_status)
>  
>      testsuite.finish()
>  
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim@redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim