📄 commit_tests.py
字号:
"commit the current directory" sbox.build() wc_dir = sbox.wc_dir svntest.main.run_svn(None, 'propset', 'pname', 'pval', wc_dir) was_cwd = os.getcwd() try: os.chdir(wc_dir) expected_output = svntest.wc.State('.', { '.' : Item(verb='Sending'), }) svntest.actions.run_and_verify_commit('.', expected_output, None, None, None, None, None, None, '.') finally: os.chdir(was_cwd) # I can't get the status check to work as part of run_and_verify_commit. expected_status = svntest.actions.get_virginal_state(wc_dir, 1) expected_status.tweak('', wc_rev=2, status=' ') svntest.actions.run_and_verify_status(wc_dir, expected_status)#----------------------------------------------------------------------# Check that the pending txn gets removed from the repository after# a failed commit.def failed_commit(sbox): "commit with conflicts and check txn in repo" sbox.build() wc_dir = sbox.wc_dir # Make the other working copy other_wc_dir = sbox.add_wc_path('other') svntest.actions.duplicate_dir(wc_dir, other_wc_dir) # Make different changes in the two working copies iota_path = os.path.join (wc_dir, "iota") svntest.main.file_append (iota_path, "More stuff in iota") other_iota_path = os.path.join (other_wc_dir, "iota") svntest.main.file_append (other_iota_path, "More different stuff in iota") # Commit both working copies. The second commit should fail. svntest.actions.run_and_verify_svn("Output on stderr where none expected", SVNAnyOutput, [], 'commit', '-m', 'log', wc_dir) svntest.actions.run_and_verify_svn("Output on stderr expected", None, SVNAnyOutput, 'commit', '-m', 'log', other_wc_dir) # Now list the txns in the repo. The list should be empty. output, errput = svntest.main.run_svnadmin('lstxns', sbox.repo_dir) svntest.actions.compare_and_display_lines( "Error running 'svnadmin lstxns'.", 'STDERR', [], errput) svntest.actions.compare_and_display_lines( "Output of 'svnadmin lstxns' is unexpected.", 'STDOUT', [], output)#----------------------------------------------------------------------# Commit from multiple working copies is not yet supported. At# present an error is generated and none of the working copies change.# Related to issue 959, this test here doesn't use svn:externals but the# behaviour needs to be considered.def commit_multiple_wc(sbox): "attempted commit from multiple wc fails" sbox.build() wc_dir = sbox.wc_dir # Checkout a second working copy wc2_dir = os.path.join(wc_dir, 'A', 'wc2') url = svntest.main.current_repo_url svntest.actions.run_and_verify_svn ("Output on stderr where none expected", SVNAnyOutput, [], 'checkout', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, url, wc2_dir) # Modify both working copies mu_path = os.path.join(wc_dir, 'A', 'mu') svntest.main.file_append(mu_path, 'appended mu text') lambda2_path = os.path.join(wc2_dir, 'A', 'B', 'lambda') svntest.main.file_append(lambda2_path, 'appended lambda2 text') # Verify modified status expected_status = svntest.actions.get_virginal_state(wc_dir, 1) expected_status.tweak('A/mu', status='M ') svntest.actions.run_and_verify_status(wc_dir, expected_status) expected_status2 = svntest.actions.get_virginal_state(wc2_dir, 1) expected_status2.tweak('A/B/lambda', status='M ') svntest.actions.run_and_verify_status(wc2_dir, expected_status2) # Commit should fail, even though one target is a "child" of the other. svntest.actions.run_and_verify_svn("Unexpectedly not locked", None, SVNAnyOutput, 'commit', '-m', 'log', wc_dir, wc2_dir) # Verify status unchanged svntest.actions.run_and_verify_status(wc_dir, expected_status) svntest.actions.run_and_verify_status(wc2_dir, expected_status2)def commit_nonrecursive(sbox): "commit named targets with -N (issues #1195, #1239)" sbox.build() wc_dir = sbox.wc_dir ##################################################### ### Issue #1195: ### ### 1. Create these directories and files: ### ### file1 ### dir1 ### dir1/file2 ### dir1/file3 ### dir1/dir2 ### dir1/dir2/file4 ### ### 2. run 'svn add -N <all of the above>' ### ### 3. run 'svn ci -N <all of the above>' ### ### (The bug was that only 4 entities would get committed, when it ### should be 6: dir2/ and file4 were left out.) # These paths are relative to the top of the test's working copy. file1_path = 'file1' dir1_path = 'dir1' file2_path = os.path.join('dir1', 'file2') file3_path = os.path.join('dir1', 'file3') dir2_path = os.path.join('dir1', 'dir2') file4_path = os.path.join('dir1', 'dir2', 'file4') # Create the new files and directories. svntest.main.file_append(os.path.join(wc_dir, file1_path), 'this is file1') os.mkdir(os.path.join(wc_dir, dir1_path)) svntest.main.file_append(os.path.join(wc_dir, file2_path), 'this is file2') svntest.main.file_append(os.path.join(wc_dir, file3_path), 'this is file3') os.mkdir(os.path.join(wc_dir, dir2_path)) svntest.main.file_append(os.path.join(wc_dir, file4_path), 'this is file4') # Add them to version control. svntest.actions.run_and_verify_svn("", SVNAnyOutput, [], 'add', '-N', os.path.join(wc_dir, file1_path), os.path.join(wc_dir, dir1_path), os.path.join(wc_dir, file2_path), os.path.join(wc_dir, file3_path), os.path.join(wc_dir, dir2_path), os.path.join(wc_dir, file4_path)) # Commit. We should see all 6 items (2 dirs, 4 files) get sent. expected_output = svntest.wc.State( wc_dir, { file1_path : Item(verb='Adding'), dir1_path : Item(verb='Adding'), file2_path : Item(verb='Adding'), file3_path : Item(verb='Adding'), dir2_path : Item(verb='Adding'), file4_path : Item(verb='Adding'), } ) expected_status = svntest.actions.get_virginal_state(wc_dir, 1) expected_status.add({ file1_path : Item(status=' ', wc_rev=2), dir1_path : Item(status=' ', wc_rev=2), file2_path : Item(status=' ', wc_rev=2), file3_path : Item(status=' ', wc_rev=2), dir2_path : Item(status=' ', wc_rev=2), file4_path : Item(status=' ', wc_rev=2), }) svntest.actions.run_and_verify_commit(wc_dir, expected_output, expected_status, None, None, None, None, None, '-N', os.path.join(wc_dir, file1_path), os.path.join(wc_dir, dir1_path), os.path.join(wc_dir, file2_path), os.path.join(wc_dir, file3_path), os.path.join(wc_dir, dir2_path), os.path.join(wc_dir, file4_path)) ##################################################### ### Issue #1239: ### ### 1. Create these directories and files: ### ### dirA ### dirA/fileA ### dirA/fileB ### dirA/dirB ### dirA/dirB/fileC ### dirA/dirB/nocommit ### ### 2. run 'svn add -N <all of the above>' ### ### 3. run 'svn ci -N <all but nocommit>' ### ### The bug was that it would attempt to commit the file `nocommit', ### when it shouldn't, and then get an error anyway: ### ### Adding wc/dirA ### Adding wc/dirA/fileA ### Adding wc/dirA/fileB ### Adding wc/dirA/dirB ### Adding wc/dirA/dirB/nocommit ### Adding wc/dirA/dirB/fileC ### Transmitting file data ....svn: A problem occurred; see later errors ### for details ### svn: Commit succeeded, but other errors follow: ### svn: Problem running log ### svn: Error bumping revisions post-commit (details follow): ### svn: in directory ### 'F:/Programmation/Projets/subversion/svnant/test/wc/dirA' ### svn: start_handler: error processing command 'committed' in ### 'F:/Programmation/Projets/subversion/svnant/test/wc/dirA' ### svn: Working copy not locked ### svn: directory not locked ### (F:/Programmation/Projets/subversion/svnant/test/wc) ### # Now add these directories and files, except the last: dirA_path = 'dirA' fileA_path = os.path.join('dirA', 'fileA') fileB_path = os.path.join('dirA', 'fileB') dirB_path = os.path.join('dirA', 'dirB') fileC_path = os.path.join(dirB_path, 'fileC') nocommit_path = os.path.join(dirB_path, 'nocommit') # Create the new files and directories. os.mkdir(os.path.join(wc_dir, dirA_path)) svntest.main.file_append(os.path.join(wc_dir, fileA_path), 'fileA') svntest.main.file_append(os.path.join(wc_dir, fileB_path), 'fileB') os.mkdir(os.path.join(wc_dir, dirB_path)) svntest.main.file_append(os.path.join(wc_dir, fileC_path), 'fileC') svntest.main.file_append(os.path.join(wc_dir, nocommit_path), 'nocommit') # Add them to version control. svntest.actions.run_and_verify_svn("", SVNAnyOutput, [], 'add', '-N', os.path.join(wc_dir, dirA_path), os.path.join(wc_dir, fileA_path), os.path.join(wc_dir, fileB_path), os.path.join(wc_dir, dirB_path), os.path.join(wc_dir, fileC_path), os.path.join(wc_dir, nocommit_path)) expected_output = svntest.wc.State( wc_dir, { dirA_path : Item(verb='Adding'), fileA_path : Item(verb='Adding'), fileB_path : Item(verb='Adding'), dirB_path : Item(verb='Adding'), fileC_path : Item(verb='Adding'), } ) expected_status = svntest.actions.get_virginal_state(wc_dir, 1) # Expect the leftovers from the first part of the test. expected_status.add({ file1_path : Item(status=' ', wc_rev=2), dir1_path : Item(status=' ', wc_rev=2), file2_path : Item(status=' ', wc_rev=2), file3_path : Item(status=' ', wc_rev=2), dir2_path : Item(status=' ', wc_rev=2), file4_path : Item(status=' ', wc_rev=2), }) # Expect the commits (and one noncommit) from this part of the test. expected_status.add({ dirA_path : Item(status=' ', wc_rev=3), fileA_path : Item(status=' ', wc_rev=3), fileB_path : Item(status=' ', wc_rev=3), dirB_path : Item(status=' ', wc_rev=3), fileC_path : Item(status=' ', wc_rev=3), nocommit_path : Item(status='A ', wc_rev=0) }) svntest.actions.run_and_verify_commit(wc_dir, expected_output, expected_status, None, None, None, None, None, '-N', os.path.join(wc_dir, dirA_path), os.path.join(wc_dir, fileA_path), os.path.join(wc_dir, fileB_path), os.path.join(wc_dir, dirB_path), os.path.join(wc_dir, fileC_path))#----------------------------------------------------------------------# Regression for #1017: ra_dav was allowing the deletion of out-of-date# files or dirs, which majorly violates Subversion's semantics.def commit_out_of_date_deletions(sbox): "commit deletion of out-of-date file or dir" sbox.build() wc_dir = sbox.wc_dir # Make a backup copy of the working copy wc_backup = sbox.add_wc_path('backup') svntest.actions.duplicate_dir(wc_dir, wc_backup) # Change omega's text, and make a propchange to A/C directory omega_path = os.path.join(wc_dir, 'A', 'D', 'H', 'omega') C_path = os.path.join(wc_dir, 'A', 'C') svntest.main.file_append (omega_path, 'appended omega text') svntest.main.run_svn(None, 'propset', 'fooprop', 'foopropval', C_path) # Commit revision 2. expected_output = svntest.wc.State(wc_dir, { 'A/D/H/omega' : Item(verb='Sending'), 'A/C' : Item(verb='Sending'), }) expected_status = svntest.actions.get_vir
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -