]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blobdiff - src/allmydata/test/test_cli.py
CLI: improve test for 'tahoe mkdir --mutable-type='. refs #1527
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / test / test_cli.py
index 39b0f6bb664163cc21cbc77c76883b9db9529330..d2b503eb29954b7f98ab2ef2b405d276bd24edd2 100644 (file)
@@ -1167,17 +1167,20 @@ class Put(GridTestMixin, CLITestMixin, unittest.TestCase):
         fn1 = os.path.join(self.basedir, "data")
         fileutil.write(fn1, data)
         d = self.do_cli("create-alias", "tahoe")
-        d.addCallback(lambda ignored:
-            self.do_cli("put", "--mutable", "--mutable-type=mdmf",
-                        fn1, "tahoe:uploaded.txt"))
-        d.addCallback(lambda ignored:
-            self.do_cli("ls", "--json", "tahoe:uploaded.txt"))
+
+        def _put_and_ls(ign, mutable_type, filename):
+            d2 = self.do_cli("put", "--mutable", "--mutable-type="+mutable_type,
+                             fn1, filename)
+            d2.addCallback(lambda ign: self.do_cli("ls", "--json", filename))
+            return d2
+
+        d.addCallback(_put_and_ls, "mdmf", "tahoe:uploaded.txt")
         d.addCallback(self._check_mdmf_json)
-        d.addCallback(lambda ignored:
-            self.do_cli("put", "--mutable", "--mutable-type=sdmf",
-                        fn1, "tahoe:uploaded2.txt"))
-        d.addCallback(lambda ignored:
-            self.do_cli("ls", "--json", "tahoe:uploaded2.txt"))
+        d.addCallback(_put_and_ls, "MDMF", "tahoe:uploaded2.txt")
+        d.addCallback(self._check_mdmf_json)
+        d.addCallback(_put_and_ls, "sdmf", "tahoe:uploaded3.txt")
+        d.addCallback(self._check_sdmf_json)
+        d.addCallback(_put_and_ls, "SDMF", "tahoe:uploaded4.txt")
         d.addCallback(self._check_sdmf_json)
         return d
 
@@ -1198,6 +1201,25 @@ class Put(GridTestMixin, CLITestMixin, unittest.TestCase):
         d.addCallback(self._check_sdmf_json)
         return d
 
+    def test_mutable_type_implies_mutable(self):
+        self.basedir = "cli/Put/mutable_type_implies_mutable"
+        self.set_up_grid()
+        data = "data" * 100000
+        fn1 = os.path.join(self.basedir, "data")
+        fileutil.write(fn1, data)
+        d = self.do_cli("put", "--mutable-type=mdmf", fn1)
+        d.addCallback(lambda (rc, cap, err):
+            self.do_cli("ls", "--json", cap))
+        # This will fail if an immutable file is created instead of a
+        # mutable file.
+        d.addCallback(self._check_mdmf_json)
+        d.addCallback(lambda ignored:
+            self.do_cli("put", "--mutable-type=sdmf", fn1))
+        d.addCallback(lambda (rc, cap, err):
+            self.do_cli("ls", "--json", cap))
+        d.addCallback(self._check_sdmf_json)
+        return d
+
     def test_put_to_mdmf_cap(self):
         self.basedir = "cli/Put/put_to_mdmf_cap"
         self.set_up_grid()
@@ -3286,29 +3308,24 @@ class Mkdir(GridTestMixin, CLITestMixin, unittest.TestCase):
             self.failUnlessReallyEqual(err, "")
             self.failUnlessIn(st, out)
             return out
-        def _stash_dircap(cap):
-            self._dircap = cap
-            u = uri.from_string(cap)
-            fn_uri = u.get_filenode_cap()
-            self._filecap = fn_uri.to_string()
-        d.addCallback(_check, "URI:DIR2")
-        d.addCallback(_stash_dircap)
-        d.addCallback(lambda ignored:
-            self.do_cli("ls", "--json", "tahoe:foo"))
-        d.addCallback(_check, "URI:DIR2")
-        d.addCallback(lambda ignored:
-            self.do_cli("ls", "--json", self._filecap))
-        d.addCallback(_check, '"mutable-type": "sdmf"')
-        d.addCallback(lambda ignored:
-            self.do_cli("mkdir", "--mutable-type=mdmf", "tahoe:bar"))
-        d.addCallback(_check, "URI:DIR2-MDMF")
-        d.addCallback(_stash_dircap)
-        d.addCallback(lambda ignored:
-            self.do_cli("ls", "--json", "tahoe:bar"))
-        d.addCallback(_check, "URI:DIR2-MDMF")
-        d.addCallback(lambda ignored:
-            self.do_cli("ls", "--json", self._filecap))
-        d.addCallback(_check, '"mutable-type": "mdmf"')
+        def _mkdir(ign, mutable_type, uri_prefix, dirname):
+            d2 = self.do_cli("mkdir", "--mutable-type="+mutable_type, dirname)
+            d2.addCallback(_check, uri_prefix)
+            def _stash_filecap(cap):
+                u = uri.from_string(cap)
+                fn_uri = u.get_filenode_cap()
+                self._filecap = fn_uri.to_string()
+            d2.addCallback(_stash_filecap)
+            d2.addCallback(lambda ign: self.do_cli("ls", "--json", dirname))
+            d2.addCallback(_check, uri_prefix)
+            d2.addCallback(lambda ign: self.do_cli("ls", "--json", self._filecap))
+            d2.addCallback(_check, '"mutable-type": "%s"' % (mutable_type.lower(),))
+            return d2
+
+        d.addCallback(_mkdir, "sdmf", "URI:DIR2", "tahoe:foo")
+        d.addCallback(_mkdir, "SDMF", "URI:DIR2", "tahoe:foo2")
+        d.addCallback(_mkdir, "mdmf", "URI:DIR2-MDMF", "tahoe:bar")
+        d.addCallback(_mkdir, "MDMF", "URI:DIR2-MDMF", "tahoe:bar2")
         return d
 
     def test_mkdir_mutable_type_unlinked(self):