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())
def test_get_config(self): repos = Repository.open(self.repos_url) repos.get_config().set_user_option("foo", "Van Der Graaf Generator") repos = Repository.open(self.repos_url) self.assertEquals("Van Der Graaf Generator", repos.get_config().get_user_option("foo"))
def test_revision_history(self): repos_url = self.make_svn_repository('a') branch = Branch.open(repos_url) self.assertEqual((1, branch.generate_revision_id(0)), branch.last_revision_info()) dc = self.get_commit_editor(repos_url) dc.add_file("foo").modify() dc.change_prop(SVN_PROP_BZR_REVISION_ID+"v3-none", "42 mycommit\n") dc.close() branch = Branch.open(repos_url) repos = Repository.open(repos_url) mapping = repos.get_mapping() self.assertEqual((42, repos.generate_revision_id(1, u"", mapping)), branch.last_revision_info()) dc = self.get_commit_editor(repos_url) dc.open_file("foo").modify() dc.close() branch = Branch.open(repos_url) repos = Repository.open(repos_url) mapping = repos.get_mapping() self.assertEqual( (43, repos.generate_revision_id(2, u"", mapping)), branch.last_revision_info())
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())
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)
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())
def test_push_lossy(self): repos_url = self.make_repository('d') Repository.open(repos_url).store_layout(RootLayout()) dc = self.get_commit_editor(repos_url) dc.add_file("foo").modify() dc.close() self.run_bzr("branch %s dc" % repos_url) self.build_tree({"dc/foo": b"blaaaa"}) self.run_bzr("commit -m msg dc") self.run_bzr("push --lossy -d dc %s" % repos_url) self.assertEquals("", self.run_bzr("status dc")[0])
def test_not_branch_path(self): tree = self.make_svn_branch_and_tree('a', 'dc') self.build_tree({"dc/file": b"data"}) self.client_add("dc/file") self.client_commit("dc", "initial") self.client_update("dc") self.build_tree({"dc/dir": None}) self.client_add("dc/dir") config_set_scheme(Repository.open(tree.branch.repository.base), TrunkBranchingScheme(0), None, True) Repository.open(tree.branch.repository.base).store_layout(TrunkLayout(0)) self.assertRaises(NotBranchError, WorkingTree.open, "dc/foobar") self.assertRaises(NotBranchError, WorkingTree.open, "dc/dir") WorkingTree.open("dc")
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())))
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()))
def test_gather_stats(self): repos = Repository.open(self.repos_url) stats = repos.gather_stats() self.assertEquals(0, stats['revisions']) self.assertFalse(stats.has_key("firstrev")) self.assertFalse(stats.has_key("latestrev")) self.assertFalse(stats.has_key('committers'))
def test_seen_bzr_revprops(self): repos = Repository.open(self.repos_url) dc = self.get_commit_editor(self.repos_url) dc.add_dir("foo") dc.close() self.assertFalse(repos.seen_bzr_revprops())
def test_get_config_global_set(self): cfg = GlobalConfig() cfg.set_user_option("foo", "Still Life") repos = Repository.open(self.repos_url) self.assertEquals("Still Life", repos.get_config().get_user_option("foo"))
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)))
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)))
def test_fetch_complex_ids_files(self): dc = self.get_commit_editor(self.repos_url) dir = dc.add_dir("dir") dir.add_file("dir/adir").modify("contents") dc.change_prop("bzr:revision-info", "") dc.change_prop("bzr:file-ids", "dir\tbloe\ndir/adir\tbla\n") dc.close() dc = self.get_commit_editor(self.repos_url) dc.add_file("bdir", "dir/adir") dir = dc.open_dir("dir") dir.delete("dir/adir") dc.change_prop("bzr:revision-info", "properties: \n") dc.change_prop("bzr:file-ids", "bdir\tbla\n") dc.close() oldrepos = Repository.open(self.repos_url) dir = ControlDir.create("f") newrepos = dir.create_repository() oldrepos.copy_content_into(newrepos) mapping = oldrepos.get_mapping() tree = newrepos.revision_tree(oldrepos.generate_revision_id(2, u"", mapping)) self.assertEquals("bloe", tree.path2id("dir")) self.assertIs(None, tree.path2id("dir/adir")) self.assertEquals("bla", tree.path2id("bdir"))
def test_gather_stats(self): repos = Repository.open(self.repos_url) stats = repos.gather_stats() self.assertEquals(0, stats['revisions']) self.assertNotIn("firstrev", stats) self.assertNotIn("latestrev", stats) self.assertNotIn('committers', stats)
def test_generate_revision_id_zero(self): repos_url = self.make_client('d', 'dc') repository = Repository.open(repos_url) mapping = repository.get_mapping() self.assertEqual( mapping.revision_id_foreign_to_bzr((repository.uuid, "", 0)), repository.generate_revision_id(0, "", mapping))
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")
def test_get_revision_delta(self): repos_url = self.make_svn_repository('d') dc = self.get_commit_editor(repos_url) dc.add_file("foo").modify(b"data") dc.close() dc = self.get_commit_editor(repos_url) dc.open_file("foo").modify(b"data2") dc.close() r = Repository.open(repos_url) r.set_layout(RootLayout()) d1 = r.get_revision_delta( r.generate_revision_id(1, "", r.get_mapping())) self.assertEquals(None, d1.unchanged) self.assertEquals(1, len(d1.added)) self.assertEquals("foo", d1.added[0][0]) self.assertEquals(0, len(d1.modified)) self.assertEquals(0, len(d1.removed)) d2 = r.get_revision_delta( r.generate_revision_id(2, "", r.get_mapping())) self.assertEquals(None, d2.unchanged) self.assertEquals(0, len(d2.added)) self.assertEquals("foo", d2.modified[0][0]) self.assertEquals(0, len(d2.removed))
def test_has_revision_future(self): repos_url = self.make_client('d', 'dc') repository = Repository.open(repos_url) self.assertFalse( repository.has_revision( repository.get_mapping().revision_id_foreign_to_bzr( (repository.uuid, "", 5))))
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)))
def test_get_branch_invalid_revision(self): repos_url = self.make_svn_repository("a") repos = Repository.open(repos_url) repos.set_layout(RootLayout()) self.assertRaises( NoSuchRevision, list, repos._revmeta_provider.iter_reverse_branch_changes("/", 20, 0))
def test_checks_uuid(self): repos_url = self.make_svn_repository('d') dc = self.get_commit_editor(repos_url) dc.add_dir("bp") dc.close() mapping = mapping_registry.get_default()() ra = RemoteAccess(repos_url.encode("utf-8"), auth=Auth([get_username_provider()])) revnum = ra.get_latest_revnum() revprops = { SVN_REVPROP_BZR_REPOS_UUID: "otheruuid", "svn:log": "bla", SVN_REVPROP_BZR_ROOT: "bp", SVN_REVPROP_BZR_MAPPING_VERSION: mapping.name, SVN_REVPROP_BZR_BASE_REVISION: "therealbaserevid" } dc = TestCommitEditor(ra.get_commit_editor(revprops), ra.url, revnum) dc.open_dir("bp").add_file("bp/la").modify() dc.close() repos = Repository.open(repos_url) revmeta1 = repos._revmeta_provider.get_revision(u"bp", 1) revmeta2 = repos._revmeta_provider.get_revision(u"bp", 2) self.assertEquals( mapping.revision_id_foreign_to_bzr((repos.uuid, "bp", 1)), revmeta2.get_lhs_parent_revid(mapping, revmeta1))
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())
def test_follow_history_empty(self): repos_url = self.make_svn_repository("a") repos = Repository.open(repos_url) repos.set_layout(RootLayout()) self.assertEqual( set([repos.generate_revision_id(0, '', repos.get_mapping())]), set(repos.all_revision_ids(repos.get_layout())))
def test_lookup_revision_id_invalid_uuid(self): repos_url = self.make_client('d', 'dc') repository = Repository.open(repos_url) mapping = repository.get_mapping() self.assertRaises( NoSuchRevision, repository.lookup_bzr_revision_id, mapping.revision_id_foreign_to_bzr(("invaliduuid", "", 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))))
def test_dumpfile_open_empty(self): dumpfile = os.path.join(self.test_dir, "dumpfile") open(dumpfile, 'w').write("""SVN-fs-dump-format-version: 2 UUID: 6987ef2d-cd6b-461f-9991-6f1abef3bd59 Revision-number: 0 Prop-content-length: 56 Content-length: 56 K 8 svn:date V 27 2006-07-02T13:14:51.972532Z PROPS-END """) branch_path = os.path.join(self.test_dir, "f") repos = self.load_dumpfile(dumpfile, 'g') convert_repository(repos, branch_path, RootLayout(), remember_parent=False) branch = Repository.open(branch_path) self.assertEqual(len(branch.all_revision_ids()), 1) b = Branch.open(branch_path) self.assertEquals(1, b.revno()) self.assertEquals(None, b.get_parent())
def test_copy_contents_into(self): repos_url = self.make_client('d', 'dc') self.build_tree({'dc/foo/bla': b"data"}) self.client_add("dc/foo") self.client_commit("dc", "My Message") self.build_tree({ 'dc/foo/blo': b"data2", "dc/bar/foo": b"data3", 'dc/foo/bla': b"data" }) self.client_add("dc/foo/blo") self.client_add("dc/bar") self.client_commit("dc", "Second Message") repository = Repository.open(repos_url) repository.set_layout(RootLayout()) mapping = repository.get_mapping() to_controldir = ControlDir.create("e") to_repos = to_controldir.create_repository() repository.copy_content_into( to_repos, repository.generate_revision_id(2, "", mapping)) self.assertTrue( repository.has_revision( repository.generate_revision_id(2, "", mapping))) self.assertTrue( repository.has_revision( repository.generate_revision_id(1, "", mapping)))