From 813fdd70da79b961de909e37de81489526020b9f Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@lothar.com>
Date: Mon, 23 Apr 2007 21:28:19 -0700
Subject: [PATCH] test_runner.py: improve test coverage a little bit

---
 src/allmydata/scripts/runner.py   |  4 +++-
 src/allmydata/test/test_runner.py | 39 +++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/src/allmydata/scripts/runner.py b/src/allmydata/scripts/runner.py
index 81764e49..70d2d997 100644
--- a/src/allmydata/scripts/runner.py
+++ b/src/allmydata/scripts/runner.py
@@ -95,11 +95,13 @@ class Options(usage.Options):
         if not hasattr(self, 'subOptions'):
             raise usage.UsageError("must specify a command")
 
-def runner(argv):
+def runner(argv, run_by_human=True):
     config = Options()
     try:
         config.parseOptions(argv)
     except usage.error, e:
+        if not run_by_human:
+            raise
         print "%s:  %s" % (sys.argv[0], e)
         print
         c = getattr(config, 'subOptions', config)
diff --git a/src/allmydata/test/test_runner.py b/src/allmydata/test/test_runner.py
index e844e2c9..167e36a9 100644
--- a/src/allmydata/test/test_runner.py
+++ b/src/allmydata/test/test_runner.py
@@ -1,6 +1,7 @@
 
 from twisted.trial import unittest
 
+from twisted.python import usage
 import os.path
 from allmydata.scripts import runner
 from allmydata.util import fileutil
@@ -19,6 +20,22 @@ class CreateNode(unittest.TestCase):
         self.failUnless(os.path.exists(c1))
         self.failUnless(os.path.exists(os.path.join(c1, "client.tac")))
 
+        c2 = os.path.join(basedir, "c2")
+        argv = ["create-client", "--quiet", c2]
+        runner.runner(argv)
+        self.failUnless(os.path.exists(c2))
+        self.failUnless(os.path.exists(os.path.join(c2, "client.tac")))
+
+        self.failUnlessRaises(usage.UsageError,
+                              runner.runner,
+                              ["create-client", "basedir", "extraarg"],
+                              run_by_human=False)
+
+        self.failUnlessRaises(usage.UsageError,
+                              runner.runner,
+                              ["create-client"],
+                              run_by_human=False)
+
     def test_introducer(self):
         basedir = self.workdir("test_introducer")
         c1 = os.path.join(basedir, "c1")
@@ -27,3 +44,25 @@ class CreateNode(unittest.TestCase):
         self.failUnless(os.path.exists(c1))
         self.failUnless(os.path.exists(os.path.join(c1, "introducer.tac")))
 
+        c2 = os.path.join(basedir, "c2")
+        argv = ["create-introducer", "--quiet", c2]
+        runner.runner(argv)
+        self.failUnless(os.path.exists(c2))
+        self.failUnless(os.path.exists(os.path.join(c2, "introducer.tac")))
+
+        self.failUnlessRaises(usage.UsageError,
+                              runner.runner,
+                              ["create-introducer", "basedir", "extraarg"],
+                              run_by_human=False)
+
+        self.failUnlessRaises(usage.UsageError,
+                              runner.runner,
+                              ["create-introducer"],
+                              run_by_human=False)
+
+    def test_subcommands(self):
+        self.failUnlessRaises(usage.UsageError,
+                              runner.runner,
+                              [],
+                              run_by_human=False)
+
-- 
2.45.2