# no-check-code -- see T24862348 import os import sys import test_hgsubversion_util from hgext.hgsubversion import svnwrap from mercurial import hg def _do_case(self, name, layout): subdir = test_hgsubversion_util.subdir.get(name, "") config = {} u = test_hgsubversion_util.testui() for branch, path in test_hgsubversion_util.custom.get(name, {}).iteritems(): config["hgsubversionbranch.%s" % branch] = path u.setconfig("hgsubversionbranch", branch, path) repo, repo_path = self.load_and_fetch( name, subdir=subdir, layout=layout, config=config ) assert ( test_hgsubversion_util.repolen(self.repo) > 0 ), "Repo had no changes, maybe you need to add a subdir entry in test_hgsubversion_util?" wc2_path = self.wc_path + "_stupid" checkout_path = repo_path if subdir: checkout_path += "/" + subdir u.setconfig("hgsubversion", "stupid", "1") u.setconfig("hgsubversion", "layout", layout) cp = test_hgsubversion_util.fileurl(checkout_path) test_hgsubversion_util.hgclone(u, cp, wc2_path, update=False) if layout == "single": self.assertEqual(len(self.repo.heads()), 1) self.repo2 = hg.repository(test_hgsubversion_util.testui(), wc2_path) self.assertEqual(self.repo.heads(), self.repo2.heads()) def buildmethod(case, name, layout): m = lambda self: self._do_case(case, layout) m.__name__ = name m.__doc__ = "Test stupid produces same as real on %s. (%s)" % (case, layout) return m if svnwrap.subversion_version < (1, 9, 0): attrs = {"_do_case": _do_case} for case in ( f for f in os.listdir(test_hgsubversion_util.FIXTURES) if f.endswith(".svndump") ): if case == "corrupt.svndump": continue name = "test_" + case[: -len(".svndump")].replace("-", "_") # Automatic layout branchtag collision exposes a minor defect # here, but since it isn't a regression we suppress the test case. if case != "branchtagcollision.svndump": attrs[name] = buildmethod(case, name, "auto") attrs[name + "_single"] = buildmethod(case, name + "_single", "single") if case in test_hgsubversion_util.custom: attrs[name + "_custom"] = buildmethod(case, name + "_custom", "custom") StupidPullTests = type("StupidPullTests", (test_hgsubversion_util.TestBase,), attrs) if __name__ == "__main__": import silenttestrunner silenttestrunner.main(__name__)