import os.path
from twisted.trial import unittest
from cStringIO import StringIO
-import urllib, re
+import urllib, re, sys
import simplejson
-from mock import patch
+from mock import patch, Mock, call
from allmydata.util import fileutil, hashutil, base32, keyutil
from allmydata import uri
for file in listdir_unicode(unicode(basedir)):
self.failUnlessIn(normalize(file), filenames)
+ def test_exception_catcher(self):
+ self.basedir = "cli/exception_catcher"
+
+ runner_mock = Mock()
+ sys_exit_mock = Mock()
+ stderr = StringIO()
+ self.patch(sys, "argv", ["tahoe"])
+ self.patch(runner, "runner", runner_mock)
+ self.patch(sys, "exit", sys_exit_mock)
+ self.patch(sys, "stderr", stderr)
+ exc = Exception("canary")
+
+ def call_runner(args, install_node_control=True):
+ raise exc
+ runner_mock.side_effect = call_runner
+
+ runner.run()
+ self.failUnlessEqual(runner_mock.call_args_list, [call([], install_node_control=True)])
+ self.failUnlessEqual(sys_exit_mock.call_args_list, [call(1)])
+ self.failUnlessIn(str(exc), stderr.getvalue())
+
class Help(unittest.TestCase):
def test_get(self):
d = self.do_cli("create-alias", "tahoe")
d.addCallback(lambda res:
self.do_cli("put", "--mutable", fn1, "tahoe:uploaded.txt"))
+ def _check(res):
+ (rc, out, err) = res
+ self.failUnlessEqual(rc, 0, str(res))
+ self.failUnlessEqual(err, "", str(res))
+ self.uri = out
+ d.addCallback(_check)
d.addCallback(lambda res:
self.do_cli("put", fn2, "tahoe:uploaded.txt"))
+ def _check2(res):
+ (rc, out, err) = res
+ self.failUnlessEqual(rc, 0, str(res))
+ self.failUnlessEqual(err, "", str(res))
+ self.failUnlessEqual(out, self.uri, str(res))
+ d.addCallback(_check2)
d.addCallback(lambda res:
self.do_cli("get", "tahoe:uploaded.txt"))
d.addCallback(lambda (rc,out,err): self.failUnlessReallyEqual(out, DATA2))
d.addCallback(_got_testdir_json)
return d
+ def test_cp_verbose(self):
+ self.basedir = "cli/Cp/cp_verbose"
+ self.set_up_grid()
+
+ # Write two test files, which we'll copy to the grid.
+ test1_path = os.path.join(self.basedir, "test1")
+ test2_path = os.path.join(self.basedir, "test2")
+ fileutil.write(test1_path, "test1")
+ fileutil.write(test2_path, "test2")
+
+ d = self.do_cli("create-alias", "tahoe")
+ d.addCallback(lambda ign:
+ self.do_cli("cp", "--verbose", test1_path, test2_path, "tahoe:"))
+ def _check(res):
+ (rc, out, err) = res
+ self.failUnlessEqual(rc, 0, str(res))
+ self.failUnlessIn("Success: files copied", out, str(res))
+ self.failUnlessEqual(err, """\
+attaching sources to targets, 2 files / 0 dirs in root
+targets assigned, 1 dirs, 2 files
+starting copy, 2 files, 1 directories
+1/2 files, 0/1 directories
+2/2 files, 0/1 directories
+1/1 directories
+""", str(res))
+ d.addCallback(_check)
+ return d
+
class Backup(GridTestMixin, CLITestMixin, StallMixin, unittest.TestCase):