Merge pull request #1065 from tahoe-lafs/3714-cli-testing-coverage

A bit more test coverage for CLI.

Fixes ticket:3714
This commit is contained in:
Itamar Turner-Trauring 2021-05-25 14:55:16 -04:00 committed by GitHub
commit 8530b7548c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 79 additions and 0 deletions

0
newsfragments/3714.minor Normal file
View File

View File

@ -701,6 +701,8 @@ class Copier(object):
def need_to_copy_bytes(self, source, target):
# This should likley be a method call! but enabling that triggers
# additional bugs. https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3719
if source.need_to_copy_bytes:
# mutable tahoe files, and local files
return True

View File

@ -238,6 +238,66 @@ class Cp(GridTestMixin, CLITestMixin, unittest.TestCase):
return d
@defer.inlineCallbacks
def test_cp_duplicate_directories(self):
self.basedir = "cli/Cp/cp_duplicate_directories"
self.set_up_grid(oneshare=True)
filename = os.path.join(self.basedir, "file")
data = b"abc\xff\x00\xee"
with open(filename, "wb") as f:
f.write(data)
yield self.do_cli("create-alias", "tahoe")
(rc, out, err) = yield self.do_cli("mkdir", "tahoe:test1")
self.assertEqual(rc, 0, (rc, err))
dircap = out.strip()
(rc, out, err) = yield self.do_cli("cp", filename, "tahoe:test1/file")
self.assertEqual(rc, 0, (rc, err))
# Now duplicate dirnode, testing duplicates on destination side:
(rc, out, err) = yield self.do_cli(
"cp", "--recursive", dircap, "tahoe:test2/")
self.assertEqual(rc, 0, (rc, err))
(rc, out, err) = yield self.do_cli(
"cp", "--recursive", dircap, "tahoe:test3/")
self.assertEqual(rc, 0, (rc, err))
# Now copy to local directory, testing duplicates on origin side:
yield self.do_cli("cp", "--recursive", "tahoe:", self.basedir)
for i in range(1, 4):
with open(os.path.join(self.basedir, "test%d" % (i,), "file"), "rb") as f:
self.assertEquals(f.read(), data)
@defer.inlineCallbacks
def test_cp_immutable_file(self):
self.basedir = "cli/Cp/cp_immutable_file"
self.set_up_grid(oneshare=True)
filename = os.path.join(self.basedir, "source_file")
data = b"abc\xff\x00\xee"
with open(filename, "wb") as f:
f.write(data)
# Create immutable file:
yield self.do_cli("create-alias", "tahoe")
(rc, out, _) = yield self.do_cli("put", filename, "tahoe:file1")
filecap = out.strip()
self.assertEqual(rc, 0)
# Copy it:
(rc, _, _) = yield self.do_cli("cp", "tahoe:file1", "tahoe:file2")
self.assertEqual(rc, 0)
# Make sure resulting file is the same:
(rc, _, _) = yield self.do_cli("cp", "--recursive", "--caps-only",
"tahoe:", self.basedir)
self.assertEqual(rc, 0)
with open(os.path.join(self.basedir, "file2")) as f:
self.assertEqual(f.read().strip(), filecap)
def test_cp_replaces_mutable_file_contents(self):
self.basedir = "cli/Cp/cp_replaces_mutable_file_contents"
self.set_up_grid(oneshare=True)

View File

@ -486,3 +486,20 @@ class Put(GridTestMixin, CLITestMixin, unittest.TestCase):
self.failUnlessReallyEqual(rc_out_err[1], DATA))
return d
def test_no_leading_slash(self):
self.basedir = "cli/Put/leading_slash"
self.set_up_grid(oneshare=True)
fn1 = os.path.join(self.basedir, "DATA1")
d = self.do_cli("create-alias", "tahoe")
d.addCallback(lambda res:
self.do_cli("put", fn1, "tahoe:/uploaded.txt"))
def _check(args):
(rc, out, err) = args
self.assertEqual(rc, 1)
self.failUnlessIn("must not start with a slash", err)
self.assertEqual(len(out), 0, out)
d.addCallback(_check)
return d