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

📄 commit_tests.py

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 PY
📖 第 1 页 / 共 5 页
字号:
  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None, None, None, None, None,                                         wc_dir)  # Now gamma should be marked as `deleted' under the hood.  # Go ahead and re-add gamma, so that is *also* scheduled for addition.  svntest.main.file_append(gamma_path, "added gamma")  svntest.main.run_svn(None, 'add', gamma_path)  # For sanity, examine status: it should show a revision 2 tree with  # gamma scheduled for addition.  expected_status = svntest.actions.get_virginal_state(wc_dir, 2)  expected_status.tweak(wc_rev=1)  expected_status.tweak('A/D/gamma', wc_rev=0, status='A ')  svntest.actions.run_and_verify_status(wc_dir, expected_status)  # Create expected commit output.  expected_output = svntest.wc.State(wc_dir, {    'A/D/gamma' : Item(verb='Adding'),    })    # After committing, status should show only gamma at revision 3.  expected_status = svntest.actions.get_virginal_state(wc_dir, 3)  expected_status.tweak(wc_rev=1)  expected_status.tweak('A/D/gamma', wc_rev=3)  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None, None, None, None, None,                                         wc_dir)#----------------------------------------------------------------------# Testing part 2 of the "Greg Hudson" problem.## In this test, we make sure that we're UNABLE to commit a propchange# on an out-of-date directory.def hudson_part_2(sbox):  "hudson prob 2.0:  prop commit on old dir fails"  sbox.build()  wc_dir = sbox.wc_dir  # Remove gamma from the working copy.  D_path = os.path.join(wc_dir, 'A', 'D')  gamma_path = os.path.join(wc_dir, 'A', 'D', 'gamma')   svntest.main.run_svn(None, 'rm', gamma_path)  # Create expected commit output.  expected_output = svntest.wc.State(wc_dir, {    'A/D/gamma' : Item(verb='Deleting'),    })    # After committing, status should show no sign of gamma.  expected_status = svntest.actions.get_virginal_state(wc_dir, 2)  expected_status.tweak(wc_rev=1)  expected_status.remove('A/D/gamma')    # Commit the deletion of gamma and verify.  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None, None, None, None, None,                                         wc_dir)  # Now gamma should be marked as `deleted' under the hood, at  # revision 2.  Meanwhile, A/D is still lagging at revision 1.  # Make a propchange on A/D  svntest.main.run_svn(None, 'ps', 'foo', 'bar', D_path)  # Commit and *expect* a repository Merge failure:  svntest.actions.run_and_verify_commit (wc_dir,                                         None,                                         None,                                         "[Oo]ut.of.date",                                         None, None,                                         None, None,                                         wc_dir)#----------------------------------------------------------------------# Test a possible regression in our 'deleted' post-commit handling.## This test moves files from one subdir to another, commits, then# updates the empty directory.  Nothing should be printed, assuming# all the moved files are properly marked as 'deleted' and reported to# the server.def hudson_part_2_1(sbox):  "hudson prob 2.1:  move files, update empty dir"  sbox.build()  wc_dir = sbox.wc_dir  # Move all the files in H to G  H_path = os.path.join(wc_dir, 'A', 'D', 'H')  G_path = os.path.join(wc_dir, 'A', 'D', 'G')  chi_path = os.path.join(H_path, 'chi')  psi_path = os.path.join(H_path, 'psi')  omega_path = os.path.join(H_path, 'omega')   svntest.main.run_svn(None, 'mv', chi_path, G_path)  svntest.main.run_svn(None, 'mv', psi_path, G_path)  svntest.main.run_svn(None, 'mv', omega_path, G_path)    # Create expected commit output.  expected_output = svntest.wc.State(wc_dir, {    'A/D/H/chi' : Item(verb='Deleting'),    'A/D/H/omega' : Item(verb='Deleting'),    'A/D/H/psi' : Item(verb='Deleting'),    'A/D/G/chi' : Item(verb='Adding'),    'A/D/G/omega' : Item(verb='Adding'),    'A/D/G/psi' : Item(verb='Adding'),    })    expected_status = svntest.actions.get_virginal_state(wc_dir, 2)  expected_status.tweak(wc_rev=1)  expected_status.remove('A/D/H/chi')  expected_status.remove('A/D/H/omega')  expected_status.remove('A/D/H/psi')  expected_status.add({ 'A/D/G/chi' :                        Item(wc_rev=2, status='  ') })  expected_status.add({ 'A/D/G/omega' :                        Item(wc_rev=2, status='  ') })  expected_status.add({ 'A/D/G/psi' :                        Item(wc_rev=2, status='  ') })  svntest.actions.run_and_verify_commit(wc_dir,                                        expected_output,                                        expected_status,                                        None, None, None, None, None,                                        wc_dir)  # Now, assuming all three files in H are marked as 'deleted', an  # update of H should print absolutely nothing.  expected_output = svntest.wc.State(wc_dir, { })  # Reuse expected_status  expected_status.tweak(wc_rev=2)  expected_disk = svntest.main.greek_state.copy()  expected_disk.remove('A/D/H/chi', 'A/D/H/omega', 'A/D/H/psi')  expected_disk.add({    'A/D/G/chi' : Item("This is the file 'chi'.\n"),    })  expected_disk.add({    'A/D/G/omega' : Item("This is the file 'omega'.\n"),    })  expected_disk.add({    'A/D/G/psi' : Item("This is the file 'psi'.\n"),    })  svntest.actions.run_and_verify_update(wc_dir,                                        expected_output,                                        expected_disk,                                        expected_status)  #----------------------------------------------------------------------def hook_test(sbox):  "hook testing"  sbox.build()  # Get paths to the working copy and repository  wc_dir = sbox.wc_dir  repo_dir = sbox.repo_dir  # Setup the hook configs to echo data back  start_commit_hook = svntest.main.get_start_commit_hook_path (repo_dir)  svntest.main.file_append (start_commit_hook,                            """#!/bin/sh                            echo $1""")  os.chmod (start_commit_hook, 0755)  pre_commit_hook = svntest.main.get_pre_commit_hook_path (repo_dir)  svntest.main.file_append (pre_commit_hook,                            """#!/bin/sh                            echo $1 $2 """)  os.chmod (pre_commit_hook, 0755)  post_commit_hook = svntest.main.get_post_commit_hook_path (repo_dir)  svntest.main.file_append (post_commit_hook,                            """#!/bin/sh                            echo $1 $2 """)  os.chmod (post_commit_hook, 0755)  # Modify iota just so there is something to commit.  iota_path = os.path.join (wc_dir, "iota")  svntest.main.file_append (iota_path, "More stuff in iota")  # Now, commit and examine the output (we happen to know that the  # filesystem will report an absolute path because that's the way the  # filesystem is created by this test suite.  abs_repo_dir = os.path.abspath (repo_dir)  expected_output = [abs_repo_dir + "\n",                     abs_repo_dir + " 1\n",                     abs_repo_dir + " 2\n"]  svntest.actions.run_and_verify_svn (None, expected_output, [],                                      'ci', '--quiet',                                      '-m', 'log msg', wc_dir)#----------------------------------------------------------------------# Regression test for bug #469, whereby merge() was once reporting# erroneous conflicts due to Ancestor < Target < Source, in terms of# node-rev-id parentage.def merge_mixed_revisions(sbox):  "commit mixed-rev wc (no erroneous merge error)"  sbox.build()  wc_dir = sbox.wc_dir  # Make some convenient paths.  iota_path = os.path.join(wc_dir, 'iota')  H_path = os.path.join(wc_dir, 'A', 'D', 'H')  chi_path = os.path.join(wc_dir, 'A', 'D', 'H', 'chi')  omega_path = os.path.join(wc_dir, 'A', 'D', 'H', 'omega')  psi_path = os.path.join(wc_dir, 'A', 'D', 'H', 'psi')  # Here's the reproduction formula, in 5 parts.  # Hoo, what a buildup of state!    # 1. echo "moo" >> iota; echo "moo" >> A/D/H/chi; svn ci  svntest.main.file_append(iota_path, "moo")  svntest.main.file_append(chi_path, "moo")  expected_output = svntest.wc.State(wc_dir, {    'iota' : Item(verb='Sending'),    'A/D/H/chi' : Item(verb='Sending'),    })  expected_status = svntest.actions.get_virginal_state(wc_dir, 2)  expected_status.tweak(wc_rev=1)  expected_status.tweak('iota', 'A/D/H/chi', wc_rev=2)  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None, None, None, None, None,                                         wc_dir)  # 2. svn up A/D/H  expected_status = svntest.wc.State(wc_dir, {    'A/D/H' : Item(status='  ', wc_rev=2),    'A/D/H/chi' : Item(status='  ', wc_rev=2),    'A/D/H/omega' : Item(status='  ', wc_rev=2),    'A/D/H/psi' : Item(status='  ', wc_rev=2),    })  expected_disk = svntest.wc.State('', {    'omega' : Item("This is the file 'omega'.\n"),    'chi' : Item("This is the file 'chi'.\nmoo"),    'psi' : Item("This is the file 'psi'.\n"),    })  expected_output = svntest.wc.State(wc_dir, { })  svntest.actions.run_and_verify_update (H_path,                                         expected_output,                                         expected_disk,                                         expected_status)  # 3. echo "moo" >> iota; svn ci iota  svntest.main.file_append(iota_path, "moo2")  expected_output = svntest.wc.State(wc_dir, {    'iota' : Item(verb='Sending'),    })  expected_status = svntest.actions.get_virginal_state(wc_dir, 3)  expected_status.tweak(wc_rev=1)  expected_status.tweak('A/D/H', 'A/D/H/omega', 'A/D/H/chi', 'A/D/H/psi',                        wc_rev=2)  expected_status.tweak('iota', wc_rev=3)  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None, None, None, None, None,                                         wc_dir)  # 4. echo "moo" >> A/D/H/chi; svn ci A/D/H/chi  svntest.main.file_append(chi_path, "moo3")  expected_output = svntest.wc.State(wc_dir, {    'A/D/H/chi' : Item(verb='Sending'),    })  expected_status = svntest.actions.get_virginal_state(wc_dir, 4)  expected_status.tweak(wc_rev=1)  expected_status.tweak('A/D/H/chi', wc_rev=4)  expected_status.tweak('A/D/H', 'A/D/H/omega', 'A/D/H/psi', wc_rev=2)  expected_status.tweak('iota', wc_rev=3)  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None, None, None, None, None,                                         wc_dir)  # 5. echo "moo" >> iota; svn ci iota  svntest.main.file_append(iota_path, "moomoo")  expected_output = svntest.wc.State(wc_dir, {    'iota' : Item(verb='Sending'),    })  expected_status = svntest.actions.get_virginal_state(wc_dir, 5)  expected_status.tweak(wc_rev=1)  expected_status.tweak('A/D/H', 'A/D/H/omega', 'A/D/H/psi', wc_rev=2)  expected_status.tweak('A/D/H/chi', wc_rev=4)  expected_status.tweak('iota', wc_rev=5)  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None, None, None, None, None,                                         wc_dir)  # At this point, here is what our tree should look like:  # _    1       (     5)  working_copies/commit_tests-10  # _    1       (     5)  working_copies/commit_tests-10/A  # _    1       (     5)  working_copies/commit_tests-10/A/B  # _    1       (     5)  working_copies/commit_tests-10/A/B/E  # _    1       (     5)  working_copies/commit_tests-10/A/B/E/alpha  # _    1       (     5)  working_copies/commit_tests-10/A/B/E/beta  # _    1       (     5)  working_copies/commit_tests-10/A/B/F  # _    1       (     5)  working_copies/commit_tests-10/A/B/lambda  # _    1       (     5)  working_copies/commit_tests-10/A/C  # _    1       (     5)  working_copies/commit_tests-10/A/D  # _    1       (     5)  working_copies/commit_tests-10/A/D/G  # _    1       (     5)  working_copies/commit_tests-10/A/D/G/pi  # _    1       (     5)  working_copies/commit_tests-10/A/D/G/rho  # _    1       (     5)  working_copies/commit_tests-10/A/D/G/tau  # _    2       (     5)  working_copies/commit_tests-10/A/D/H  # _    4       (     5)  working_copies/commit_tests-10/A/D/H/chi  # _    2       (     5)  working_copies/commit_tests-10/A/D/H/omega  # _    2       (     5)  working_copies/commit_tests-10/A/D/H/psi  # _    1       (     5)  working_copies/commit_tests-10/A/D/gamma  # _    1       (     5)  working_copies/commit_tests-10/A/mu  # _    5       (     5)  working_copies/commit_tests-10/iota

⌨️ 快捷键说明

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