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/mkblddir | 17 +++++++++++++++++ bin/runtest | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100755 bin/mkblddir create mode 100755 bin/runtest (limited to 'bin') diff --git a/bin/mkblddir b/bin/mkblddir new file mode 100755 index 0000000..bb646e0 --- /dev/null +++ b/bin/mkblddir @@ -0,0 +1,17 @@ +#!/bin/python + +import os + +ROOT = "/home/nolln/root" +SRC = "sys" +BUILD = "build" +TEST = "test" +IGNORED = ["build", "include", "lib", "bin", ".git", "vendor", "obj", "dep", ".generated"] + +if __name__ == "__main__": + for root, dirs, _ in os.walk(f"{ROOT}/{SRC}"): + dirs[:] = [d for d in dirs if d not in IGNORED] + for newroot in [BUILD, TEST]: + blddir = f"{ROOT}/{newroot}/{root[len(ROOT)+len(SRC)+2:]}" + if not os.path.exists(blddir): + os.mkdir(blddir) 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