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

📄 commit_tests.py

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 PY
📖 第 1 页 / 共 5 页
字号:
#!/usr/bin/env python##  commit_tests.py:  testing fancy commit cases.##  Subversion is a tool for revision control. #  See http://subversion.tigris.org for more information.#    # ====================================================================# Copyright (c) 2000-2004 CollabNet.  All rights reserved.## This software is licensed as described in the file COPYING, which# you should have received as part of this distribution.  The terms# are also available at http://subversion.tigris.org/license-1.html.# If newer versions of this license are posted there, you may use a# newer version instead, at your option.######################################################################## General modulesimport string, sys, os, re# Our testing moduleimport svntestfrom svntest import SVNAnyOutput# (abbreviation)Skip = svntest.testcase.SkipXFail = svntest.testcase.XFailItem = svntest.wc.StateItem####################################################################### Utilities#def get_standard_state(wc_dir):  """Return a status list reflecting the local mods made by  make_standard_slew_of_changes()."""  state = svntest.actions.get_virginal_state(wc_dir, 1)  state.tweak('', status=' M')  state.tweak('A/B/lambda', status='M ')  state.tweak('A/B/E', 'A/D/H/chi', status='R ')  state.tweak('A/B/E/alpha', 'A/B/E/beta', 'A/C', 'A/D/gamma',              'A/D/G/rho', status='D ')  state.tweak('A/D', 'A/D/G/pi', status=' M')  state.tweak('A/D/H/omega', status='MM')  # New things  state.add({    'Q' : Item(status='A ', wc_rev=0),    'Q/floo' : Item(status='A ', wc_rev=0),    'A/D/H/gloo' : Item(status='A ', wc_rev=0),    'A/B/E/bloo' : Item(status='A ', wc_rev=0),    })  return state  def make_standard_slew_of_changes(wc_dir):  """Make a specific set of local mods to WC_DIR.  These will be used  by every commit-test.  Verify the 'svn status' output, return on  success."""  # Cache current working directory, move into wc_dir  was_cwd = os.getcwd()  os.chdir(wc_dir)  # Add a directory  os.mkdir('Q')  svntest.main.run_svn(None, 'add', 'Q')    # Remove two directories  svntest.main.run_svn(None, 'rm', os.path.join('A', 'B', 'E'))  svntest.main.run_svn(None, 'rm', os.path.join('A', 'C'))    # Replace one of the removed directories  svntest.main.run_svn(None, 'add', os.path.join('A', 'B', 'E'))    # Make property mods to two directories  svntest.main.run_svn(None, 'propset', 'foo', 'bar', os.curdir)  svntest.main.run_svn(None, 'propset', 'foo2', 'bar2', os.path.join('A', 'D'))    # Add three files  svntest.main.file_append(os.path.join('A', 'B', 'E', 'bloo'), "hi")  svntest.main.file_append(os.path.join('A', 'D', 'H', 'gloo'), "hello")  svntest.main.file_append(os.path.join('Q', 'floo'), "yo")  svntest.main.run_svn(None, 'add', os.path.join('A', 'B', 'E', 'bloo'))  svntest.main.run_svn(None, 'add', os.path.join('A', 'D', 'H', 'gloo'))  svntest.main.run_svn(None, 'add', os.path.join('Q', 'floo'))    # Remove three files  svntest.main.run_svn(None, 'rm', os.path.join('A', 'D', 'G', 'rho'))  svntest.main.run_svn(None, 'rm', os.path.join('A', 'D', 'H', 'chi'))  svntest.main.run_svn(None, 'rm', os.path.join('A', 'D', 'gamma'))    # Replace one of the removed files  svntest.main.file_append(os.path.join('A', 'D', 'H', 'chi'), "chi")  svntest.main.run_svn(None, 'add', os.path.join('A', 'D', 'H', 'chi'))    # Make textual mods to two files  svntest.main.file_append(os.path.join('A', 'B', 'lambda'), "new ltext")  svntest.main.file_append(os.path.join('A', 'D', 'H', 'omega'), "new otext")    # Make property mods to three files  svntest.main.run_svn(None, 'propset', 'blue', 'azul',                       os.path.join('A', 'D', 'H', 'omega'))    svntest.main.run_svn(None, 'propset', 'green', 'verde',                       os.path.join('Q', 'floo'))  svntest.main.run_svn(None, 'propset', 'red', 'rojo',                       os.path.join('A', 'D', 'G', 'pi'))    # Restore the CWD.  os.chdir(was_cwd)    # Build an expected status tree.  expected_status = get_standard_state(wc_dir)  # Verify status -- all local mods should be present.  svntest.actions.run_and_verify_status(wc_dir, expected_status)####################################################################### Tests##   Each test must return on success or raise on failure.#----------------------------------------------------------------------def commit_one_file(sbox):  "commit one file"  sbox.build()  wc_dir = sbox.wc_dir  # Make standard slew of changes to working copy.  make_standard_slew_of_changes(wc_dir)  omega_path = os.path.join(wc_dir, 'A', 'D', 'H', 'omega')   # Create expected output tree.  expected_output = svntest.wc.State(wc_dir, {    'A/D/H/omega' : Item(verb='Sending'),    })  # Created expected status tree.  expected_status = get_standard_state(wc_dir) # pre-commit status  expected_status.tweak('A/D/H/omega', wc_rev=2, status='  ')  # Commit the one file.  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None,                                         None, None,                                         None, None,                                         omega_path)  #----------------------------------------------------------------------def commit_one_new_file(sbox):  "commit one newly added file"  sbox.build()  wc_dir = sbox.wc_dir  # Make standard slew of changes to working copy.  make_standard_slew_of_changes(wc_dir)  gloo_path = os.path.join(wc_dir, 'A', 'D', 'H', 'gloo')   # Create expected output tree.  expected_output = svntest.wc.State(wc_dir, {    'A/D/H/gloo' : Item(verb='Adding'),    })  # Created expected status tree.  expected_status = get_standard_state(wc_dir) # pre-commit status  expected_status.tweak('A/D/H/gloo', wc_rev=2, status='  ')  # Commit the one file.  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None,                                         None, None,                                         None, None,                                         gloo_path)#----------------------------------------------------------------------def commit_one_new_binary_file(sbox):  "commit one newly added binary file"  sbox.build()  wc_dir = sbox.wc_dir  # Make standard slew of changes to working copy.  make_standard_slew_of_changes(wc_dir)  gloo_path = os.path.join(wc_dir, 'A', 'D', 'H', 'gloo')  svntest.main.run_svn(None, 'propset', 'svn:mime-type',                       'application/octet-stream', gloo_path)  # Create expected output tree.  expected_output = svntest.wc.State(wc_dir, {    'A/D/H/gloo' : Item(verb='Adding  (bin)'),    })  # Created expected status tree.  expected_status = get_standard_state(wc_dir) # pre-commit status  expected_status.tweak('A/D/H/gloo', wc_rev=2, status='  ')  # Commit the one file.  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None,                                         None, None,                                         None, None,                                         gloo_path)#----------------------------------------------------------------------def commit_multiple_targets(sbox):  "commit multiple targets"  sbox.build()  wc_dir = sbox.wc_dir  # This test will commit three targets:  psi, B, and pi.  In that order.  # Make local mods to many files.  AB_path = os.path.join(wc_dir, 'A', 'B')  lambda_path = os.path.join(wc_dir, 'A', 'B', 'lambda')  rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')  pi_path = os.path.join(wc_dir, 'A', 'D', 'G', 'pi')  omega_path = os.path.join(wc_dir, 'A', 'D', 'H', 'omega')  psi_path = os.path.join(wc_dir, 'A', 'D', 'H', 'psi')  svntest.main.file_append (lambda_path, 'new appended text for lambda')  svntest.main.file_append (rho_path, 'new appended text for rho')  svntest.main.file_append (pi_path, 'new appended text for pi')  svntest.main.file_append (omega_path, 'new appended text for omega')  svntest.main.file_append (psi_path, 'new appended text for psi')  # Just for kicks, add a property to A/D/G as well.  We'll make sure  # that it *doesn't* get committed.  ADG_path = os.path.join(wc_dir, 'A', 'D', 'G')  svntest.main.run_svn(None, 'propset', 'foo', 'bar', ADG_path)  # Created expected output tree for 'svn ci'.  We should see changes  # only on these three targets, no others.    expected_output = svntest.wc.State(wc_dir, {    'A/D/H/psi' : Item(verb='Sending'),    'A/B/lambda' : Item(verb='Sending'),    'A/D/G/pi' : Item(verb='Sending'),    })  # Create expected status tree; all local revisions should be at 1,  # but our three targets should be at 2.  expected_status = svntest.actions.get_virginal_state(wc_dir, 2)  expected_status.tweak(wc_rev=1)  expected_status.tweak('A/D/H/psi', 'A/B/lambda', 'A/D/G/pi', wc_rev=2)  # rho and omega should still display as locally modified:  expected_status.tweak('A/D/G/rho', 'A/D/H/omega', status='M ')  # A/D/G should still have a local property set, too.  expected_status.tweak('A/D/G', status=' M')  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None,                                         None, None,                                         None, None,                                         psi_path, AB_path, pi_path)#----------------------------------------------------------------------def commit_multiple_targets_2(sbox):  "commit multiple targets, 2nd variation"  sbox.build()  wc_dir = sbox.wc_dir  # This test will commit three targets:  psi, B, omega and pi.  In that order.  # Make local mods to many files.  AB_path = os.path.join(wc_dir, 'A', 'B')  lambda_path = os.path.join(wc_dir, 'A', 'B', 'lambda')  rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')  pi_path = os.path.join(wc_dir, 'A', 'D', 'G', 'pi')  omega_path = os.path.join(wc_dir, 'A', 'D', 'H', 'omega')  psi_path = os.path.join(wc_dir, 'A', 'D', 'H', 'psi')  svntest.main.file_append (lambda_path, 'new appended text for lambda')  svntest.main.file_append (rho_path, 'new appended text for rho')  svntest.main.file_append (pi_path, 'new appended text for pi')  svntest.main.file_append (omega_path, 'new appended text for omega')  svntest.main.file_append (psi_path, 'new appended text for psi')  # Just for kicks, add a property to A/D/G as well.  We'll make sure  # that it *doesn't* get committed.  ADG_path = os.path.join(wc_dir, 'A', 'D', 'G')  svntest.main.run_svn(None, 'propset', 'foo', 'bar', ADG_path)  # Created expected output tree for 'svn ci'.  We should see changes  # only on these three targets, no others.    expected_output = svntest.wc.State(wc_dir, {    'A/D/H/psi' : Item(verb='Sending'),    'A/B/lambda' : Item(verb='Sending'),    'A/D/H/omega' : Item(verb='Sending'),    'A/D/G/pi' : Item(verb='Sending'),    })  # Create expected status tree; all local revisions should be at 1,  # but our four targets should be at 2.  expected_status = svntest.actions.get_virginal_state(wc_dir, 2)  expected_status.tweak(wc_rev=1)  expected_status.tweak('A/D/H/psi', 'A/B/lambda', 'A/D/G/pi', 'A/D/H/omega',                        wc_rev=2)  # rho should still display as locally modified:  expected_status.tweak('A/D/G/rho', status='M ')  # A/D/G should still have a local property set, too.  expected_status.tweak('A/D/G', status=' M')  svntest.actions.run_and_verify_commit (wc_dir,                                         expected_output,                                         expected_status,                                         None,                                         None, None,                                         None, None,                                         psi_path, AB_path,                                         omega_path, pi_path)#----------------------------------------------------------------------

⌨️ 快捷键说明

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