tools/httptester/results.py
author Andreas Gal <gal@mozilla.com>
Wed, 23 Jul 2008 02:57:56 -0700
changeset 17811 711092884c032410bd635b1d68ef9c778afa3777
parent 1 9b2a99adc05e53cd4010de512f50118594756650
child 94475 f4157e8c410708d76703f19e4dfb61859bfe32d8
permissions -rw-r--r--
Lazy fill the stackTracker as we lookup the nativeFrameOffset for values. Purge all entries related to the current frame when it is popped. This code could be further simplified if Tracker was a template.

"""Store the results.

Use a db, but we could do better"""

import shelve
import string

class results:
    def __init__(self, id):
        self.id = id
        self.d = shelve.open("data/"+id+".db")

    def get_tester(self, path):
        import BaseTest

        try:
            fname = path+"tester.py"
            text = open(fname).read()
            # Thanks to markh, for showing me how to do this
            # Python Is Cool.
            codeob = compile(text, fname, "exec")
            namespace = { 'BaseTester': BaseTest.tester }
            exec codeob in namespace, namespace
            tester = namespace['tester']()
        except IOError:
            tester =  BaseTest.tester()

        if self.d.has_key(path):
            tester.__dict__ = self.d[path]
        else:
            tester.parse_config(open(path+"config"))

        return tester

    def set_tester(self, path, test):
        self.d[path] = test.__dict__

    def write_report(self, file):
        for i in self.d.keys():
            file.write("%s: " % (i))
            tester = self.get_tester(i)
            res, detail = tester.result()
            if res:
                file.write("Pass!\n")
            else:
                file.write("Fail: %s\n" % (detail))

    def __del__(self):
        self.d.close()