aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2020-05-15 13:21:21 -0700
committerNicholas Noll <nbnoll@eml.cc>2020-05-15 13:21:21 -0700
commit05aeef535ac60ccca81fe58bc6a0152ca80bc211 (patch)
tree2ffc43a184852d73c4787f8e0ad47d9ed4db0ad2 /bin
parente881e80d6b793c2d29e472ae4b65bdf8e4363b87 (diff)
feat: dispatch code for tests. hooked into vim macros
Diffstat (limited to 'bin')
-rwxr-xr-xbin/mkblddir17
-rwxr-xr-xbin/runtest51
2 files changed, 68 insertions, 0 deletions
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:])