diff tests/test_single_dir_clone.py @ 499:1fd3cfa47c5e

Support for single-directory clones.
author Augie Fackler <durin42@gmail.com>
date Fri, 16 Oct 2009 23:33:41 -0400
parents
children 5ddc212dbc56
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/tests/test_single_dir_clone.py
@@ -0,0 +1,72 @@
+import shutil
+
+import test_util
+
+
+class TestSingleDir(test_util.TestBase):
+    def test_clone_single_dir_simple(self):
+        repo = self._load_fixture_and_fetch('branch_from_tag.svndump',
+                                            stupid=False,
+                                            layout='single',
+                                            subdir='')
+        self.assertEqual(repo.branchtags().keys(), ['default'])
+        self.assertEqual(repo['tip'].manifest().keys(),
+                         ['trunk/beta',
+                          'tags/copied_tag/alpha',
+                          'trunk/alpha',
+                          'tags/copied_tag/beta',
+                          'branches/branch_from_tag/alpha',
+                          'tags/tag_r3/alpha',
+                          'tags/tag_r3/beta',
+                          'branches/branch_from_tag/beta'])
+
+    def test_auto_detect_single(self):
+        repo = self._load_fixture_and_fetch('branch_from_tag.svndump',
+                                            stupid=False,
+                                            layout='auto')
+        self.assertEqual(repo.branchtags().keys(), ['default',
+                                                    'branch_from_tag'])
+        oldmanifest = test_util.filtermanifest(repo['default'].manifest().keys())
+        # remove standard layout
+        shutil.rmtree(self.wc_path)
+        # try again with subdir to get single dir clone
+        repo = self._load_fixture_and_fetch('branch_from_tag.svndump',
+                                            stupid=False,
+                                            layout='auto',
+                                            subdir='trunk')
+        self.assertEqual(repo.branchtags().keys(), ['default', ])
+        self.assertEqual(repo['default'].manifest().keys(), oldmanifest)
+
+    def test_externals_single(self):
+        repo = self._load_fixture_and_fetch('externals.svndump',
+                                            stupid=False,
+                                            layout='single')
+        for rev in repo:
+            assert '.hgsvnexternals' not in repo[rev].manifest()
+        return # TODO enable test when externals in single are fixed
+        expect = """[.]
+ -r2 ^/externals/project2@2 deps/project2
+[subdir]
+ ^/externals/project1 deps/project1
+[subdir2]
+ ^/externals/project1 deps/project1
+"""
+        test = 2
+        self.assertEqual(self.repo[test]['.hgsvnexternals'].data(), expect)
+
+    def test_externals_single_whole_repo(self):
+        # This is the test which demonstrates the brokenness of externals
+        return # TODO enable test when externals in single are fixed
+        repo = self._load_fixture_and_fetch('externals.svndump',
+                                            stupid=False,
+                                            layout='single',
+                                            subdir='')
+        for rev in repo:
+            rc = repo[rev]
+            if '.hgsvnexternals' in rc:
+                extdata = rc['.hgsvnexternals'].data()
+                assert '[.]' not in extdata
+                print extdata
+        expect = '' # Not honestly sure what this should be...
+        test = 4
+        self.assertEqual(self.repo[test]['.hgsvnexternals'].data(), expect)