📄 svnmerge_test.py
字号:
def testTrimmedAvailMerge(self): """Check that both avail and merge do not search for phantom revs too hard.""" self.svnmerge("init") self.svnmerge("avail -vv -r8-9", match=r"svn log.*-r8:9") self.svnmerge("merge -F -vv -r8-9", match=r"svn log.*-r8:9") self.svnmerge("avail -vv -r2", nonmatch=r"svn log") self.svnmerge("integrated", match=r"^3-6,8-9$") def testMergeRecordOnly(self): """Check that flagging revisions as manually merged works.""" self.svnmerge("init") self.svnmerge("avail -vv -r9", match=r"svn log.*-r9:9") self.svnmerge("merge --record-only -F -vv -r9", nonmatch=r"svn merge -r 8:9") self.svnmerge("avail -r9", match=r"\A$") self.svnmerge("integrated", match=r"^3-6,9$") self.svnmerge("integrated -r9", match=r"^9$") def testBidirectionalMerges(self): """Check that reflected revisions are recognized properly for bidirectional merges.""" os.chdir("..") os.chdir("test-branch") self.svnmerge2(["init", self.test_repo_url + "/trunk"]) self.launch("svn commit -F svnmerge-commit-message.txt", match=r"Committed revision 14") os.remove("svnmerge-commit-message.txt") os.chdir("..") os.chdir("trunk") # Not using switch, so must update to get latest repository rev. self.launch("svn update", match=r"At revision 14") self.svnmerge2(["init", self.test_repo_url + "/branches/test-branch"]) self.launch("svn commit -F svnmerge-commit-message.txt", match=r"Committed revision 15") os.remove("svnmerge-commit-message.txt") open("test1", "w").write("test 1-changed_on_trunk") self.launch("svn commit -m \"Change to test1 on trunk\"", match=r"Committed revision 16") self.svnmerge("integrated", match=r"^13-14$") 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 16") self.svnmerge("avail -vv --bidirectional", match=r"16$") self.svnmerge("merge -vv --bidirectional", match=r"merge -r 15:16") p = self.getproperty() self.assertEqual("/trunk:1-16", p) self.svnmerge("integrated", match=r"^3-16$") self.launch("svn commit -F svnmerge-commit-message.txt", match=r"Committed revision 17") os.remove("svnmerge-commit-message.txt") open("test1", "w").write("test 1-changed_on_branch_after_merge_from_trunk") self.launch("svn commit -m \"Change to test1 on branch\"", match=r"Committed revision 18") os.chdir("..") os.chdir("trunk") # Not using switch, so must update to get latest repository rev. self.launch("svn update", match=r"At revision 18") # Ensure default is not to check for reflected revisions. self.svnmerge("avail -vv", match=r"17-18$") # Now check reflected revision is excluded with --bidirectional flag. self.svnmerge("avail -vv --bidirectional", match=r"18$") self.svnmerge("merge -vv --bidirectional", match=r"merge -r 17:18") p = self.getproperty() self.assertEqual("/branches/test-branch:1-18", p) self.svnmerge("integrated", match=r"^13-18$") def testBidirectionalMergesMultiBranch(self): """Check that merges from a second branch are not considered reflected for other branches.""" os.chdir("..") self.multilaunch(""" svn cp -m "Create test-branch2" %(TEST_REPO_URL)s/trunk %(TEST_REPO_URL)s/branches/test-branch2 svn co %(TEST_REPO_URL)s/branches/test-branch2 test-branch2 """) os.chdir("test-branch") self.svnmerge2(["init", self.test_repo_url + "/trunk"]) self.launch("svn commit -F svnmerge-commit-message.txt", match=r"Committed revision 15") os.remove("svnmerge-commit-message.txt") os.chdir("..") os.chdir("test-branch2") self.svnmerge2(["init", self.test_repo_url + "/trunk"]) self.launch("svn commit -F svnmerge-commit-message.txt", match=r"Committed revision 16") os.remove("svnmerge-commit-message.txt") os.chdir("..") os.chdir("trunk") # Not using switch, so must update to get latest repository rev. self.launch("svn update", match=r"At revision 16") self.svnmerge2(["init", self.test_repo_url + "/branches/test-branch"]) self.launch("svn commit -F svnmerge-commit-message.txt", match=r"Committed revision 17") os.remove("svnmerge-commit-message.txt") self.svnmerge2(["init", self.test_repo_url + "/branches/test-branch2"]) self.launch("svn commit -F svnmerge-commit-message.txt", match=r"Committed revision 18") os.remove("svnmerge-commit-message.txt") os.chdir("..") os.chdir("test-branch2") open("test1", "w").write("test 1-changed_on_branch2") self.launch("svn commit -m \"Change to test1 on branch2\"", match=r"Committed revision 19") os.chdir("..") os.chdir("trunk") # Not using switch, so must update to get latest repository rev. self.launch("svn update", match=r"At revision 19") # Merge into trunk self.svnmerge("merge -vv --head branch2", match=r"merge -r 18:19") p = self.getproperty() self.assertEqual("/branches/test-branch:1-16 /branches/test-branch2:1-19", p) self.svnmerge("integrated --head branch2", match=r"^14-19$") self.svnmerge("integrated --head ../test-branch", match=r"^13-16$") self.launch("svn commit -F svnmerge-commit-message.txt", match=r"Committed revision 20") os.remove("svnmerge-commit-message.txt") 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 20") # Latest revision on trunk which was merged from test-branch2 # should be available for test-branch with --bidirectional flag. self.svnmerge("avail -vv --bidirectional", match=r"20$") self.svnmerge("merge -vv --bidirectional", match=r"merge -r 17:20") p = self.getproperty() self.assertEqual("/trunk:1-20", p) self.svnmerge("integrated", match=r"^3-20$") def testRollbackWithoutInit(self): """Rollback should error out if invoked prior to init""" self.svnmerge("rollback -vv --head ../trunk", error = True, match = r"no integration info available for repository path") def testRollbackOutsidePossibleRange(self): """`svnmerge rollback' should error out if range contains revisions prior to SOURCE creation date.""" # Initialize svnmerge self.svnmerge2(["init", self.test_repo_url + "/trunk"]) self.launch("svn commit -F svnmerge-commit-message.txt", match = r"Committed revision 14") os.remove("svnmerge-commit-message.txt") expected_error = r"""Specified revision range falls out of the rollback range.""" self.svnmerge("rollback -vv --head ../trunk -r 2-14", error = True, match = expected_error) def testRollbackWithoutRevisionOpt(self): """`svnmerge rollback' should error out if -r option is not given""" # Initialize svnmerge self.svnmerge2(["init", self.test_repo_url + "/trunk"]) self.launch("svn commit -F svnmerge-commit-message.txt", match=r"Committed revision 14") os.remove("svnmerge-commit-message.txt") self.svnmerge("rollback -vv --head ../trunk", error = True, match = r"The '-r' option is mandatory for rollback") def testInitAndRollbackRecordOnly(self): """Init svnmerge, modify source head, merge, rollback --record-only.""" # Initialize svnmerge self.svnmerge2(["init", self.test_repo_url + "/trunk"]) self.launch("svn commit -F svnmerge-commit-message.txt", match = r"Committed revision 14") os.remove("svnmerge-commit-message.txt") # Rollback record-only expected_output = r"property 'svnmerge-integrated' set on '.'" detested_output = r"""D test2D test3""" self.svnmerge("rollback -vv --record-only --head ../trunk -r5-7", match = expected_output, nonmatch = detested_output) def testInitAndRollback(self): """Init svnmerge, modify source head, merge, rollback.""" # Initialize svnmerge self.svnmerge2(["init", self.test_repo_url + "/trunk"]) self.launch("svn commit -F svnmerge-commit-message.txt", match = r"Committed revision 14") os.remove("svnmerge-commit-message.txt") # Svnmerge rollback r5-7 expected_output = r"""D test2D test3""" self.svnmerge("rollback -vv --head ../trunk -r5-7", match = expected_output) def testMergeAndRollbackEmptyRevisionRange(self): """Init svnmerge, modify source head, merge, rollback where no merge occured.""" # Initialize svnmerge self.svnmerge2(["init", self.test_repo_url + "/trunk"]) self.launch("svn commit -F svnmerge-commit-message.txt", match = r"Committed revision 14") os.remove("svnmerge-commit-message.txt") # Make changes to trunk os.chdir("../trunk") open("newfile", "w").close() self.launch("svn add newfile") self.launch("svn commit -m 'Adding newfile'", match=r"Committed revision 15") open("anothernewfile", "w").close() self.launch("svn add anothernewfile") self.launch("svn commit -m 'Adding anothernewfile'", match=r"Committed revision 16") # Svnmerge block r15,16 os.chdir("../test-branch") self.launch("svn up ..", error = False) self.svnmerge("block -r 15,16 --head ../trunk") self.launch("svn commit -F svnmerge-commit-message.txt", match = r"Committed revision 17") self.svnmerge("merge --head ../trunk") self.launch("svn commit -F svnmerge-commit-message.txt") # Svnmerge rollback r15-16 self.svnmerge("rollback -vv --head ../trunk -r15-16", error = False, match = r"Nothing to rollback in revision range r15-16") def testMergeAndRollback(self): """Init svnmerge, modify source head, merge, rollback.""" # Initialize svnmerge self.svnmerge2(["init", self.test_repo_url + "/trunk"]) self.launch("svn commit -F svnmerge-commit-message.txt", match = r"Committed revision 14") os.remove("svnmerge-commit-message.txt") # Make changes to trunk os.chdir("../trunk") open("newfile", "w").close() self.launch("svn add newfile") self.launch("svn commit -m 'Adding newfile'", match=r"Committed revision 15") # Svnmerge merge r15 os.chdir("../test-branch") self.svnmerge("merge -r 15 --head ../trunk") self.launch("svn commit -F svnmerge-commit-message.txt", match = r"Committed revision 16") # Svnmerge rollback r15 self.svnmerge("rollback -vv --head ../trunk -r15", match = r"-r 15:14") def testBlockMergeAndRollback(self): """Init svnmerge, block, modify head, merge, rollback.""" # Initialize svnmerge self.svnmerge2(["init", self.test_repo_url + "/trunk"]) self.launch("svn commit -F svnmerge-commit-message.txt", match = r"Committed revision 14") os.remove("svnmerge-commit-message.txt") # Make changes to trunk os.chdir("../trunk") open("newfile", "w").close() self.launch("svn add newfile") self.launch("svn commit -m 'Adding newfile'", match=r"Committed revision 15") open("anothernewfile", "w").close() self.launch("svn add anothernewfile") self.launch("svn commit -m 'Adding anothernewfile'", match=r"Committed revision 16") # Svnmerge block r16, merge r15 os.chdir("../test-branch") self.launch("svn up ..", error = False) self.svnmerge("block -r 16 --head ../trunk") self.launch("svn commit -F svnmerge-commit-message.txt", match = r"Committed revision 17") self.svnmerge("merge --head ../trunk", nonmatch = r"A anothernewfile", match = r"A newfile") self.launch("svn commit -F svnmerge-commit-message.txt", match = r"Committed revision 18") # Svnmerge rollback revision range 15-18 (in effect only 15,17) self.svnmerge("rollback -vv --head ../trunk -r15-18", nonmatch = r"D anothernewfile")if __name__ == "__main__": # If an existing template repository and working copy for testing # exists, then always remove it. This prevents any problems if # this test suite is modified and there exists an older template # directory that may be used. This will also prevent problems if # in a previous run of this script, the template was being created # when the script was canceled, leaving it in an inconsistent # state. template_path = get_template_path() if os.path.exists(template_path): rmtree(template_path) unittest.main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -