Fixed several DC/split related bugs. No autocopy of DC for now.
[redakcja.git] / lib / wlrepo / tests / test_mercurial.py
index a4e1cfb..6997826 100644 (file)
@@ -29,33 +29,33 @@ class testBasicLibrary(object):
             shutil.rmtree(self.path, True)
         pass
    
-    def testOpening(self):
+    def test_opening(self):
         library = MercurialLibrary(self.path + '/cleanrepo')
 
-    def testMainCabinet(self):
+    def test_main_cabinett(self):
         library = MercurialLibrary(self.path + '/cleanrepo')
 
         mcab = library.main_cabinet
-        assert_equal(mcab.maindoc_name(), '')
+        assert_equal(mcab.maindoc_name, '')
 
         # @type mcab MercurialCabinet
         doclist = mcab.documents()
         assert_equal( list(doclist), ['valid_file'])
 
 
-    def testReadDocument(self):
+    def test_read_document(self):
         library = MercurialLibrary(self.path + '/testrepoI')
         doc = library.main_cabinet.retrieve('valid_file')
         
         assert_equal(doc.read().strip(), 'Ala ma kota')
 
-    def testReadUTF8Document(self):
+    def test_read_UTF8_document(self):
         library = MercurialLibrary(self.path + '/testrepoI')
         doc = library.main_cabinet.retrieve('polish_file')
 
         assert_equal(doc.read().strip(), u'Gąska!'.encode('utf-8'))
 
-    def testWriteDocument(self):
+    def test_write_document(self):
         library = MercurialLibrary(self.path + '/testrepoI')
         doc = library.main_cabinet.retrieve('valid_file')
 
@@ -66,26 +66,164 @@ class testBasicLibrary(object):
         
         assert_equal(doc.read(), STRING)
 
-    def testCreateDocument(self):
+    def test_create_document(self):
         repopath = os.path.join(self.path, 'testrepoI')
 
         library = MercurialLibrary(repopath)
-        doc = library.main_cabinet.create("another_file")
-        doc.write("Some text")
+        doc = library.main_cabinet.create("another_file", "Some text")
         assert_equal( doc.read(), "Some text")
         assert_true( os.path.isfile( os.path.join(repopath, "pub_another_file.xml")) )
         
-    def testSwitchBranch(self):
+    def test_switch_branch(self):
         library = MercurialLibrary(self.path + '/testrepoII')
 
         tester_cab = library.cabinet("valid_file", "tester", create=False)
         assert_equal( list(tester_cab.documents()), ['valid_file'])
 
     @raises(wlrepo.CabinetNotFound)
-    def testNoBranch(self):
+    def test_branch_not_found(self):
         library = MercurialLibrary(self.path + '/testrepoII')
         tester_cab = library.cabinet("ugh", "tester", create=False)
 
+    def test_no_branches(self):
+        library = MercurialLibrary(self.path + '/testrepoII')
+        n4 = library.shelf(4)
+        n3 = library.shelf(3)
+        n2 = library.shelf(2)
+        n1 = library.shelf(1)
+        n0 = library.shelf(0)
+
+        assert_true( n3.parentof(n4) )
+        assert_false( n4.parentof(n3) )
+        assert_true( n0.parentof(n1) )
+        assert_false( n1.parentof(n0) )
+        assert_false( n0.parentof(n4) )
+
+    # def test_ancestor_of_simple(self):
+        assert_true( n3.ancestorof(n4) )
+        assert_true( n2.ancestorof(n4) )
+        assert_true( n1.ancestorof(n4) )
+        assert_true( n0.ancestorof(n4) )
+
+        assert_true( n2.ancestorof(n3) )
+        assert_true( n1.ancestorof(n3) )
+        assert_true( n0.ancestorof(n3) )
+
+        assert_false( n4.ancestorof(n4) )
+        assert_false( n4.ancestorof(n3) )
+        assert_false( n3.ancestorof(n2) )
+        assert_false( n3.ancestorof(n1) )
+        assert_false( n3.ancestorof(n0) )
+
+    # def test_common_ancestor_simple(self):
+        assert_true( n3.has_common_ancestor(n4) )
+        assert_true( n3.has_common_ancestor(n3) )
+        assert_true( n3.has_common_ancestor(n3) )
+
+
+    def test_once_branched(self):
+        library = MercurialLibrary(self.path + '/test3')
+
+        n7 = library.shelf(7)
+        n6 = library.shelf(6)
+        n5 = library.shelf(5)
+        n4 = library.shelf(4)
+        n3 = library.shelf(3)
+        n2 = library.shelf(2)
+
+        assert_true( n2.parentof(n3) )
+        assert_false( n3.parentof(n2) )
+
+        assert_true( n2.parentof(n5) )
+        assert_false( n5.parentof(n2) )
+
+        assert_false( n2.parentof(n4) )
+        assert_false( n2.parentof(n6) )
+        assert_false( n3.parentof(n5) )
+        assert_false( n5.parentof(n3) )
+
+    # def test_ancestorof_branched(self):
+        assert_true( n2.ancestorof(n7) )
+        assert_false( n7.ancestorof(n2) )
+        assert_true( n2.ancestorof(n6) )
+        assert_false( n6.ancestorof(n2) )
+        assert_true( n2.ancestorof(n5) )
+        assert_false( n5.ancestorof(n2) )
+
+        assert_false( n3.ancestorof(n5) )
+        assert_false( n5.ancestorof(n3) )
+        assert_false( n4.ancestorof(n5) )
+        assert_false( n5.ancestorof(n4) )
+        assert_false( n3.ancestorof(n7) )
+        assert_false( n7.ancestorof(n3) )
+        assert_false( n4.ancestorof(n6) )
+        assert_false( n6.ancestorof(n4) )
+
+    # def test_common_ancestor_branched(self):
+        assert_true( n2.has_common_ancestor(n4) )
+        assert_true( n2.has_common_ancestor(n7) )
+        assert_true( n2.has_common_ancestor(n6) )
+
+        # cause it's not in the right branch
+        assert_false( n5.has_common_ancestor(n3) )
+        assert_false( n7.has_common_ancestor(n4) )
+
+    def test_after_merge(self):
+        library = MercurialLibrary(self.path + '/test4')
+        n8 = library.shelf(8)
+        n7 = library.shelf(7)
+        n6 = library.shelf(6)
+
+        assert_true( n7.parentof(n8) )
+        assert_false( n8.parentof(n7) )
+        
+        assert_true( n7.ancestorof(n8) )
+        assert_true( n6.ancestorof(n8) )
+        
+
+        assert_true( n7.has_common_ancestor(n8) )
+        # cause it's not in the right branch
+        assert_false( n8.has_common_ancestor(n7) )
+
+
+    def test_after_merge_and_local_commit(self):
+        library = MercurialLibrary(self.path + '/test5b')
+        n9 = library.shelf(9)
+        n8 = library.shelf(8)
+        n7 = library.shelf(7)
+        n6 = library.shelf(6)
+
+        assert_true( n7.parentof(n8) )
+        assert_false( n8.parentof(n7) )
+
+        assert_true( n9.has_common_ancestor(n8) )
+        # cause it's not in the right branch
+        assert_false( n8.has_common_ancestor(n9) )
+
+
+    def test_merge_personal_to_default(self):
+        library = MercurialLibrary(self.path + '/test3')
+
+        main = library.shelf(2)
+        local = library.shelf(7)
+
+        document = library.document("ala", "admin")
+        shared = document.shared()
+        print document, shared
+
+        document.share("Here is my copy!")
+
+        assert_equal( document.shelf(), local) # local didn't change
+
+        
+        new_main = shared.shelf()
+        assert_not_equal( new_main, main) # main has new revision
+
+        # check for parents
+        assert_true( main.parentof(new_main) )
+        assert_true( local.parentof(new_main) )
+        
+        
 
     def testCreateBranch(self):
         repopath = os.path.join(self.path, 'testrepoII')
@@ -96,4 +234,4 @@ class testBasicLibrary(object):
 
         
 
-        
\ No newline at end of file
+