MountStorage: Improve mounting asserts
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Mon, 8 Aug 2011 19:51:11 +0000 (21:51 +0200)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Mon, 8 Aug 2011 19:51:11 +0000 (21:51 +0200)
The asserts now differentiate between mounting on the same
path and mounting over a shorter path.

mediagoblin/storage.py

index bbf1c034cd157c395eae39b54bd182e6074ab4ec..88c748cecf532cb8873fd4651a29838738d83d6d 100644 (file)
@@ -313,13 +313,16 @@ class MountStorage(StorageInterface):
 
         print "Mounting:", repr(new_ent)
         already, rem_1, table, rem_2 = self._resolve_to_backend(new_ent, True)
-        print "===", repr(already), repr(rem_1), repr(rem_2)
+        print "===", repr(already), repr(rem_1), repr(rem_2), len(table)
+
+        assert (len(rem_2) > 0) or (None not in table), \
+            "That path is already mounted"
+        assert (len(rem_2) > 0) or (len(table)==0), \
+            "A longer path is already mounted here"
 
-        assert (already is None) or (len(rem_2) > 0), "Already mounted"
         for part in rem_2:
             table[part] = {}
             table = table[part]
-        assert not table.has_key(None), "Huh? Already mounted?!"
         table[None] = backend
 
     def _resolve_to_backend(self, filepath, extra_info = False):