#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+import gobject
from Events import Events
+import traceback
+
PASY_TEST_NOT_STARTED = 0
PASY_TEST_IN_PROGRESS = 1
PASY_TEST_FAIL = 2
self._state = PASY_TEST_NOT_STARTED
self._name = name
- self._test = test
def win(self):
if self._state == PASY_TEST_IN_PROGRESS:
def run(self):
self._state = PASY_TEST_IN_PROGRESS
- self.entry(self)
+ self.entry()
+
+ def report(self):
+ if self._state == PASY_TEST_WIN:
+ return "%s - PASSED" % (self._name,)
+ elif self._state == PASY_TEST_FAIL:
+ return "%s - FAILED - %s" % (self._name, self.failMsg)
+ else:
+ return "%s - INCOMPLETE" %s (self._name,)
@property
def state(self):
self._func = func
def entry(self):
- self._func(self)
+ try:
+ self._func()
+ except Exception, e:
+ self.fail(e.message)
+ traceback.print_exc()
+ self.win()
class PasyTest(PasyTestStep):
__tests__ = []
def __init__(self, name, cont):
- PasyTest.__init__(self, name)
+ PasyTestStep.__init__(self, name)
self._cont = cont
self._tests = []
- for name in __tests__:
- func = self.__getattr__(name)
+ for name in self.__tests__:
+ func = getattr(self, name)
self._addfunc(func.func_name, func)
def _addfunc(self, name, func):
- functest = PasyTestFunc(self, func.func_name, func)
- self.add(functest)
+ functest = PasyTestFunc(func.func_name, func)
self._tests.append(functest)
def entry(self):
- self._iter = self._test_iterator
+ self._iter = self._test_iterator()
gobject.idle_add(self.idle_handler)
def idle_handler(self):
if step.state == PASY_TEST_WIN or self._cont == True:
gobject.idle_add(self.idle_handler)
elif step.state == PASY_TEST_FAIL and self._cont == False:
- self.fail()
- step.events.failed += finished_handler
+ self.fail("Sub test %s Failed" % step._name)
+ step.events.finished += finished_handler
step.run()
except StopIteration:
# No More tests, check for success or fail
def _test_iterator(self):
for test in self._tests:
yield test
+
+ def report(self):
+ if self._state == PASY_TEST_WIN:
+ header = "%s - PASSED" % (self._name,)
+ elif self._state == PASY_TEST_FAIL:
+ header = "%s - FAILED - %s" % (self._name, self.failMsg)
+ else:
+ header = "%s - INCOMPLETE" %s (self._name,)
+
+ step_messages = []
+ for test in self._tests:
+ step_messages.append(test.report())
+
+ step_report = "\n\t".join(step_messages)
+ return header + "\n\t" + step_report