Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/tests/cmdline/update_tests.py view on Meta::CPAN
'E/alpha' : Item("More new content"),
'E/beta' : Item("New content"),
'F' : Item(),
})
expected_skip = wc.State(B_COPY_path, { })
svntest.actions.run_and_verify_merge(B_COPY_path, '6', '7',
sbox.repo_url + '/A/B', None,
expected_output,
expected_mergeinfo_output,
expected_elision_output,
expected_merge_disk,
expected_merge_status,
expected_skip,
None, None, None, None,
None, 1,alpha_COPY_path)
# Update just A/B_COPY/E. The mergeinfo (r3-5,7) reset on
# A/B_COPY/E by the udpate is identical to the local info on
# A/B_COPY, so should elide, leaving no mereginfo on E.
expected_output = wc.State(wc_dir, {
'A/B_COPY/E/alpha' : Item(status='GG'),
'A/B_COPY/E/' : Item(status=' U'),
})
expected_status.tweak('A/B_COPY', status=' M', wc_rev=7)
expected_status.tweak('A/B_COPY/E', status=' ', wc_rev=8)
expected_status.tweak('A/B_COPY/E/alpha', wc_rev=8)
expected_status.tweak('A/B_COPY/E/beta', wc_rev=8)
expected_disk.tweak('A/B_COPY',
props={SVN_PROP_MERGEINFO : '/A/B:3-5,7'})
expected_disk.tweak('A/B_COPY/E',
props={SVN_PROP_MERGEINFO : '/A/B/E:3-5,7'})
expected_disk.tweak('A/B_COPY/E/alpha', contents="More new content",
props={})
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
expected_status,
None, None, None,
None, None, 1, E_COPY_path)
#----------------------------------------------------------------------
# Very obscure bug: Issue #2977.
# Let's say there's a revision with
# $ svn mv b c
# $ svn mv a b
# $ svn ci
# and a later revision that modifies b. We then try a fresh checkout. If
# the server happens to send us 'b' first, then when it later gets 'c'
# (with a copyfrom of 'b') it might try to use the 'b' in the wc as the
# copyfrom base. This is wrong, because 'b' was changed later; however,
# due to a bug, the setting of svn:entry:committed-rev on 'b' is not being
# properly seen by the client, and it chooses the wrong base. Corruption!
#
# Note that because this test depends on the order that the server sends
# changes, it is very fragile; even changing the file names can avoid
# triggering the bug.
def update_copied_from_replaced_and_changed(sbox):
"update chooses right copyfrom for double move"
sbox.build()
wc_dir = sbox.wc_dir
fn1_relpath = 'A/B/E/aardvark'
fn2_relpath = 'A/B/E/alpha'
fn3_relpath = 'A/B/E/beta'
fn1_path = sbox.ospath(fn1_relpath)
fn2_path = sbox.ospath(fn2_relpath)
fn3_path = sbox.ospath(fn3_relpath)
# Move fn2 to fn1
svntest.actions.run_and_verify_svn(None, None, [],
'mv', fn2_path, fn1_path)
# Move fn3 to fn2
svntest.actions.run_and_verify_svn(None, None, [],
'mv', fn3_path, fn2_path)
# Commit that change, creating r2.
expected_output = svntest.wc.State(wc_dir, {
fn1_relpath : Item(verb='Adding'),
fn2_relpath : Item(verb='Replacing'),
fn3_relpath : Item(verb='Deleting'),
})
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.remove(fn2_relpath, fn3_relpath)
expected_status.add({
fn1_relpath : Item(status=' ', wc_rev=2),
fn2_relpath : Item(status=' ', wc_rev=2),
})
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
# Modify fn2.
fn2_final_contents = "I have new contents for the middle file."
svntest.main.file_write(fn2_path, fn2_final_contents)
# Commit the changes, creating r3.
expected_output = svntest.wc.State(wc_dir, {
fn2_relpath : Item(verb='Sending'),
})
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.remove(fn2_relpath, fn3_relpath)
expected_status.add({
fn1_relpath : Item(status=' ', wc_rev=2),
fn2_relpath : Item(status=' ', wc_rev=3),
})
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
# Go back to r1.
( run in 0.601 second using v1.01-cache-2.11-cpan-b16cb0d3907 )