From 249df0fd7dccf281c845ac582f54a87843fc3c3f Mon Sep 17 00:00:00 2001 From: Rob Savoye Date: Thu, 21 May 2020 16:35:44 -0600 Subject: DejaGnu unit testing API for Python --- testsuite/dejagnu.py | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 testsuite/dejagnu.py (limited to 'testsuite') diff --git a/testsuite/dejagnu.py b/testsuite/dejagnu.py new file mode 100644 index 0000000..e2bfa2d --- /dev/null +++ b/testsuite/dejagnu.py @@ -0,0 +1,88 @@ +#!/usr/bin/python3 +# +# Copyright (C) 2018, 2019, 2020 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + + +class DejaGnu(object): + def __init__(self): + self.passed = 0 + self.failed = 0 + self.xfailed = 0 + self.xpassed = 0 + self.kfailed = 0 + self.kpassed = 0 + self.untested = 0 + self.unresolved = 0 + self.verbosity = 0 + + def verbose_level(self, level=0): + self.verbosity = level + + def verbose(self, msg="", level=0): + if self.verbosity > level: + print(msg) + + def fails(self, msg=""): + self.failed += 1 + print("FAIL: " + msg) + + def xfails(self, msg=""): + self.xfailed += 1 + print("XFAIL: " + msg) + + def untested(self, msg=""): + self.untested += 1 + print("UNTESTED: " + msg) + + def xpasses(self, msg=""): + self.xpassed += 1 + print("XPASS: " + msg) + + def passes(self, msg=""): + self.passed += 1 + print("PASS: " + msg) + + def matches(self, instr, expected, msg="", yes=True): + if instr == expected: + if yes == True: + self.passes(msg) + else: + self.xpasses(msg) + return True + else: + if yes == True: + self.fails(msg) + else: + self.xfails(msg) + # print("\tGot \'" + instr + "\', expected \'" + expected + "\'") + return False + + def totals(self): + print("\nTotals") + print("-------") + if self.passed > 0: + print("Total passed: %r " % self.passed) + if self.xpassed > 0: + print("Total Xpassed: %r " % self.xpassed) + if self.failed > 0: + print("Total failed: %r " % self.failed) + if self.xfailed > 0: + print("Total Xfailed: %r " % self.xfailed) + if self.untested > 0: + print("Total untested: %r " % self.untested) + if self.unresolved > 0: + print("Total unresolved: %r " % self.unresolved) -- cgit v1.1