diff --git a/src/allmydata/test/test_mutable.py b/src/allmydata/test/test_mutable.py index e6eea1e..c20c0cc 100644 --- a/src/allmydata/test/test_mutable.py +++ b/src/allmydata/test/test_mutable.py @@ -3577,3 +3577,26 @@ class Interoperability(GridTestMixin, unittest.TestCase, testutil.ShouldFailMixi d = n.download_best_version() d.addCallback(self.failUnlessEqual, self.sdmf_old_contents) return d + +class DifferentEncoding(unittest.TestCase): + def setUp(self): + self._storage = s = FakeStorage() + self.nodemaker = make_nodemaker(s) + + def test_new_encoding(self): + # create a file with 3-of-20, then modify it with a client configured + # to do 3-of-10. I saw a failure here. + self.nodemaker.default_encoding_parameters["n"] = 20 + d = self.nodemaker.create_mutable_file("old contents") + def _created(n): + filecap = n.get_cap().to_string() + del n # we want a new object, not the cached one + self.nodemaker.default_encoding_parameters["n"] = 10 + n2 = self.nodemaker.create_from_cap(filecap) + return n2 + d.addCallback(_created) + def modifier(old_contents, servermap, first_time): + return "new contents" + d.addCallback(lambda n: n.modify(modifier)) + return d +