From 491f96258e56319bce8bafd8dcb64ac16eaa9b2f Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@allmydata.com>
Date: Thu, 19 Apr 2007 18:56:45 -0700
Subject: [PATCH] test_runner.py: add some coverage for
 allmydata.scripts.runner, to create nodes

---
 src/allmydata/scripts/runner.py   | 10 +++++++---
 src/allmydata/test/test_runner.py | 29 +++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 3 deletions(-)
 create mode 100644 src/allmydata/test/test_runner.py

diff --git a/src/allmydata/scripts/runner.py b/src/allmydata/scripts/runner.py
index 92229c7f..973ddede 100644
--- a/src/allmydata/scripts/runner.py
+++ b/src/allmydata/scripts/runner.py
@@ -89,16 +89,16 @@ class Options(usage.Options):
         if not hasattr(self, 'subOptions'):
             raise usage.UsageError("must specify a command")
 
-def run():
+def runner(argv):
     config = Options()
     try:
-        config.parseOptions()
+        config.parseOptions(argv)
     except usage.error, e:
         print "%s:  %s" % (sys.argv[0], e)
         print
         c = getattr(config, 'subOptions', config)
         print str(c)
-        sys.exit(1)
+        return 1
 
     command = config.subCommand
     so = config.subOptions
@@ -114,6 +114,10 @@ def run():
     elif command == "restart":
         rc = restart(so)
     rc = rc or 0
+    return rc
+
+def run():
+    rc = runner(sys.argv[1:])
     sys.exit(rc)
 
 def create_client(config):
diff --git a/src/allmydata/test/test_runner.py b/src/allmydata/test/test_runner.py
new file mode 100644
index 00000000..852c7de5
--- /dev/null
+++ b/src/allmydata/test/test_runner.py
@@ -0,0 +1,29 @@
+
+from twisted.trial import unittest
+
+import os.path
+from allmydata.scripts import runner
+from allmydata.util import fileutil
+
+class CreateNode(unittest.TestCase):
+    def workdir(self, name):
+        basedir = os.path.join("test_runner", name)
+        fileutil.make_dirs(basedir)
+        return basedir
+
+    def test_client(self):
+        basedir = self.workdir("test_client")
+        c1 = os.path.join(basedir, "c1")
+        argv = ["create-client", "--basedir", c1]
+        runner.runner(argv)
+        self.failUnless(os.path.exists(c1))
+        self.failUnless(os.path.exists(os.path.join(c1, "client.tac")))
+
+    def test_introducer(self):
+        basedir = self.workdir("test_introducer")
+        c1 = os.path.join(basedir, "c1")
+        argv = ["create-introducer", "--basedir", c1]
+        runner.runner(argv)
+        self.failUnless(os.path.exists(c1))
+        self.failUnless(os.path.exists(os.path.join(c1, "introducer.tac")))
+
-- 
2.45.2