Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/tests/cmdline/update_tests.py view on Meta::CPAN
})
svntest.actions.run_and_verify_commit(other_wc, expected_output,
expected_status, None, other_wc)
# Back in the first working copy, create an obstructing path and
# update. The update will flag a tree conflict.
svntest.main.file_write(zeta_path, 'Obstructing file\n')
#svntest.factory.make(sbox, 'svn up')
#exit(0)
# svn up
expected_output = svntest.wc.State(wc_dir, {
'A' : Item(status=' U'),
'A/zeta' : Item(status=' ', treeconflict='C'),
})
expected_disk = svntest.main.greek_state.copy()
expected_disk.add({
'A/zeta' : Item(contents="Obstructing file\n"),
})
expected_status = actions.get_virginal_state(wc_dir, 3)
expected_status.add({
'A/zeta' : Item(status='D ', treeconflict='C', wc_rev='3'),
})
actions.run_and_verify_update(wc_dir, expected_output, expected_disk,
expected_status, None, None, None, None, None, False, wc_dir)
# Now, delete the obstructing path and rerun the update.
os.unlink(zeta_path)
svntest.main.run_svn(None, 'revert', zeta_path)
expected_output = svntest.wc.State(wc_dir, {
})
expected_disk = svntest.main.greek_state.copy()
expected_disk.tweak('A', props = {})
expected_disk.add({
'A/zeta' : Item("New file\n"),
})
expected_status = svntest.actions.get_virginal_state(wc_dir, 3)
expected_status.add({
'A/zeta' : Item(status=' ', wc_rev=3),
})
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
expected_status,
check_props = True)
#----------------------------------------------------------------------
# Detect tree conflicts among files and directories,
# edited or deleted in a deep directory structure.
#
# See use cases 1-3 in notes/tree-conflicts/use-cases.txt for background.
# convenience definitions
leaf_edit = svntest.deeptrees.deep_trees_leaf_edit
tree_del = svntest.deeptrees.deep_trees_tree_del
leaf_del = svntest.deeptrees.deep_trees_leaf_del
disk_after_leaf_edit = svntest.deeptrees.deep_trees_after_leaf_edit
disk_after_leaf_del = svntest.deeptrees.deep_trees_after_leaf_del
disk_after_tree_del = svntest.deeptrees.deep_trees_after_tree_del
disk_empty_dirs = svntest.deeptrees.deep_trees_empty_dirs
deep_trees_conflict_output = svntest.deeptrees.deep_trees_conflict_output
deep_trees_conflict_output_skipped = \
svntest.deeptrees.deep_trees_conflict_output_skipped
deep_trees_status_local_tree_del = \
svntest.deeptrees.deep_trees_status_local_tree_del
deep_trees_status_local_leaf_edit = \
svntest.deeptrees.deep_trees_status_local_leaf_edit
DeepTreesTestCase = svntest.deeptrees.DeepTreesTestCase
def tree_conflicts_on_update_1_1(sbox):
"tree conflicts 1.1: tree del, leaf edit on update"
# use case 1, as in notes/tree-conflicts/use-cases.txt
# 1.1) local tree delete, incoming leaf edit
sbox.build()
expected_output = deep_trees_conflict_output.copy()
expected_output.add({
'DDF/D1/D2' : Item(status=' ', treeconflict='U'),
'DDF/D1/D2/gamma' : Item(status=' ', treeconflict='U'),
'DD/D1/D2' : Item(status=' ', treeconflict='U'),
'DD/D1/D2/epsilon' : Item(status=' ', treeconflict='A'),
'DDD/D1/D2' : Item(status=' ', treeconflict='U'),
'DDD/D1/D2/D3' : Item(status=' ', treeconflict='U'),
'DDD/D1/D2/D3/zeta' : Item(status=' ', treeconflict='A'),
'D/D1/delta' : Item(status=' ', treeconflict='A'),
'DF/D1/beta' : Item(status=' ', treeconflict='U'),
})
expected_disk = disk_empty_dirs.copy()
expected_disk.remove('D/D1', 'DF/D1', 'DD/D1', 'DD/D1/D2',
'DDF/D1', 'DDF/D1/D2',
'DDD/D1', 'DDD/D1/D2', 'DDD/D1/D2/D3')
# The files delta, epsilon, and zeta are incoming additions, but since
# they are all within locally deleted trees they should also be schedule
# for deletion.
expected_status = deep_trees_status_local_tree_del.copy()
expected_status.add({
'D/D1/delta' : Item(status='D '),
'DD/D1/D2/epsilon' : Item(status='D '),
'DDD/D1/D2/D3/zeta' : Item(status='D '),
})
# Update to the target rev.
( run in 1.495 second using v1.01-cache-2.11-cpan-f4a522933cf )