コード例 #1
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
    def test_shared_import_continue_branch(self):
        oldrepos = Repository.open(self.repos_url)
        convert_repository(oldrepos,
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        mapping = oldrepos.get_mapping()

        dc = self.get_commit_editor()
        trunk = dc.open_dir("trunk")
        trunk.open_file("trunk/file").modify()
        dc.close()

        self.assertEqual(
            Repository.open(self.repos_url).generate_revision_id(
                2, u"trunk", mapping),
            Branch.open("e/trunk").last_revision())

        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        self.assertEqual(
            Repository.open(self.repos_url).generate_revision_id(
                3, u"trunk", mapping),
            Branch.open("e/trunk").last_revision())
コード例 #2
0
    def test_find_branches_between_moved_nobranch(self):
        repos_url = self.make_client("a", "dc")
        self.build_tree({
            'dc/tmp/nested/foobar': None,
            'dc/tmp/nested/branches/brancha': None,
            'dc/tmp/nested/branches/branchab': None,
            'dc/tmp/nested/branches/brancha/data': "data",
            "dc/tmp/nested/branches/branchab/data": "data"
        })
        self.client_add("dc/tmp")
        self.client_commit("dc", "My Message")
        self.client_copy("dc/tmp/nested", "dc/t2")
        self.client_commit("dc", "My Message 2")

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(1))

        self.assertEqual([("t2/branches/brancha", 2, True),
                          ("t2/branches/branchab", 2, True)],
                         list(
                             find_branches_between(repos._log,
                                                   repos.transport,
                                                   TrunkLayout(1),
                                                   to_revnum=2,
                                                   from_revnum=2)))
コード例 #3
0
    def test_find_branches_between_removed(self):
        repos_url = self.make_svn_repository("a")

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(0))

        dc = self.get_commit_editor(repos_url)
        trunk = dc.add_dir("trunk")
        trunk.add_file("trunk/foo").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        dc.delete("trunk")
        dc.close()

        self.assertEqual([("trunk", 1, True)],
                         list(
                             find_branches_between(repos._log,
                                                   repos.transport,
                                                   TrunkLayout(0),
                                                   from_revnum=2,
                                                   to_revnum=0)))
        self.assertEqual([("trunk", 1, True)],
                         list(
                             find_branches_between(repos._log,
                                                   repos.transport,
                                                   TrunkLayout(0),
                                                   from_revnum=1,
                                                   to_revnum=0)))
コード例 #4
0
class TrunkVariableLayoutTests(TestCase):

    def setUp(self):
        TestCase.setUp(self)
        self.layout = TrunkLayout(None)

    def test_is_trunk_branch(self):
        self.assertEquals(True, self.layout.is_branch(u"foo/bar/trunk"))
        self.assertEquals(True, self.layout.is_branch(u"trunk"))

    def test_is_foo_branch(self):
        self.assertEquals(False, self.layout.is_branch(u"foo"))

    def test_is_branch_parent_trunk(self):
        self.assertEquals(True, self.layout.is_branch_parent(u"foo/bar/trunk"))

    def test_is_branch_parent_lev2(self):
        self.assertEquals(True, self.layout.is_branch_parent(u"foo/bar"))

    def test_is_branch_parent_lev1(self):
        self.assertEquals(True, self.layout.is_branch_parent(u"foo"))

    def test_is_branch_parent_lev3(self):
        self.assertEquals(True, self.layout.is_branch_parent(u"foo/bar/blie"))

    def test_is_branch_parent_branches(self):
        self.assertEquals(True, self.layout.is_branch_parent(u"foo/bar/branches"))

    def test_is_branch_parent_tags(self):
        self.assertEquals(True, self.layout.is_branch_parent(u"bar/tags"))
        self.assertEquals(True, self.layout.is_branch_parent(u"foo/bar/tags"))
コード例 #5
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
 def test_shared_import_continue_with_wt(self):
     convert_repository(Repository.open(self.repos_url),
                        "e",
                        TrunkLayout(0),
                        working_trees=True)
     convert_repository(Repository.open(self.repos_url),
                        "e",
                        TrunkLayout(0),
                        working_trees=True)
コード例 #6
0
    def test_find_branches_between_trunk_empty(self):
        repos_url = self.make_svn_repository("a")

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(0))

        self.assertEqual([],
                         list(
                             find_branches_between(repos._log,
                                                   repos.transport,
                                                   TrunkLayout(0),
                                                   to_revnum=0,
                                                   from_revnum=0)))
コード例 #7
0
    def test_history_all(self):
        repos_url = self.make_svn_repository("a")

        dc = self.get_commit_editor(repos_url)
        trunk = dc.add_dir("trunk")
        trunk.add_file("trunk/file").modify(b"data")
        foo = dc.add_dir("foo")
        foo.add_file("foo/file").modify(b"data")
        dc.close()

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout())

        self.assertEqual(1, len(set(repos.all_revision_ids(TrunkLayout()))))
コード例 #8
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
    def test_fetch_filebranch(self):
        dc = self.get_commit_editor()
        bs = dc.open_dir("branches")
        bs.add_file("branches/somebranch").modify('data')
        dc.close()

        oldrepos = Repository.open(self.repos_url)
        convert_repository(oldrepos, "e", TrunkLayout(0))
        newrepos = Repository.open("e")
        oldrepos.set_layout(TrunkLayout(0))
        self.assertFalse(
            newrepos.has_revision(
                oldrepos.generate_revision_id(2, u"branches/somebranch",
                                              oldrepos.get_mapping())))
コード例 #9
0
    def test_branch_log_specific_ignore(self):
        repos_url = self.make_client("a", "dc")
        self.build_tree({'dc/branches': None})
        self.client_add("dc/branches")
        self.build_tree({
            'dc/branches/brancha': None,
            'dc/branches/branchab': None,
            'dc/branches/brancha/data': "data",
            "dc/branches/branchab/data": "data"
        })
        self.client_add("dc/branches/brancha")
        self.client_commit("dc", "My Message")

        self.client_add("dc/branches/branchab")
        self.client_commit("dc", "My Message2")

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(0))

        self.assertEqual(
            1,
            len(
                list(
                    repos._revmeta_provider.iter_reverse_branch_changes(
                        "branches/brancha", 2, 0))))
コード例 #10
0
    def test_all_revs(self):
        repos_url = self.make_svn_repository("a")

        dc = self.get_commit_editor(repos_url)
        trunk = dc.add_dir("trunk")
        trunk.add_file("trunk/file").modify(b"data")
        foo = dc.add_dir("foo")
        foo.add_file("foo/file").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        branches = dc.add_dir("branches")
        somebranch = branches.add_dir("branches/somebranch")
        somebranch.add_file("branches/somebranch/somefile").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        branches = dc.open_dir("branches")
        branches.delete("branches/somebranch")
        dc.close()

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(0))
        mapping = repos.get_mapping()
        self.assertEqual(
            set([
                repos.generate_revision_id(1, "trunk", mapping),
                repos.generate_revision_id(2, "branches/somebranch", mapping)
            ]), set(repos.all_revision_ids()))
コード例 #11
0
    def test_fetch_file_from_non_branch(self):
        repos_url = self.make_svn_repository('d')

        dc = self.get_commit_editor(repos_url)
        old_trunk = dc.add_dir("old-trunk")
        lib = old_trunk.add_dir("old-trunk/lib")
        lib.add_file("old-trunk/lib/file").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        trunk = dc.add_dir("trunk")
        lib = trunk.add_dir("trunk/lib")
        lib.add_file("trunk/lib/file", "old-trunk/lib/file")
        dc.close()

        oldrepos = Repository.open(repos_url)
        oldrepos.set_layout(TrunkLayout(0))
        dir = ControlDir.create("f")
        newrepos = dir.create_repository()
        oldrepos.copy_content_into(newrepos)

        mapping = oldrepos.get_mapping()
        branch = Branch.open("%s/trunk" % repos_url)
        self.assertEquals(branch.mapping, mapping)
        self.assertEqual(
            (1, oldrepos.generate_revision_id(2, "trunk", mapping)),
            branch.last_revision_info())
コード例 #12
0
    def test_mainline_revision_nested_deleted(self):
        repos_url = self.make_svn_repository('d')

        dc = self.get_commit_editor(repos_url)
        py = dc.add_dir("py")
        trunk = py.add_dir("py/trunk")
        adir = trunk.add_dir("py/trunk/adir")
        afile = adir.add_file("py/trunk/adir/file").modify(b"data")
        adir.add_dir("py/trunk/adir/stationary")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        dc.add_dir("de", "py")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        de = dc.open_dir("de")
        trunk = de.open_dir("de/trunk")
        trunk.delete("de/trunk/adir")
        dc.close()

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(1))
        mapping = repos.get_mapping()
        revmeta3 = repos._revmeta_provider.get_revision("de/trunk", 3)
        self.assertEquals(
            repos.generate_revision_id(1, "py/trunk", mapping),
            revmeta3.get_lhs_parent_revid(
                mapping, revmeta3.get_lhs_parent_revmeta(mapping)))
コード例 #13
0
    def test_copy(self):
        self.repos.set_layout(TrunkLayout(0))
        self.mapping = self.repos.get_mapping()

        dc = self.get_commit_editor(self.repos_url)
        dc.add_dir("trunk")
        dc.close()

        dc = self.get_commit_editor(self.repos_url)
        trunk = dc.open_dir("trunk")
        trunk.add_file("trunk/file").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(self.repos_url)
        trunk = dc.open_dir("trunk")
        trunk.add_file("trunk/bar", "trunk/file", 2)
        dc.close()

        self.assertEqual(
            {
                u"": (self.mapping.generate_file_id(
                    (self.repos.uuid, u"trunk", 1), u""),
                      self.repos.generate_revision_id(1, u"trunk",
                                                      self.mapping), None),
                u"bar":
                (self.mapping.generate_file_id(
                    (self.repos.uuid, u"trunk", 3), u"bar"),
                 self.repos.generate_revision_id(3, u"trunk", self.mapping),
                 (self.repos.uuid, u"trunk", 3)),
                u"file": (self.mapping.generate_file_id(
                    (self.repos.uuid, u"trunk", 2), u"file"),
                          self.repos.generate_revision_id(
                              2, u"trunk", self.mapping), None)
            }, self.get_map(u"trunk", 3, self.mapping))
コード例 #14
0
ファイル: test_fileids.py プロジェクト: jelmer/breezy-svn
    def test_change_updates(self):
        self.repos.set_layout(TrunkLayout(0))
        self.mapping = self.repos.get_mapping()

        dc = self.get_commit_editor(self.repos_url)
        dc.add_dir("trunk")
        dc.close()

        dc = self.get_commit_editor(self.repos_url)
        dc.open_dir("trunk").add_file("trunk/file").modify("data")
        dc.close()

        dc = self.get_commit_editor(self.repos_url)
        dc.open_dir("trunk").open_file("trunk/file").modify("otherdata")
        dc.close()

        self.assertEqual(
            {
                u"": (self.mapping.generate_file_id(
                    (self.repos.uuid, u"trunk", 1), u""),
                      self.repos.generate_revision_id(1, u"trunk",
                                                      self.mapping), None),
                u"file": (self.mapping.generate_file_id(
                    (self.repos.uuid, u"trunk", 2), u"file"),
                          self.repos.generate_revision_id(
                              3, u"trunk", self.mapping), None)
            }, self.get_map(u"trunk", 3, self.mapping))
コード例 #15
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
    def test_shared_import(self):
        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        self.assertTrue(Repository.open("e").is_shared())
コード例 #16
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
    def test_notshared_import(self):
        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=False)

        self.assertRaises(NotBranchError, Repository.open, "e")
コード例 #17
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
 def test_simple(self):
     convert_repository(Repository.open(self.repos_url),
                        os.path.join(self.test_dir, "e"), TrunkLayout(0))
     self.assertTrue(
         os.path.isdir(os.path.join(self.test_dir, "e", "trunk")))
     self.assertTrue(
         os.path.isdir(
             os.path.join(self.test_dir, "e", "branches", "abranch")))
コード例 #18
0
 def test_list_branches_trunk(self):
     repos_url = self.make_svn_repository("d")
     x = ControlDir.open(repos_url)
     x.open_repository().store_layout(TrunkLayout())
     b1 = x.create_branch("foo")
     b2 = x.create_branch("bar")
     self.assertEquals(set([b1.base, b2.base]),
                       set([b.base for b in x.list_branches()]))
コード例 #19
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
    def test_shared_import_remove_nokeep(self):
        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        dc = self.get_commit_editor()
        dc.delete("trunk")
        dc.close()

        self.assertTrue(os.path.exists("e/trunk"))

        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        self.assertFalse(os.path.exists("e/trunk"))
コード例 #20
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
 def test_convert_simple(self):
     oldrepos = Repository.open(self.repos_url)
     convert_repository(oldrepos,
                        "e",
                        TrunkLayout(1),
                        prefix=u"base",
                        create_shared_repo=True)
     self.assertTrue(os.path.exists("e/trunk"))
     self.assertTrue(os.path.exists("e/branches/abranch"))
     self.assertFalse(os.path.exists("e/base"))
コード例 #21
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
    def test_shared_import_continue_remove(self):
        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        dc = self.get_commit_editor()
        dc.delete("trunk")
        dc.close()

        dc = self.get_commit_editor()
        trunk = dc.add_dir("trunk")
        trunk.add_file("trunk/file").modify()
        dc.close()

        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)
コード例 #22
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
    def test_shared_import_continue(self):
        dir = ControlDir.create("e")
        dir.create_repository(shared=True)

        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        self.assertTrue(Repository.open("e").is_shared())
コード例 #23
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
 def test_sets_parent_urls(self):
     convert_repository(Repository.open(self.repos_url),
                        "e",
                        TrunkLayout(0),
                        all=False,
                        create_shared_repo=True)
     self.assertEquals(self.repos_url + "/trunk",
                       Branch.open("e/trunk").get_parent())
     self.assertEquals(self.repos_url + "/branches/abranch",
                       Branch.open("e/branches/abranch").get_parent())
コード例 #24
0
 def test_trunk_layout_movefrom_non_branch(self):
     browser = self.get_browser(None, 2, 0, TrunkLayout(),
             { 1: { u"old-trunk": ('A', None, -1, NODE_DIR)},
               2: { u"trunk": ('A', u"old-trunk", 1, NODE_DIR)}})
     rev1 = next(browser)
     self.assertEquals(('revision', FakeRevision(u'trunk',2)), rev1)
     rev2 = next(browser)
     self.assertEquals(('revision', FakeRevision(u'old-trunk',1)), rev2)
     self.assertTrue(rev1[1]._lhs_parent_known)
     self.assertTrue(rev2[1]._lhs_parent_known)
     self.assertRaises(StopIteration, next, browser)
コード例 #25
0
 def test_trunk_layout_simple(self):
     browser = self.get_browser(None, 2, 0, TrunkLayout(),
             { 1: { u"trunk": ('A', None, -1, NODE_DIR)},
               2: { u"trunk": ('M', None, -1, NODE_DIR)}})
     rev1 = browser.next()
     self.assertEquals(('revision', FakeRevision(u'trunk',2)), rev1)
     rev2 = browser.next()
     self.assertEquals(('revision', FakeRevision(u'trunk',1)), rev2)
     self.assertTrue(rev1[1]._lhs_parent_known)
     self.assertTrue(rev2[1]._lhs_parent_known)
     self.assertRaises(StopIteration, browser.next)
コード例 #26
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
    def test_shared_import_old_repos_fails(self):
        dir = ControlDir.create("e",
                                format=format_registry.make_controldir('knit'))
        dir.create_repository(shared=True)

        self.assertRaises(
            IncompatibleRepositories,
            lambda: convert_repository(Repository.open(self.repos_url),
                                       "e",
                                       TrunkLayout(0),
                                       create_shared_repo=True,
                                       working_trees=False))
コード例 #27
0
ファイル: test_convert.py プロジェクト: jelmer/breezy-svn
    def test_shared_import_without_wt(self):
        dir = ControlDir.create("e")
        dir.create_repository(shared=True)

        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True,
                           working_trees=False)

        self.assertFalse(
            os.path.isfile(os.path.join(self.test_dir, "e", "trunk", "file")))
コード例 #28
0
 def test_trunk_layout_copiedbranch(self):
     browser = self.get_browser(None, 2, 0, TrunkLayout(),
             {1: {u"trunk": ('A', None, -1, NODE_DIR)},
              2: {u"branches": ('A', None, -1, NODE_DIR),
                  u"branches/foo": ('A', u"trunk", 1, NODE_DIR)}})
     rev1 = next(browser)
     self.assertEquals(('revision', FakeRevision(u'branches/foo', 2)), rev1)
     rev2 = next(browser)
     self.assertEquals(('revision', FakeRevision(u'trunk', 1)), rev2)
     self.assertTrue(rev1[1]._lhs_parent_known)
     self.assertTrue(rev2[1]._lhs_parent_known)
     self.assertRaises(StopIteration, browser.next)
コード例 #29
0
 def test_trunk_layout_movefrom_oldbranch(self):
     browser = self.get_browser(None, 3, 0, TrunkLayout(),
             { 1: { u"old-trunk": ('A', None, -1, NODE_DIR)},
               2: { u"old-trunk": ('D', None, -1, NODE_DIR)},
               3: { u"trunk": ('A', u"old-trunk", 1, NODE_DIR)}})
     rev1 = browser.next()
     self.assertEquals(('revision', FakeRevision(u'trunk',3)), rev1)
     self.assertEquals(('delete', (u"old-trunk", 2)), browser.next())
     rev2 = browser.next()
     self.assertEquals(('revision', FakeRevision(u'old-trunk',1)), rev2)
     self.assertTrue(rev1[1]._lhs_parent_known)
     self.assertTrue(rev2[1]._lhs_parent_known)
     self.assertRaises(StopIteration, browser.next)
コード例 #30
0
    def test_follow_branch_switched_parents(self):
        repos_url = self.make_svn_repository('a')

        cb = self.get_commit_editor(repos_url)
        pykleur = cb.add_dir("pykleur")
        trunk = pykleur.add_dir("pykleur/trunk")
        nested = trunk.add_dir("pykleur/trunk/pykleur")
        cb.close()  #1

        cb = self.get_commit_editor(repos_url)
        pykleur = cb.open_dir("pykleur")
        trunk = pykleur.open_dir("pykleur/trunk")
        nested = trunk.open_dir("pykleur/trunk/pykleur")
        afile = nested.add_file("pykleur/trunk/pykleur/afile")
        afile.modify(b"contents")
        afile.close()
        cb.close()  #2

        cb = self.get_commit_editor(repos_url)
        cb.add_dir("pygments", "pykleur", 1)
        cb.delete("pykleur")
        cb.close()  #3

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(1))
        results = repos._revmeta_provider.iter_reverse_branch_changes(
            "pygments/trunk", 3, 0)

        # Results differ per Subversion version, yay
        # For <= 1.4:
        if ra.version()[1] <= 4:
            self.assertRevmetaLogEquals(
                [('pygments/trunk', {
                    'pygments': (u'A', 'pykleur', 1, NODE_DIR),
                    'pygments/trunk': (u'R', 'pykleur/trunk', 2, NODE_DIR),
                    'pykleur': (u'D', None, -1, NODE_DIR)
                }, 3),
                 ('pykleur/trunk', {
                     'pykleur/trunk/pykleur/afile': (u'A', None, -1, NODE_DIR)
                 }, 2),
                 ('pykleur/trunk', {
                     'pykleur': (u'A', None, -1, NODE_DIR),
                     'pykleur/trunk': (u'A', None, -1, NODE_DIR),
                     'pykleur/trunk/pykleur': (u'A', None, -1, NODE_DIR)
                 }, 1)], results)
        else:
            self.assertRevmetaLogEquals([('pykleur/trunk', {
                'pykleur': (u'A', None, -1, NODE_DIR),
                'pykleur/trunk': (u'A', None, -1, NODE_DIR),
                'pykleur/trunk/pykleur': (u'A', None, -1, NODE_DIR)
            }, 1)], results)