From: Brian Warner <warner@lothar.com>
Date: Thu, 8 Nov 2007 11:31:00 +0000 (-0700)
Subject: mutable: add basic test coverage of new-dirnodes-using-mutable-files
X-Git-Tag: allmydata-tahoe-0.7.0~242
X-Git-Url: https://git.rkrishnan.org/components/?a=commitdiff_plain;h=2eaa4195cf555e4f88cd691ae2488bea2aa9f3c9;p=tahoe-lafs%2Ftahoe-lafs.git

mutable: add basic test coverage of new-dirnodes-using-mutable-files
---

diff --git a/src/allmydata/mutable.py b/src/allmydata/mutable.py
index 89422e9d..20b0429a 100644
--- a/src/allmydata/mutable.py
+++ b/src/allmydata/mutable.py
@@ -1264,6 +1264,9 @@ class MutableFileNode:
 
     def is_mutable(self):
         return self._uri.is_mutable()
+    def is_readonly(self):
+        # but maybe not you
+        return self._uri.is_readonly()
 
     def __hash__(self):
         return hash((self.__class__, self.uri))
diff --git a/src/allmydata/test/test_system.py b/src/allmydata/test/test_system.py
index 6c309d11..26161893 100644
--- a/src/allmydata/test/test_system.py
+++ b/src/allmydata/test/test_system.py
@@ -378,8 +378,26 @@ class SystemTest(testutil.SignalMixin, unittest.TestCase):
         def _check_download_5(res):
             log.msg("finished replace2")
             self.failUnlessEqual(res, NEWERDATA)
+            # make sure we can create empty files, this usually screws up the
+            # segsize math
+            d1 = self.clients[2].create_mutable_file("")
+            d1.addCallback(lambda newnode: newnode.download_to_data())
+            d1.addCallback(lambda res: self.failUnlessEqual("", res))
+            return d1
         d.addCallback(_check_download_5)
 
+        d.addCallback(lambda res: self.clients[0].create_empty_dirnode())
+        def _created_dirnode(dnode):
+            d1 = dnode.list()
+            d1.addCallback(lambda children: self.failUnlessEqual(children, {}))
+            d1.addCallback(lambda res: dnode.has_child("edgar"))
+            d1.addCallback(lambda answer: self.failUnlessEqual(answer, False))
+            d1.addCallback(lambda res: dnode.set_node("see recursive", dnode))
+            d1.addCallback(lambda res: dnode.has_child("see recursive"))
+            d1.addCallback(lambda answer: self.failUnlessEqual(answer, True))
+            return d1
+        d.addCallback(_created_dirnode)
+
         return d
 
     def flip_bit(self, good):