summaryrefslogtreecommitdiff
path: root/test/pacman/tap.py
diff options
context:
space:
mode:
authorAndrew Gregory <andrew.gregory.8@gmail.com>2013-07-29 15:22:07 -0400
committerAllan McRae <allan@archlinux.org>2013-08-21 11:00:18 +1000
commit1152052b3e27e3252f6685a369fce8a426710015 (patch)
treec7e31e108faa3cf8b464cd04fbe2123abe76b6e8 /test/pacman/tap.py
parent429b956fb2d21309cae0560d6d98225969447737 (diff)
convert pactest to TAP output
Each test produces a single TAP result with the rules run in a sub-test. This reduces output when run under automake and makes it possible to continue setting expectfailure at the test level rather than per-rule. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'test/pacman/tap.py')
-rw-r--r--test/pacman/tap.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/test/pacman/tap.py b/test/pacman/tap.py
new file mode 100644
index 00000000..c70a5350
--- /dev/null
+++ b/test/pacman/tap.py
@@ -0,0 +1,64 @@
+# Copyright (c) 2013 Pacman Development Team <pacman-dev@archlinux.org>
+#
+# 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 2 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, see <http://www.gnu.org/licenses/>.
+
+todo = None
+count = 0
+level = 0
+failed = 0
+
+def _output(msg):
+ print("%s%s" % (" "*level, msg))
+
+def ok(ok, description=""):
+ global count, failed
+ count += 1
+ if not ok:
+ failed += 1
+ directive = " # TODO" if todo else ""
+ _output("%s %d - %s%s" % ("ok" if ok else "not ok", count,
+ description, directive))
+
+def plan(count):
+ _output("1..%d" % (count))
+
+def diag(msg):
+ _output("# %s" % (msg))
+
+def bail(reason=""):
+ _output("Bail out! %s" % (reason))
+
+def subtest(func, description=""):
+ global todo, count, level, failed
+
+ save_todo = todo
+ save_count = count
+ save_level = level
+ save_failed = failed
+
+ todo = None
+ count = 0
+ level += 1
+ failed = 0
+
+ func()
+
+ subtest_ok = not failed
+
+ todo = save_todo
+ count = save_count
+ level = save_level
+ failed = save_failed
+
+ ok(subtest_ok, description)