chiark / gitweb /
soak: Allow arguments to be passed on to the test program.
authorMark Wooding <mdw@distorted.org.uk>
Fri, 6 Sep 2024 19:34:53 +0000 (20:34 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Fri, 6 Sep 2024 19:34:53 +0000 (20:34 +0100)
This also allows us to run it under valgrind(1), for example.

soak

diff --git a/soak b/soak
index b8ba7338d3d23b8774258f10a3ab9789280025f4..5e95d15c9a7dab45779428fcec70f36f8b4730d3 100755 (executable)
--- a/soak
+++ b/soak
@@ -98,7 +98,8 @@ class Options (object):
   def __init__(me):
     op = OP.OptionParser\
          (usage = "%prog [-y] [-c STEPS] [-f FILE] [-l LIMIT] "
-                  "[-n STEPS] PROG")
+                  "[-n STEPS] PROG [ARGS ...]")
+    op.disable_interspersed_args()
     for short, long, kw in \
         [("-c", "--ckpt-steps",
           dict(type = "int", metavar = "STEPS",
@@ -126,8 +127,8 @@ class Options (object):
     me.sync = opts.sync
     me.ckpt_steps = opts.ckpt_steps
     me.nsteps = opts.nsteps
-    if len(args) != 1: op.print_usage(SYS.stderr); SYS.exit(2)
-    me.testprog = args[0]
+    if len(args) < 1: op.print_usage(SYS.stderr); SYS.exit(2)
+    me.testprog = args
 
 class Level (object):
   def __init__(me, kind, base, limit, tree = "_"):
@@ -222,7 +223,7 @@ def choices():
 
 OPTS = Options()
 ST = State(OPTS)
-KID = SUB.Popen([OPTS.testprog], stdin = SUB.PIPE, stdout = SUB.PIPE)
+KID = SUB.Popen(OPTS.testprog, stdin = SUB.PIPE, stdout = SUB.PIPE)
 
 def fail(msg):
   SYS.stderr.write("%s: FAILED: %s\n" % (PROG, msg))