⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svnmerge_test.py

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 PY
📖 第 1 页 / 共 3 页
字号:
          ----                        -----------          /                           0           trunk/                     3            test1                     4            test2                     5            test3                     6            test4                     9            test5                     10           branches/                  1            testYYY-branch/           11 (renamed from testXXX-branch in 12)             test1                    4             test2                    5             test3                    6            test-branch/              13 (copied from trunk@6)             test1                    4             test2                    5             test3                    6           tags/                      2        """        self.cwd = os.getcwd()        test_path = get_test_path()        template_path = get_template_path()        self.template_path = template_path        self.test_path = test_path        self.template_repo_path = os.path.join(template_path, "repo")        self.template_repo_url = abspath_to_url(self.template_repo_path)        self.test_repo_path = os.path.join(test_path, "repo")        self.test_repo_url = abspath_to_url(self.test_repo_path)        if not os.path.isdir(template_path):            rmtree(template_path)            os.makedirs(template_path)            os.chdir(template_path)            self.multilaunch("""                svnadmin create --fs-type fsfs %(TEMPLATE_REPO_PATH)s                svn mkdir -m "create /branches" %(TEMPLATE_REPO_URL)s/branches                svn mkdir -m "create /tags" %(TEMPLATE_REPO_URL)s/tags                svn mkdir -m "create /trunk" %(TEMPLATE_REPO_URL)s/trunk                svn co %(TEMPLATE_REPO_URL)s/trunk trunk            """)            os.chdir("trunk")            open("test1", "w").write("test 1")            open("test2", "w").write("test 2")            open("test3", "w").write("test 3")            open("test4", "w").write("test 4")            open("test5", "w").write("test 5")            self.multilaunch("""                svn add test1                svn ci -m "add test1"                svn add test2                svn ci -m "add test2"                svn add test3                svn ci -m "add test3"                svn mkdir -m "create /foobar" %(TEMPLATE_REPO_URL)s/foobar                svn rm -m "remove /foobar" %(TEMPLATE_REPO_URL)s/foobar                svn add test4                svn ci -m "add test4"                svn add test5                svn ci -m "add test5"                svn cp -r6 -m "create branch" %(TEMPLATE_REPO_URL)s/trunk %(TEMPLATE_REPO_URL)s/branches/testXXX-branch                svn mv -m "rename branch" %(TEMPLATE_REPO_URL)s/branches/testXXX-branch %(TEMPLATE_REPO_URL)s/branches/testYYY-branch                svn cp -r6 -m "create branch" %(TEMPLATE_REPO_URL)s/trunk %(TEMPLATE_REPO_URL)s/branches/test-branch            """)            os.chdir("..")            self.launch("svn co %(TEMPLATE_REPO_URL)s/branches/test-branch")        os.chdir(self.cwd)        rmtree(self.test_path)        shutil.copytree(self.template_path, self.test_path)        os.chdir(self.test_path)        # Relocate the test working copies from using the template        # repository to the test repository so the template repository        # is not affected by commits.        self.launch("svn switch --relocate %(TEMPLATE_REPO_URL)s %(TEST_REPO_URL)s trunk test-branch")        os.chdir("test-branch")        # Always remove the template directory when the tests have        # completed.        atexit.register(lambda: rmtree(template_path))    def tearDown(self):        os.chdir(self.cwd)        rmtree(self.test_path)    def command_dict(self):        return dict(TEMPLATE_PATH=self.template_path,                    TEMPLATE_REPO_PATH=self.template_repo_path,                    TEMPLATE_REPO_URL=self.template_repo_url,                    TEST_PATH=self.test_path,                    TEST_REPO_PATH=self.test_repo_path,                    TEST_REPO_URL=self.test_repo_url)    def launch(self, cmd, *args, **kwargs):        cmd = cmd % self.command_dict()        return TestCase_SvnMerge.launch(self, cmd, *args, **kwargs)    def multilaunch(self, cmds):        for cmd in cmds.split("\n"):            cmd = cmd.strip()            svnmerge.launch(cmd % self.command_dict())    def revert(self):        self.multilaunch("svn revert -R .")    def getproperty(self):        out = svnmerge.launch("svn pg %s ." % svnmerge.opts["prop"])        if len(out) == 0:            return None        else:            return out[0].strip()    def getBlockedProperty(self):        out = svnmerge.launch("svn pg %s ." % svnmerge.opts["block-prop"])        if len(out) == 0:            return None        else:            return out[0].strip()    def testNoWc(self):        os.mkdir("foo")        os.chdir("foo")        self.svnmerge("init", error=True, match=r"working dir")        self.svnmerge("avail", error=True, match=r"working dir")        self.svnmerge("integrated", error=True, match=r"working dir")        self.svnmerge("merge", error=True, match=r"working dir")        self.svnmerge("block", error=True, match=r"working dir")        self.svnmerge("unblock", error=True, match=r"working dir")    def testCheckNoIntegrationInfo(self):        self.svnmerge("avail", error=True, match=r"no integration")        self.svnmerge("integrated", error=True, match=r"no integration")        self.svnmerge("merge", error=True, match=r"no integration")        self.svnmerge("block", error=True, match=r"no integration")        self.svnmerge("unblock", error=True, match=r"no integration")    def testSelfReferentialInit(self):        self.svnmerge2(["init", self.test_repo_url + "/branches/test-branch"],                       error=True, match=r"cannot init integration source")    def testBlocked(self):        # Initialize svnmerge        self.svnmerge("init")        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision")        # Block revisions that have already been merged        self.svnmerge("block -r5", error=True, match=r"no available revisions")        # Block phantom revisions        self.svnmerge("block -r8", error=True, match=r"no available revisions")        # Block available revisions        self.svnmerge("block -r9", match=r"'svnmerge-blocked' set")        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision")        # Check that the revision is still available        self.svnmerge("avail", match=r"\A10$")        # Check that the revision was blocked correctly        self.svnmerge("avail -B", match=r"\A9$")        # Check that both revisions are available with avail -A        self.svnmerge("avail -A", match=r"\A9-10$")        # Block all remaining revisions        self.svnmerge("block", match=r"'svnmerge-blocked' set")        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision")        # Check that all revisions were blocked correctly        self.svnmerge("avail -B", match=r"\A9-10$")        # Check that all revisions are available using avail -A        self.svnmerge("avail -A", match=r"\A9-10$")        # Check that no revisions are available, now that they have        # been blocked        self.svnmerge("avail", match=r"\A\Z")        # Unblock all revisions        self.svnmerge("unblock", match=r"'svnmerge-blocked' deleted")        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision")        # Check that all revisions are available        self.svnmerge("avail", match=r"\A9-10$")        self.svnmerge("avail -A", match=r"\A9-10$")        # Check that no revisions are blocked        self.svnmerge("avail -B", match=r"\A$")    def testBasic(self):        self.svnmerge("init")        p = self.getproperty()        self.assertEqual("/trunk:1-6", p)        self.svnmerge("avail", match=r"\A9-10$")        self.svnmerge("avail -v", match=r"phantom.*7-8")        self.svnmerge("avail -B", match=r"\A$")        self.svnmerge("avail -A", match=r"\A9-10$")        self.svnmerge("avail --log", match=r"| r7.*| r8")        self.svnmerge("avail --diff -r9", match=r"Index: test4")        self.svnmerge("avail --log -r5", match=r"\A\Z")        self.svnmerge("avail --diff -r5", match=r"\A\Z")        self.svnmerge("integrated", match=r"^3-6$")        self.svnmerge("integrated --log -r5", match=r"| r5 ")        self.svnmerge("integrated --diff -r5", match=r"Index: test2")    def test_log_msg_suggest(self):        self.svnmerge("init -vf commit-log.txt", match=r"wrote commit message")        self.assert_(os.path.exists("commit-log.txt"))        os.remove("commit-log.txt")    def testInitForce(self):        open("test1", "a").write("foo")        self.svnmerge("init", error=True, match=r"clean")        self.svnmerge("init -F")        p = self.getproperty()        self.assertEqual("/trunk:1-6", p)    def testUninit(self):        """Test that uninit works, for both merged and blocked revisions."""        os.chdir("..")        self.launch("svn co %(TEST_REPO_URL)s/branches/testYYY-branch testYYY-branch")        os.chdir("trunk")        # Not using switch, so must update to get latest repository rev.        self.launch("svn update", match=r"At revision 13")        self.svnmerge2(["init", self.test_repo_url + "/branches/test-branch"])        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision 14")        self.svnmerge2(["init", self.test_repo_url + "/branches/testYYY-branch"])        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision 15")        # Create changes on test-branch that we can block        os.chdir("..")        os.chdir("test-branch")        # Not using switch, so must update to get latest repository rev.        self.launch("svn update", match=r"At revision 15")        open("test1", "w").write("test 1-changed_on_test-branch")        self.launch("svn commit -m \"Change to test1 on test-branch\"",                    match=r"Committed revision 16")        # Create changes on testYYY-branch that we can block        os.chdir("..")        os.chdir("testYYY-branch")        # Not using switch, so must update to get latest repository rev.        self.launch("svn update", match=r"At revision 16")        open("test2", "w").write("test 2-changed_on_testYYY-branch")        self.launch("svn commit -m \"Change to test2 on testYYY-branch\"",                    match=r"Committed revision 17")        # Block changes from both branches on the trunk        os.chdir("..")        os.chdir("trunk")        # Not using switch, so must update to get latest repository rev.        self.launch("svn update", match=r"At revision 17")        self.svnmerge("block -S testYYY-branch", match=r"'svnmerge-blocked' set")        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision 18")        self.svnmerge("block -S test-branch", match=r"'svnmerge-blocked' set")        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision 19")        # Do the uninit        self.svnmerge2(["uninit", "--source", self.test_repo_url + "/branches/testYYY-branch"])        # Check that the merged property for testYYY-branch was removed, but        # not for test-branch        pmerged = self.getproperty()        self.assertEqual("/branches/test-branch:1-13", pmerged)        # Check that the blocked property for testYYY-branch was removed, but        # not for test-branch        pblocked = self.getBlockedProperty()        self.assertEqual("/branches/test-branch:16", pblocked)        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision 20")        self.svnmerge2(["uninit", "--source", self.test_repo_url + "/branches/test-branch"])        # Check that the merged and blocked properties for test-branch have been removed too        pmerged = self.getproperty()        self.assertEqual(None, pmerged)        pblocked = self.getBlockedProperty()        self.assertEqual(None, pblocked)    def testUninitForce(self):        self.svnmerge2(["init", self.test_repo_url + "/trunk"])        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision")        self.svnmerge2(["init", self.test_repo_url + "/branches/testYYY-branch"])        self.launch("svn commit -F svnmerge-commit-message.txt",                    match=r"Committed revision")        p = self.getproperty()        self.assertEqual("/branches/testYYY-branch:1-14 /trunk:1-13", p)        open("test1", "a").write("foo")        self.svnmerge("uninit --source " + self.test_repo_url + "/branches/testYYY-branch",                      error=True, match=r"clean")        self.svnmerge("uninit -F --source " + self.test_repo_url + "/branches/testYYY-branch")        p = self.getproperty()        self.assertEqual("/trunk:1-13", p)    def testCheckInitializeEverything(self):        self.svnmerge2(["init", self.test_repo_url + "/trunk"])        p = self.getproperty()        r = svnmerge.get_svninfo(".")["Revision"]        self.assertEqual("/trunk:1-%d" % long(r), p)    def testCheckNoCopyfrom(self):        os.chdir("..")        os.chdir("trunk")        self.svnmerge("init", error=True, match=r"no copyfrom")

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -