diff --git a/bin/test_argparse.rb b/bin/test_argparse.rb
new file mode 100755
index 0000000..5495aa8
--- /dev/null
+++ b/bin/test_argparse.rb
@@ -0,0 +1,37 @@
+#!/usr/bin/ruby
+
+top_dir = File.dirname(File.dirname(__FILE__))
+lib_dir = File.join(File.expand_path(top_dir), "lib")
+$:.unshift(lib_dir) if File.directory?(File.join(lib_dir, "cmdtest"))
+
+require "cmdtest/argumentparser"
+
+
+pr = Cmdtest::ArgumentParser.new("jcons_cmds")
+
+pr.add("-q", "--quiet",       "be more quiet")
+pr.add("-j", "--parallel",    "build in parallel",  type: Integer, default: 1, metavar: "N")
+
+pr.add("-k", "--keep-going",  "continue after errors")
+pr.add("-B", "--always-make", "always build targets")
+pr.add("-r", "--remove",      "remove targets")
+pr.add("",   "--accept-existing-target", "make updating an existing target a nop")
+
+pr.add("", "--dont-trust-mtime", "always consult files for content digest")
+
+pr.add("-f", "--file",        "name of *.cmds file", type: [String])
+pr.add("-v", "--verbose",     "be more verbose")
+pr.add("",   "--version",     "show version")
+
+pr.add("",   "--cache-dir",   "name of cache directory", type: String)
+pr.add("",   "--cache-force", "copy existing files into cache")
+
+pr.add("-p", "--list-targets", "list known targets")
+pr.add("",   "--list-commands","list known commands")
+pr.add("",   "--log-states",   "log state machine")
+
+pr.addpos("arg", "target or NAME=VALUE", nargs: 0..999)
+
+opts = pr.parse_args(ARGV)
+
+p opts