Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/tests/cmdline/commit_tests.py view on Meta::CPAN
svntest.main.file_append(sbox.ospath(fileB_path), 'fileB')
os.mkdir(sbox.ospath(dirB_path))
svntest.main.file_append(sbox.ospath(nope_1_path), 'nope_1')
svntest.main.file_append(sbox.ospath(nope_2_path), 'nope_2')
# Add them to version control.
svntest.actions.run_and_verify_svn(None, svntest.verify.AnyOutput, [],
'add', '-N',
sbox.ospath(dirA_path),
sbox.ospath(fileA_path),
# don't add fileB
sbox.ospath(dirB_path),
sbox.ospath(nope_1_path),
# don't add nope_2
)
expected_output = svntest.wc.State(
wc_dir,
{ dirA_path : Item(verb='Adding'),
# no children!
}
)
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 some commits and some non-commits from this part of the test.
expected_status.add({
dirA_path : Item(status=' ', wc_rev=3),
fileA_path : Item(status='A ', wc_rev=0),
# no fileB
dirB_path : Item(status='A ', wc_rev=0),
nope_1_path : Item(status='A ', wc_rev=0),
# no nope_2
})
svntest.actions.run_and_verify_commit(wc_dir,
expected_output,
expected_status,
None,
'-N', sbox.ospath(dirA_path))
#----------------------------------------------------------------------
# Regression for #1017: ra_neon was allowing the deletion of out-of-date
# files or dirs, which majorly violates Subversion's semantics.
# An out-of-date error should be raised if the object to be committed has
# already been deleted or modified in the repo.
def commit_out_of_date_deletions(sbox):
"commit deletion of out-of-date file or dir"
# Path WC 1 WC backup
# =========== ==== =========
# A/C pset del
# A/I del pset
# A/B/F del del
# A/D/H/omega text del
# A/B/E/alpha pset del
# A/D/H/chi del text
# A/B/E/beta del pset
# A/D/H/psi del del
sbox.build()
wc_dir = sbox.wc_dir
# Need another empty dir
I_path = sbox.ospath('A/I')
os.mkdir(I_path)
svntest.main.run_svn(None, 'add', I_path)
svntest.main.run_svn(None, 'ci', '-m', 'prep', wc_dir)
svntest.main.run_svn(None, 'up', 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)
# Edits in wc 1
C_path = sbox.ospath('A/C')
omega_path = sbox.ospath('A/D/H/omega')
alpha_path = sbox.ospath('A/B/E/alpha')
svntest.main.run_svn(None, 'propset', 'fooprop', 'foopropval', C_path)
svntest.main.file_append(omega_path, 'appended omega text')
svntest.main.run_svn(None, 'propset', 'fooprop', 'foopropval', alpha_path)
# Deletions in wc 1
I_path = sbox.ospath('A/I')
F_path = sbox.ospath('A/B/F')
chi_path = sbox.ospath('A/D/H/chi')
beta_path = sbox.ospath('A/B/E/beta')
psi_path = sbox.ospath('A/D/H/psi')
svntest.main.run_svn(None, 'rm', I_path, F_path, chi_path, beta_path,
psi_path)
# Commit in wc 1
expected_output = svntest.wc.State(wc_dir, {
'A/C' : Item(verb='Sending'),
'A/I' : Item(verb='Deleting'),
'A/B/F' : Item(verb='Deleting'),
'A/D/H/omega' : Item(verb='Sending'),
'A/B/E/alpha' : Item(verb='Sending'),
'A/D/H/chi' : Item(verb='Deleting'),
'A/B/E/beta' : Item(verb='Deleting'),
'A/D/H/psi' : Item(verb='Deleting'),
})
expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
expected_status.tweak('A/C', 'A/D/H/omega', 'A/B/E/alpha', wc_rev=3,
status=' ')
expected_status.remove('A/B/F', 'A/D/H/chi', 'A/B/E/beta', 'A/D/H/psi')
commit = svntest.actions.run_and_verify_commit
commit(wc_dir, expected_output, expected_status, None, wc_dir)
# Edits in wc backup
I_path = os.path.join(wc_backup, 'A', 'I')
chi_path = os.path.join(wc_backup, 'A', 'D', 'H', 'chi')
beta_path = os.path.join(wc_backup, 'A', 'B', 'E','beta')
svntest.main.run_svn(None, 'propset', 'fooprop', 'foopropval', I_path)
svntest.main.file_append(chi_path, 'appended chi text')
svntest.main.run_svn(None, 'propset', 'fooprop', 'foopropval', beta_path)
# Deletions in wc backup
C_path = os.path.join(wc_backup, 'A', 'C')
F_path = os.path.join(wc_backup, 'A', 'B', 'F')
omega_path = os.path.join(wc_backup, 'A', 'D', 'H', 'omega')
alpha_path = os.path.join(wc_backup, 'A', 'B', 'E', 'alpha')
psi_path = os.path.join(wc_backup, 'A', 'D', 'H', 'psi')
svntest.main.run_svn(None, 'rm', C_path, F_path, omega_path, alpha_path,
psi_path)
# A commit of any one of these files or dirs should fail, preferably
# with an out-of-date error message.
error_re = "(out of date|not found)"
commit(wc_backup, None, None, error_re, C_path)
commit(wc_backup, None, None, error_re, I_path)
commit(wc_backup, None, None, error_re, F_path)
commit(wc_backup, None, None, error_re, omega_path)
commit(wc_backup, None, None, error_re, alpha_path)
commit(wc_backup, None, None, error_re, chi_path)
commit(wc_backup, None, None, error_re, beta_path)
commit(wc_backup, None, None, error_re, psi_path)
def commit_with_bad_log_message(sbox):
"commit with a log message containing bad data"
sbox.build()
wc_dir = sbox.wc_dir
iota_path = sbox.ospath('iota')
log_msg_path = sbox.ospath('log-message')
# Make a random change, so there's something to commit.
svntest.main.file_append(iota_path, 'fish')
# Create a log message containing a zero-byte.
svntest.main.file_append(log_msg_path, '\x00')
# Commit and expect an error.
svntest.actions.run_and_verify_commit(wc_dir,
None, None,
"contains a zero byte",
'-F', log_msg_path,
iota_path)
def commit_with_mixed_line_endings(sbox):
"commit with log message with mixed EOL"
sbox.build()
wc_dir = sbox.wc_dir
expected_status = make_standard_slew_of_changes(wc_dir)
iota_path = sbox.ospath('iota')
log_msg_path = sbox.ospath('log-message')
# Make a random change, so there's something to commit.
svntest.main.file_append(iota_path, 'kebab')
# Create a log message containing a zero-byte.
svntest.main.file_append(log_msg_path, "test\nthis\n\rcase\r\n--This line, and those below, will be ignored--\n")
# Commit and expect an error.
svntest.actions.run_and_verify_commit(wc_dir,
None, None,
"Error normalizing log message to internal format",
'-F', log_msg_path,
iota_path)
def commit_with_mixed_line_endings_in_ignored_part(sbox):
"commit with log message with mixed EOL in tail"
sbox.build()
wc_dir = sbox.wc_dir
expected_status = make_standard_slew_of_changes(wc_dir)
iota_path = sbox.ospath('iota')
log_msg_path = sbox.ospath('log-message')
# Make a random change, so there's something to commit.
svntest.main.file_append(iota_path, 'cheeseburger')
src/subversion/subversion/tests/cmdline/commit_tests.py view on Meta::CPAN
svntest.actions.run_and_verify_svn(None, None, [],
'ci', '-F', log_path, '--force-log')
svntest.main.file_append(mu_path, "2")
# try the same thing, but specifying the file to commit explicitly.
svntest.actions.run_and_verify_svn(None, None, svntest.verify.AnyOutput,
'ci', '-F', log_path, mu_path)
# force it... should succeed.
svntest.actions.run_and_verify_svn(None, None, [],
'ci',
'-F', log_path,
'--force-log', mu_path)
#----------------------------------------------------------------------
def changelist_near_conflict(sbox):
"'svn commit --changelist=foo' above a conflict"
sbox.build()
wc_dir = sbox.wc_dir
iota_path = sbox.ospath('iota')
mu_path = sbox.ospath('A/mu')
gloo_path = sbox.ospath('A/D/H/gloo')
expected_status = make_standard_slew_of_changes(wc_dir)
# Create a changelist.
changelist_name = "logical-changeset"
svntest.actions.run_and_verify_svn(None, None, [],
"changelist", changelist_name,
mu_path, gloo_path)
# Create a conflict (making r2 in the process).
inject_conflict_into_wc(sbox, 'iota', iota_path,
None, expected_status, 2)
# Commit the changelist.
expected_output = svntest.wc.State(wc_dir, {
"A/D/H/gloo" : Item(verb='Adding'),
})
expected_status.tweak("A/D/H/gloo", wc_rev=3, status=" ")
svntest.actions.run_and_verify_commit(wc_dir,
expected_output,
expected_status,
None,
"--changelist=" + changelist_name,
"-m", "msg", wc_dir)
#----------------------------------------------------------------------
def commit_out_of_date_file(sbox):
"try to commit a file that is out-of-date"
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)
pi_path = sbox.ospath('A/D/G/pi')
backup_pi_path = os.path.join(wc_backup, 'A', 'D', 'G', 'pi')
svntest.main.file_append(pi_path, "new line\n")
expected_output = svntest.wc.State(wc_dir, {
"A/D/G/pi" : Item(verb='Sending'),
})
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.tweak("A/D/G/pi", wc_rev=2, status=" ")
svntest.actions.run_and_verify_commit(wc_dir,
expected_output,
expected_status,
None,
"-m", "log message", wc_dir)
svntest.main.file_append(backup_pi_path, "hello")
expected_err = ".*(pi.*out of date|Out of date.*pi).*"
svntest.actions.run_and_verify_svn(None, None, expected_err,
'commit', '-m', 'log message',
wc_backup)
@SkipUnless(server_gets_client_capabilities)
@Issue(2991)
def start_commit_detect_capabilities(sbox):
"start-commit hook sees client capabilities" # Issue #2991
sbox.build()
wc_dir = sbox.wc_dir
repos_dir = sbox.repo_dir
# Create a start-commit hook that detects the "mergeinfo" capability.
hook_text = "import sys\n" + \
"fp = open(sys.argv[1] + '/hooks.log', 'w')\n" + \
"caps = sys.argv[3].split(':')\n" + \
"if 'mergeinfo' in caps:\n" + \
" fp.write('yes')\n" + \
"else:\n" + \
" fp.write('no')\n" + \
"fp.close()\n"
start_commit_hook = svntest.main.get_start_commit_hook_path(repos_dir)
svntest.main.create_python_hook_script(start_commit_hook, hook_text)
# Commit something.
iota_path = sbox.ospath('iota')
svntest.main.file_append(iota_path, "More stuff in iota")
svntest.actions.run_and_verify_svn(None, [], [], 'ci', '--quiet',
'-m', 'log msg', wc_dir)
# Check that "mergeinfo" was detected.
log_path = os.path.join(repos_dir, "hooks.log")
if os.path.exists(log_path):
data = open(log_path).read()
os.unlink(log_path)
else:
raise svntest.verify.SVNUnexpectedOutput("'%s' not found") % log_path
if data != 'yes':
raise svntest.Failure
# Test for issue #3198
@Issue(3198)
def commit_added_missing(sbox):
"commit a missing to-be-added file should fail"
sbox.build()
wc_dir = sbox.wc_dir
mu_path = sbox.ospath('A/mu')
a_path = sbox.ospath('A/a.txt')
b_path = sbox.ospath('A/b.txt')
# Make two copies of mu: a and b
svntest.main.run_svn(None, 'cp', mu_path, a_path)
svntest.main.run_svn(None, 'cp', mu_path, b_path)
# remove b, make it missing
os.remove(b_path)
# Commit, hoping to see an error
svntest.actions.run_and_verify_svn("Commit should have failed",
[], ".* is scheduled for addition, but is missing",
'commit', '-m', 'logmsg', wc_dir)
( run in 2.873 seconds using v1.01-cache-2.11-cpan-0d23b851a93 )