#!/bin/sh test_description='git p4 directory/file bug handling This test creates files and directories with the same name in perforce and checks that git-p4 recovers from the error at the same time as the perforce repository.' TEST_PASSES_SANITIZE_LEAK=true . ./lib-git-p4.sh test_expect_success 'start p4d' ' start_p4d && { p4 configure set submit.collision.check=0 || :; } ' test_expect_success 'init depot' ' ( cd "$cli" && touch add_file_add_dir_del_file add_file_add_dir_del_dir && p4 add add_file_add_dir_del_file add_file_add_dir_del_dir && mkdir add_dir_add_file_del_file add_dir_add_file_del_dir && touch add_dir_add_file_del_file/file add_dir_add_file_del_dir/file && p4 add add_dir_add_file_del_file/file add_dir_add_file_del_dir/file && p4 submit -d "add initial" && rm -f add_file_add_dir_del_file add_file_add_dir_del_dir && mkdir add_file_add_dir_del_file add_file_add_dir_del_dir && touch add_file_add_dir_del_file/file add_file_add_dir_del_dir/file && p4 add add_file_add_dir_del_file/file add_file_add_dir_del_dir/file && rm -rf add_dir_add_file_del_file add_dir_add_file_del_dir && touch add_dir_add_file_del_file add_dir_add_file_del_dir && p4 add add_dir_add_file_del_file add_dir_add_file_del_dir && p4 submit -d "add conflicting" && p4 delete -k add_file_add_dir_del_file && p4 delete -k add_file_add_dir_del_dir/file && p4 delete -k add_dir_add_file_del_file && p4 delete -k add_dir_add_file_del_dir/file && p4 submit -d "delete conflicting" && p4 delete -k "add_file_add_dir_del_file/file" && p4 delete -k "add_file_add_dir_del_dir" && p4 delete -k "add_dir_add_file_del_file/file" && p4 delete -k "add_dir_add_file_del_dir" && p4 submit -d "delete remaining" ) ' test_expect_success 'clone with git-p4' ' git p4 clone --dest="$git" //depot/@1,3 ' test_expect_success 'check contents' ' test_path_is_dir "$git/add_file_add_dir_del_file" && test_path_is_file "$git/add_file_add_dir_del_dir" && test_path_is_dir "$git/add_dir_add_file_del_file" && test_path_is_file "$git/add_dir_add_file_del_dir" ' test_expect_success 'rebase and check empty' ' git -C "$git" p4 rebase && test_path_is_missing "$git/add_file_add_dir_del_file" && test_path_is_missing "$git/add_file_add_dir_del_dir" && test_path_is_missing "$git/add_dir_add_file_del_file" && test_path_is_missing "$git/add_dir_add_file_del_dir" ' test_done