From e992fed1f53ba27c641d29e25b008230564544c8 Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Sun, 21 Oct 2007 12:33:17 -0700 Subject: [PATCH] cli: improve test coverage --- src/allmydata/test/test_system.py | 89 ++++++++++++++++++++++++++----- 1 file changed, 77 insertions(+), 12 deletions(-) diff --git a/src/allmydata/test/test_system.py b/src/allmydata/test/test_system.py index 2b6c0720..13d25fdc 100644 --- a/src/allmydata/test/test_system.py +++ b/src/allmydata/test/test_system.py @@ -702,26 +702,76 @@ class SystemTest(testutil.SignalMixin, unittest.TestCase): # network calls) private_uri = self.clients[0].getServiceNamed("vdrive")._private_uri + global_uri = self.clients[0].getServiceNamed("vdrive")._global_uri nodeargs = [ "--node-url", self.webish_url, "--root-uri", private_uri, ] + public_nodeargs = [ + "--node-url", self.webish_url, + "--root-uri", global_uri, + ] + TESTDATA = "I will not write the same thing over and over.\n" * 100 + + d = defer.succeed(None) - argv = ["ls"] + nodeargs - d = self._run_cli(argv) - def _check_ls((out,err)): + def _ls_root(res): + argv = ["ls"] + nodeargs + return self._run_cli(argv) + d.addCallback(_ls_root) + def _check_ls_root((out,err)): self.failUnless("personal" in out) self.failUnless("s2-ro" in out) self.failUnless("s2-rw" in out) self.failUnlessEqual(err, "") - d.addCallback(_check_ls) + d.addCallback(_check_ls_root) + + def _ls_subdir(res): + argv = ["ls"] + nodeargs + ["personal"] + return self._run_cli(argv) + d.addCallback(_ls_subdir) + def _check_ls_subdir((out,err)): + self.failUnless("sekrit data" in out) + self.failUnlessEqual(err, "") + d.addCallback(_check_ls_subdir) + + def _ls_public_subdir(res): + argv = ["ls"] + public_nodeargs + ["subdir1"] + return self._run_cli(argv) + d.addCallback(_ls_public_subdir) + def _check_ls_public_subdir((out,err)): + self.failUnless("subdir2" in out) + self.failUnless("mydata567" in out) + self.failUnlessEqual(err, "") + d.addCallback(_check_ls_public_subdir) + + def _ls_file(res): + argv = ["ls"] + public_nodeargs + ["subdir1/mydata567"] + return self._run_cli(argv) + d.addCallback(_ls_file) + def _check_ls_file((out,err)): + self.failUnlessEqual(out.strip(), "112 subdir1/mydata567") + self.failUnlessEqual(err, "") + d.addCallback(_check_ls_file) + + # tahoe_ls doesn't currently handle the error correctly: it tries to + # JSON-parse a traceback. +## def _ls_missing(res): +## argv = ["ls"] + nodeargs + ["bogus"] +## return self._run_cli(argv) +## d.addCallback(_ls_missing) +## def _check_ls_missing((out,err)): +## print "OUT", out +## print "ERR", err +## self.failUnlessEqual(err, "") +## d.addCallback(_check_ls_missing) def _put(res): tdir = self.getdir("cli_put") fileutil.make_dirs(tdir) fn = os.path.join(tdir, "upload_me") f = open(fn, "w") - f.write("I will not write the same thing over and over.\n" * 100) + f.write(TESTDATA) f.close() argv = ["put"] + nodeargs + [fn, "test_put/upload.txt"] return self._run_cli(argv) @@ -733,18 +783,33 @@ class SystemTest(testutil.SignalMixin, unittest.TestCase): d = vdrive0.get_node_at_path("~/test_put/upload.txt") d.addCallback(lambda filenode: filenode.download_to_data()) def _check_put2(res): - self.failUnless("I will not write" in res) + self.failUnlessEqual(res, TESTDATA) d.addCallback(_check_put2) return d d.addCallback(_check_put) - def _get(res): + + def _get_to_stdout(res): argv = ["get"] + nodeargs + ["test_put/upload.txt"] return self._run_cli(argv) - d.addCallback(_get) - def _check_get((out,err)): - self.failUnless("I will not write" in out) + d.addCallback(_get_to_stdout) + def _check_get_to_stdout((out,err)): + self.failUnlessEqual(out, TESTDATA) self.failUnlessEqual(err, "") - d.addCallback(_check_get) + d.addCallback(_check_get_to_stdout) + + get_to_file_target = os.path.join(self.basedir, "get.downfile") + def _get_to_file(res): + argv = ["get"] + nodeargs + ["test_put/upload.txt", + get_to_file_target] + return self._run_cli(argv) + d.addCallback(_get_to_file) + def _check_get_to_file((out,err)): + data = open(get_to_file_target, "rb").read() + self.failUnlessEqual(data, TESTDATA) + self.failUnlessEqual(out, "") + self.failUnlessEqual(err, "test_put/upload.txt retrieved and written to system/SystemTest/test_vdrive/get.downfile\n") + d.addCallback(_check_get_to_file) + def _mv(res): argv = ["mv"] + nodeargs + ["test_put/upload.txt", @@ -763,7 +828,7 @@ class SystemTest(testutil.SignalMixin, unittest.TestCase): vdrive0.get_node_at_path("~/test_put/moved.txt")) d.addCallback(lambda filenode: filenode.download_to_data()) def _check_mv2(res): - self.failUnless("I will not write" in res) + self.failUnlessEqual(res, TESTDATA) d.addCallback(_check_mv2) return d d.addCallback(_check_mv) -- 2.45.2