test_cli: pass rc out of do_cli() too

This commit is contained in:
Brian Warner 2008-12-02 20:08:28 -07:00
parent c43d7dd5f0
commit cdbb72d5ff
1 changed files with 31 additions and 29 deletions

View File

@ -269,8 +269,8 @@ class CLITestMixin:
d = threads.deferToThread(runner.runner, argv, run_by_human=False, d = threads.deferToThread(runner.runner, argv, run_by_human=False,
stdin=StringIO(stdin), stdin=StringIO(stdin),
stdout=stdout, stderr=stderr) stdout=stdout, stderr=stderr)
def _done(res): def _done(rc):
return stdout.getvalue(), stderr.getvalue() return rc, stdout.getvalue(), stderr.getvalue()
d.addCallback(_done) d.addCallback(_done)
return d return d
@ -290,7 +290,7 @@ class CreateAlias(SystemTestMixin, CLITestMixin, unittest.TestCase):
self.basedir = os.path.dirname(self.mktemp()) self.basedir = os.path.dirname(self.mktemp())
d = self.set_up_nodes() d = self.set_up_nodes()
d.addCallback(lambda res: self.do_cli("create-alias", "tahoe")) d.addCallback(lambda res: self.do_cli("create-alias", "tahoe"))
def _done((stdout,stderr)): def _done((rc,stdout,stderr)):
self.failUnless("Alias 'tahoe' created" in stdout) self.failUnless("Alias 'tahoe' created" in stdout)
self.failIf(stderr) self.failIf(stderr)
aliases = get_aliases(self.getdir("client0")) aliases = get_aliases(self.getdir("client0"))
@ -298,6 +298,7 @@ class CreateAlias(SystemTestMixin, CLITestMixin, unittest.TestCase):
self.failUnless(aliases["tahoe"].startswith("URI:DIR2:")) self.failUnless(aliases["tahoe"].startswith("URI:DIR2:"))
d.addCallback(_done) d.addCallback(_done)
d.addCallback(lambda res: self.do_cli("create-alias", "two")) d.addCallback(lambda res: self.do_cli("create-alias", "two"))
def _stash_urls(res): def _stash_urls(res):
aliases = get_aliases(self.getdir("client0")) aliases = get_aliases(self.getdir("client0"))
node_url_file = os.path.join(self.getdir("client0"), "node.url") node_url_file = os.path.join(self.getdir("client0"), "node.url")
@ -316,9 +317,10 @@ class CreateAlias(SystemTestMixin, CLITestMixin, unittest.TestCase):
self._test_webopen(["tahoe:subdir"], self.tahoe_subdir_url) self._test_webopen(["tahoe:subdir"], self.tahoe_subdir_url)
self._test_webopen(["tahoe:subdir/"], self.tahoe_subdir_url + '/') self._test_webopen(["tahoe:subdir/"], self.tahoe_subdir_url + '/')
self._test_webopen(["tahoe:subdir/file"], self.tahoe_subdir_url + '/file') self._test_webopen(["tahoe:subdir/file"], self.tahoe_subdir_url + '/file')
# if "file" is indeed a file, then the url produced by webopen in this # if "file" is indeed a file, then the url produced by webopen in
# case is disallowed by the webui. but by design, webopen passes through # this case is disallowed by the webui. but by design, webopen
# the mistake from the user to the resultant webopened url # passes through the mistake from the user to the resultant
# webopened url
self._test_webopen(["tahoe:subdir/file/"], self.tahoe_subdir_url + '/file/') self._test_webopen(["tahoe:subdir/file/"], self.tahoe_subdir_url + '/file/')
self._test_webopen(["two:"], self.two_url) self._test_webopen(["two:"], self.two_url)
d.addCallback(_test_urls) d.addCallback(_test_urls)
@ -336,7 +338,7 @@ class Put(SystemTestMixin, CLITestMixin, unittest.TestCase):
d = self.set_up_nodes() d = self.set_up_nodes()
d.addCallback(lambda res: self.do_cli("put", stdin=DATA)) d.addCallback(lambda res: self.do_cli("put", stdin=DATA))
def _uploaded(res): def _uploaded(res):
(stdout, stderr) = res (rc, stdout, stderr) = res
self.failUnless("waiting for file data on stdin.." in stderr) self.failUnless("waiting for file data on stdin.." in stderr)
self.failUnless("200 OK" in stderr, stderr) self.failUnless("200 OK" in stderr, stderr)
self.readcap = stdout self.readcap = stdout
@ -344,12 +346,12 @@ class Put(SystemTestMixin, CLITestMixin, unittest.TestCase):
d.addCallback(_uploaded) d.addCallback(_uploaded)
d.addCallback(lambda res: self.do_cli("get", self.readcap)) d.addCallback(lambda res: self.do_cli("get", self.readcap))
def _downloaded(res): def _downloaded(res):
(stdout, stderr) = res (rc, stdout, stderr) = res
self.failUnlessEqual(stderr, "") self.failUnlessEqual(stderr, "")
self.failUnlessEqual(stdout, DATA) self.failUnlessEqual(stdout, DATA)
d.addCallback(_downloaded) d.addCallback(_downloaded)
d.addCallback(lambda res: self.do_cli("put", "-", stdin=DATA)) d.addCallback(lambda res: self.do_cli("put", "-", stdin=DATA))
d.addCallback(lambda (stdout,stderr): d.addCallback(lambda (rc,stdout,stderr):
self.failUnlessEqual(stdout, self.readcap)) self.failUnlessEqual(stdout, self.readcap))
return d return d
@ -370,16 +372,16 @@ class Put(SystemTestMixin, CLITestMixin, unittest.TestCase):
f.close() f.close()
d = self.set_up_nodes() d = self.set_up_nodes()
d.addCallback(lambda res: self.do_cli("put", rel_fn)) d.addCallback(lambda res: self.do_cli("put", rel_fn))
def _uploaded((stdout,stderr)): def _uploaded((rc,stdout,stderr)):
readcap = stdout readcap = stdout
self.failUnless(readcap.startswith("URI:LIT:")) self.failUnless(readcap.startswith("URI:LIT:"))
self.readcap = readcap self.readcap = readcap
d.addCallback(_uploaded) d.addCallback(_uploaded)
d.addCallback(lambda res: self.do_cli("put", "./" + rel_fn)) d.addCallback(lambda res: self.do_cli("put", "./" + rel_fn))
d.addCallback(lambda (stdout,stderr): d.addCallback(lambda (rc,stdout,stderr):
self.failUnlessEqual(stdout, self.readcap)) self.failUnlessEqual(stdout, self.readcap))
d.addCallback(lambda res: self.do_cli("put", abs_fn)) d.addCallback(lambda res: self.do_cli("put", abs_fn))
d.addCallback(lambda (stdout,stderr): d.addCallback(lambda (rc,stdout,stderr):
self.failUnlessEqual(stdout, self.readcap)) self.failUnlessEqual(stdout, self.readcap))
# we just have to assume that ~ is handled properly # we just have to assume that ~ is handled properly
return d return d
@ -408,7 +410,7 @@ class Put(SystemTestMixin, CLITestMixin, unittest.TestCase):
d.addCallback(lambda res: d.addCallback(lambda res:
self.do_cli("put", rel_fn, "uploaded.txt")) self.do_cli("put", rel_fn, "uploaded.txt"))
def _uploaded((stdout,stderr)): def _uploaded((rc,stdout,stderr)):
readcap = stdout.strip() readcap = stdout.strip()
self.failUnless(readcap.startswith("URI:LIT:")) self.failUnless(readcap.startswith("URI:LIT:"))
self.failUnless("201 Created" in stderr, stderr) self.failUnless("201 Created" in stderr, stderr)
@ -416,12 +418,12 @@ class Put(SystemTestMixin, CLITestMixin, unittest.TestCase):
d.addCallback(_uploaded) d.addCallback(_uploaded)
d.addCallback(lambda res: d.addCallback(lambda res:
self.do_cli("get", "tahoe:uploaded.txt")) self.do_cli("get", "tahoe:uploaded.txt"))
d.addCallback(lambda (stdout,stderr): d.addCallback(lambda (rc,stdout,stderr):
self.failUnlessEqual(stdout, DATA)) self.failUnlessEqual(stdout, DATA))
d.addCallback(lambda res: d.addCallback(lambda res:
self.do_cli("put", "-", "uploaded.txt", stdin=DATA2)) self.do_cli("put", "-", "uploaded.txt", stdin=DATA2))
def _replaced((stdout,stderr)): def _replaced((rc,stdout,stderr)):
readcap = stdout.strip() readcap = stdout.strip()
self.failUnless(readcap.startswith("URI:LIT:")) self.failUnless(readcap.startswith("URI:LIT:"))
self.failUnless("200 OK" in stderr, stderr) self.failUnless("200 OK" in stderr, stderr)
@ -430,20 +432,20 @@ class Put(SystemTestMixin, CLITestMixin, unittest.TestCase):
d.addCallback(lambda res: d.addCallback(lambda res:
self.do_cli("put", rel_fn, "subdir/uploaded2.txt")) self.do_cli("put", rel_fn, "subdir/uploaded2.txt"))
d.addCallback(lambda res: self.do_cli("get", "subdir/uploaded2.txt")) d.addCallback(lambda res: self.do_cli("get", "subdir/uploaded2.txt"))
d.addCallback(lambda (stdout,stderr): d.addCallback(lambda (rc,stdout,stderr):
self.failUnlessEqual(stdout, DATA)) self.failUnlessEqual(stdout, DATA))
d.addCallback(lambda res: d.addCallback(lambda res:
self.do_cli("put", rel_fn, "tahoe:uploaded3.txt")) self.do_cli("put", rel_fn, "tahoe:uploaded3.txt"))
d.addCallback(lambda res: self.do_cli("get", "tahoe:uploaded3.txt")) d.addCallback(lambda res: self.do_cli("get", "tahoe:uploaded3.txt"))
d.addCallback(lambda (stdout,stderr): d.addCallback(lambda (rc,stdout,stderr):
self.failUnlessEqual(stdout, DATA)) self.failUnlessEqual(stdout, DATA))
d.addCallback(lambda res: d.addCallback(lambda res:
self.do_cli("put", rel_fn, "tahoe:subdir/uploaded4.txt")) self.do_cli("put", rel_fn, "tahoe:subdir/uploaded4.txt"))
d.addCallback(lambda res: d.addCallback(lambda res:
self.do_cli("get", "tahoe:subdir/uploaded4.txt")) self.do_cli("get", "tahoe:subdir/uploaded4.txt"))
d.addCallback(lambda (stdout,stderr): d.addCallback(lambda (rc,stdout,stderr):
self.failUnlessEqual(stdout, DATA)) self.failUnlessEqual(stdout, DATA))
def _get_dircap(res): def _get_dircap(res):
@ -455,7 +457,7 @@ class Put(SystemTestMixin, CLITestMixin, unittest.TestCase):
self.dircap+":./uploaded5.txt")) self.dircap+":./uploaded5.txt"))
d.addCallback(lambda res: d.addCallback(lambda res:
self.do_cli("get", "tahoe:uploaded5.txt")) self.do_cli("get", "tahoe:uploaded5.txt"))
d.addCallback(lambda (stdout,stderr): d.addCallback(lambda (rc,stdout,stderr):
self.failUnlessEqual(stdout, DATA)) self.failUnlessEqual(stdout, DATA))
d.addCallback(lambda res: d.addCallback(lambda res:
@ -463,7 +465,7 @@ class Put(SystemTestMixin, CLITestMixin, unittest.TestCase):
self.dircap+":./subdir/uploaded6.txt")) self.dircap+":./subdir/uploaded6.txt"))
d.addCallback(lambda res: d.addCallback(lambda res:
self.do_cli("get", "tahoe:subdir/uploaded6.txt")) self.do_cli("get", "tahoe:subdir/uploaded6.txt"))
d.addCallback(lambda (stdout,stderr): d.addCallback(lambda (rc,stdout,stderr):
self.failUnlessEqual(stdout, DATA)) self.failUnlessEqual(stdout, DATA))
return d return d
@ -488,33 +490,33 @@ class Put(SystemTestMixin, CLITestMixin, unittest.TestCase):
d.addCallback(lambda res: self.do_cli("put", "--mutable", stdin=DATA)) d.addCallback(lambda res: self.do_cli("put", "--mutable", stdin=DATA))
def _created(res): def _created(res):
(stdout, stderr) = res (rc, stdout, stderr) = res
self.failUnless("waiting for file data on stdin.." in stderr) self.failUnless("waiting for file data on stdin.." in stderr)
self.failUnless("200 OK" in stderr) self.failUnless("200 OK" in stderr)
self.filecap = stdout self.filecap = stdout
self.failUnless(self.filecap.startswith("URI:SSK:")) self.failUnless(self.filecap.startswith("URI:SSK:"))
d.addCallback(_created) d.addCallback(_created)
d.addCallback(lambda res: self.do_cli("get", self.filecap)) d.addCallback(lambda res: self.do_cli("get", self.filecap))
d.addCallback(lambda (out,err): self.failUnlessEqual(out, DATA)) d.addCallback(lambda (rc,out,err): self.failUnlessEqual(out, DATA))
d.addCallback(lambda res: self.do_cli("put", "-", self.filecap, stdin=DATA2)) d.addCallback(lambda res: self.do_cli("put", "-", self.filecap, stdin=DATA2))
def _replaced(res): def _replaced(res):
(stdout, stderr) = res (rc, stdout, stderr) = res
self.failUnless("waiting for file data on stdin.." in stderr) self.failUnless("waiting for file data on stdin.." in stderr)
self.failUnless("200 OK" in stderr) self.failUnless("200 OK" in stderr)
self.failUnlessEqual(self.filecap, stdout) self.failUnlessEqual(self.filecap, stdout)
d.addCallback(_replaced) d.addCallback(_replaced)
d.addCallback(lambda res: self.do_cli("get", self.filecap)) d.addCallback(lambda res: self.do_cli("get", self.filecap))
d.addCallback(lambda (out,err): self.failUnlessEqual(out, DATA2)) d.addCallback(lambda (rc,out,err): self.failUnlessEqual(out, DATA2))
d.addCallback(lambda res: self.do_cli("put", rel_fn, self.filecap)) d.addCallback(lambda res: self.do_cli("put", rel_fn, self.filecap))
def _replaced2(res): def _replaced2(res):
(stdout, stderr) = res (rc, stdout, stderr) = res
self.failUnless("200 OK" in stderr) self.failUnless("200 OK" in stderr)
self.failUnlessEqual(self.filecap, stdout) self.failUnlessEqual(self.filecap, stdout)
d.addCallback(_replaced2) d.addCallback(_replaced2)
d.addCallback(lambda res: self.do_cli("get", self.filecap)) d.addCallback(lambda res: self.do_cli("get", self.filecap))
d.addCallback(lambda (out,err): self.failUnlessEqual(out, DATA3)) d.addCallback(lambda (rc,out,err): self.failUnlessEqual(out, DATA3))
return d return d
@ -543,7 +545,7 @@ class Put(SystemTestMixin, CLITestMixin, unittest.TestCase):
self.do_cli("put", fn2, "tahoe:uploaded.txt")) self.do_cli("put", fn2, "tahoe:uploaded.txt"))
d.addCallback(lambda res: d.addCallback(lambda res:
self.do_cli("get", "tahoe:uploaded.txt")) self.do_cli("get", "tahoe:uploaded.txt"))
d.addCallback(lambda (out,err): self.failUnlessEqual(out, DATA2)) d.addCallback(lambda (rc,out,err): self.failUnlessEqual(out, DATA2))
return d return d
class Cp(SystemTestMixin, CLITestMixin, unittest.TestCase): class Cp(SystemTestMixin, CLITestMixin, unittest.TestCase):
@ -567,9 +569,9 @@ class Cp(SystemTestMixin, CLITestMixin, unittest.TestCase):
d.addCallback(lambda res: self.do_cli("cp", fn2, "tahoe:")) d.addCallback(lambda res: self.do_cli("cp", fn2, "tahoe:"))
d.addCallback(lambda res: self.do_cli("get", "tahoe:Ärtonwall")) d.addCallback(lambda res: self.do_cli("get", "tahoe:Ärtonwall"))
d.addCallback(lambda (out,err): self.failUnlessEqual(out, DATA1)) d.addCallback(lambda (rc,out,err): self.failUnlessEqual(out, DATA1))
d.addCallback(lambda res: self.do_cli("get", "tahoe:Metallica")) d.addCallback(lambda res: self.do_cli("get", "tahoe:Metallica"))
d.addCallback(lambda (out,err): self.failUnlessEqual(out, DATA2)) d.addCallback(lambda (rc,out,err): self.failUnlessEqual(out, DATA2))
return d return d