def test_lookup_revision_id_overridden_invalid_dup(self): self.make_checkout(self.repos_url, 'dc') self.build_tree({'dc/bloe': None}) self.client_add("dc/bloe") self.client_set_prop("dc", SVN_PROP_BZR_REVISION_ID + "v3-none", "corrupt-entry\n") self.client_commit("dc", "foobar") self.build_tree({'dc/bla': None}) self.client_add("dc/bla") self.client_set_prop("dc", SVN_PROP_BZR_REVISION_ID + "v3-none", "corrupt-entry\n2 corrupt-entry\n") self.client_commit("dc", "foobar") repository = Repository.open(self.repos_url) mapping = repository.get_mapping() self.assertEqual(((repository.uuid, u"", 2), mapping), repository.lookup_bzr_revision_id( mapping.revision_id_foreign_to_bzr( (repository.uuid, u"", 2)))[:2]) self.assertEqual(((repository.uuid, u"", 1), mapping), repository.lookup_bzr_revision_id( mapping.revision_id_foreign_to_bzr( (repository.uuid, u"", 1)))[:2]) self.assertEqual( ((repository.uuid, u"", 2), mapping), repository.lookup_bzr_revision_id("corrupt-entry")[:2])
def test_simplemove(self): repos_url = self.make_svn_repository('d') dc = self.get_commit_editor(repos_url) dc.add_file("foo").modify("data") dc.close() dc = self.get_commit_editor(repos_url) dc.add_file("bar", "foo", 1) dc.delete("foo") dc.close() dc = self.get_commit_editor(repos_url) dc.open_file("bar").modify("data2") dc.close() repository = Repository.open(repos_url) repository.set_layout(RootLayout()) mapping = repository.get_mapping() tree1 = repository.revision_tree( repository.generate_revision_id(1, u"", mapping)) tree2 = repository.revision_tree( repository.generate_revision_id(2, u"", mapping)) self.assertNotEqual(None, tree1.path2id("foo")) self.assertIs(None, tree2.path2id("foo")) self.assertNotEqual(None, tree2.path2id("bar")) self.assertNotEqual(tree1.path2id("foo"), tree2.path2id("blie")) self.assertNotEqual(tree2.path2id("bar"), tree2.path2id("blie"))
def testlhs_revision_parent_none(self): repos_url = self.make_svn_repository('d') repos = Repository.open(repos_url) repos.set_layout(RootLayout()) revmeta0 = repos._revmeta_provider.get_revision("", 0) self.assertEquals( NULL_REVISION, revmeta0.get_lhs_parent_revid(repos.get_mapping(), None))
def test_is_shared(self): with self.get_commit_editor(self.repos_url) as dc: with dc.add_dir("foo") as foo: with foo.add_file("foo/bla") as f: f.modify(b"data") repository = Repository.open(self.repos_url) self.assertFalse(repository.is_shared())
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")))
def test_set_branching_scheme_property(self): self.make_checkout(self.repos_url, 'dc') self.client_set_prop("dc", SVN_PROP_BZR_BRANCHING_SCHEME, "trunk\nbranches/*\nbranches/tmp/*") self.client_commit("dc", "set scheme") repository = Repository.open(self.repos_url) self.assertEquals(ListBranchingScheme(["trunk", "branches/*", "branches/tmp/*"]).branch_list, repository.get_mapping().scheme.branch_list)
def test_is_shared(self): dc = self.get_commit_editor(self.repos_url) foo = dc.add_dir("foo") bla = foo.add_file("foo/bla").modify("data") dc.close() repository = Repository.open(self.repos_url) self.assertFalse(repository.is_shared())
def test_shared_import_rootlayout_empty(self): dir = ControlDir.create("e") dir.create_repository(shared=True) convert_repository(Repository.open(self.repos_url), "e", RootLayout(), create_shared_repo=True)
def test_repr(self): with self.get_commit_editor(self.repos_url) as dc: with dc.add_file("foo") as f: f.modify(b"data") repos = Repository.open(self.repos_url) self.assertEqual("SvnRepository('%s/')" % self.repos_url, repos.__repr__())
def test_repr(self): dc = self.get_commit_editor(self.repos_url) dc.add_file("foo").modify("data") dc.close() repos = Repository.open(self.repos_url) self.assertEqual("SvnRepository('%s/')" % self.repos_url, repos.__repr__())
def test_set_property_scheme(self): self.make_checkout(self.repos_url, 'dc') repos = Repository.open(self.repos_url) set_property_scheme(repos, ListBranchingScheme(["bla/*"])) self.client_update("dc") self.assertEquals("bla/*\n", self.client_get_prop("dc", SVN_PROP_BZR_BRANCHING_SCHEME)) self.assertEquals("Updating branching scheme for Bazaar.", self.client_log(self.repos_url, 1, 1)[1][3])
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"))
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"))
def test_change_revprops_disallowed(self): repos_url = self.make_repository("d", allow_revprop_changes=False) dc = self.get_commit_editor(repos_url) dc.add_file("foo.txt").modify() dc.close() repository = Repository.open(repos_url) self.assertRaises(RevpropChangeFailed, lambda: set_svn_revprops(repository, 1, {"svn:author": "Somebody", "svn:date": time_to_cstring(1000000*473385600)}))
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())
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)
def test_generate_revision_id(self): repos_url = self.make_client('d', 'dc') self.build_tree({'dc/bla/bloe': None}) self.client_add("dc/bla") self.client_commit("dc", "bla") repository = Repository.open(repos_url) mapping = repository.get_mapping() self.assertEqual( mapping.revision_id_foreign_to_bzr( (repository.uuid, "bla/bloe", 1)), repository.generate_revision_id(1, "bla/bloe", mapping))
def test_set_signature(self): repos_url = self.make_svn_repository("a") repos = Repository.open(repos_url) cb = self.get_commit_editor(repos_url) cb.add_file("foo").modify("bar") cb.close() revid = repos.get_mapping().revision_id_foreign_to_bzr( (repos.uuid, "", 1)) repos.add_signature_text(revid, "TEXT") self.assertTrue(repos.has_signature_for_revision_id(revid)) self.assertEquals(repos.get_signature_text(revid), "TEXT")
def test_lookup_revision_id_overridden_not_found(self): """Make sure a revision id that is looked up but doesn't exist doesn't accidently end up in the revid cache.""" self.make_checkout(self.repos_url, 'dc') self.build_tree({'dc/bloe': None}) self.client_add("dc/bloe") self.client_set_prop("dc", SVN_PROP_BZR_REVISION_ID+"v3-none", "2 myid\n") self.client_commit("dc", "foobar") repository = Repository.open(self.repos_url) self.assertRaises(NoSuchRevision, repository.lookup_bzr_revision_id, "foobar")
def test_has_revision(self): repos_url = self.make_client('d', 'dc') repository = Repository.open(repos_url) self.build_tree({'dc/foo': b"data"}) self.client_add("dc/foo") self.client_commit("dc", "My Message") self.assertTrue( repository.has_revision( repository.generate_revision_id(1, "", repository.get_mapping()))) self.assertFalse(repository.has_revision("some-other-revision"))
def test_get_revision_zero(self): repos_url = self.make_client('d', 'dc') repository = Repository.open(repos_url) mapping = repository.get_mapping() rev = repository.get_revision( repository.generate_revision_id(0, "", mapping)) self.assertEqual(repository.generate_revision_id(0, "", mapping), rev.revision_id) self.assertEqual("", rev.committer) self.assertEqual({}, rev.properties) self.assertEqual(0, rev.timezone)
def test_lookup_revision_id_overridden(self): dc = self.get_commit_editor(self.repos_url) dc.add_dir("bloe") dc.change_prop(SVN_PROP_BZR_REVISION_ID+"v3-none", "2 myid\n") dc.close() repository = Repository.open(self.repos_url) mapping = repository.get_mapping() self.assertEqual(((repository.uuid, u"", 1), mapping), repository.lookup_bzr_revision_id( mapping.revision_id_foreign_to_bzr((repository.uuid, u"", 1)))[:2]) self.assertEqual(((repository.uuid, u"", 1), mapping), repository.lookup_bzr_revision_id("myid")[:2])
def test_generate_revision_id_forced_revid(self): dc = self.get_commit_editor(self.repos_url) dc.change_prop(SVN_PROP_BZR_REVISION_ID + "v3-none", "2 someid\n") dc.close() repos = Repository.open(self.repos_url) mapping = repos.get_mapping() if not mapping.roundtripping: raise TestNotApplicable() revid = repos.generate_revision_id(1, u"", mapping) self.assertEquals("someid", revid)
def test_check(self): repos_url = self.make_client('d', 'dc') self.build_tree({'dc/foo': b"data"}) self.client_add("dc/foo") self.client_commit("dc", "My Message") repository = Repository.open(repos_url) mapping = repository.get_mapping() repository.check([ repository.generate_revision_id(0, "", mapping), repository.generate_revision_id(1, "", mapping) ])
def test_generate_revision_id_forced_revid_invalid(self): dc = self.get_commit_editor(self.repos_url) dc.change_prop(SVN_PROP_BZR_REVISION_ID + "v3-none", "corrupt-id\n") dc.close() repos = Repository.open(self.repos_url) mapping = repos.get_mapping() revid = repos.generate_revision_id(1, u"", mapping) self.assertEquals( mapping.revision_id_foreign_to_bzr((repos.uuid, u"", 1)), revid)
def testlhs_revision_parent_first(self): repos_url = self.make_client('d', 'dc') repos = Repository.open(repos_url) repos.set_layout(RootLayout()) self.build_tree({'dc/adir/afile': b"data"}) self.client_add("dc/adir") self.client_commit("dc", "Initial commit") mapping = repos.get_mapping() revmeta0 = repos._revmeta_provider.get_revision("", 0) revmeta1 = repos._revmeta_provider.get_revision("", 1) self.assertEquals(repos.generate_revision_id(0, "", mapping), revmeta1.get_lhs_parent_revid(mapping, revmeta0))
def test_revision_fileidmap(self): dc = self.get_commit_editor(self.repos_url) dc.add_file("foo").modify("data") dc.change_prop("bzr:revision-info", "") dc.change_prop("bzr:file-ids", "foo\tsomeid\n") dc.close() repository = Repository.open(self.repos_url) repository.set_layout(RootLayout()) tree = repository.revision_tree(Branch.open(self.repos_url).last_revision()) self.assertEqual("someid", tree.path2id("foo")) self.assertFalse(tree.has_id("1@%s::foo" % repository.uuid))
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))
def test_get_revision(self): repos_url = self.make_client('d', 'dc') repository = Repository.open(repos_url) self.assertRaises(NoSuchRevision, repository.get_revision, "nonexisting") self.build_tree({'dc/foo': b"data"}) self.client_add("dc/foo") self.client_commit("dc", "My Message") self.client_update("dc") self.build_tree({'dc/foo': b"data2"}) (num, date, author) = self.client_commit("dc", "Second Message") repository = Repository.open(repos_url) mapping = repository.get_mapping() rev = repository.get_revision( repository.generate_revision_id(2, "", mapping)) self.assertEqual((repository.generate_revision_id(1, "", mapping), ), rev.parent_ids) self.assertEqual(rev.revision_id, repository.generate_revision_id(2, "", mapping)) self.assertEqual(author, rev.committer) self.assertIsInstance(rev.properties, dict)
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")))