From 05aeef535ac60ccca81fe58bc6a0152ca80bc211 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Fri, 15 May 2020 13:21:21 -0700 Subject: feat: dispatch code for tests. hooked into vim macros --- bin/runtest | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 bin/runtest (limited to 'bin/runtest') diff --git a/bin/runtest b/bin/runtest new file mode 100755 index 0000000..b48409b --- /dev/null +++ b/bin/runtest @@ -0,0 +1,51 @@ +#!/bin/python + +import os, sys + +from io import StringIO as buf +from subprocess import PIPE, Popen + +root = "/home/nolln/root/test" + +def usage(): + print("usage:") + print("runtest [dir | file]*") + +def run(bin): + print(f">Test of {os.path.basename(bin)}") + cmd = Popen(bin, stdout=PIPE, stderr=PIPE) + out, err = cmd.communicate() + print(">>output:") + for line in buf(out.decode('utf-8')).readlines(): + print(f" {line.strip()}") + if len(err) > 0: + print(">>errors:") + for line in buf(err.decode('utf-8')).readlines(): + print(f" {line.strip()}") + print(f">>[OK]") + +def walk(dir): + for root, _, bins in os.walk(dir): + for bin in bins: + run(f"{root}/{bin}") + +def main(args): + for arg in args: + dir = f"{root}/{arg}" + if os.path.isdir(dir): + if not os.path.exists(dir): + raise ValueError(f"directory '{dir}' does not exist") + print(f"Running tests of {arg}") + print("---------------------------------------------------") + walk(dir) + else: + bin = dir + if not os.path.exists(bin): + raise ValueError(f"binary '{bin}' does not exist") + run(bin) + +if __name__ == "__main__": + if len(sys.argv) == 1: + usage() + + main(sys.argv[1:]) -- cgit v1.2.1