#!/bin/sh global test_description := ''git p4 wildcards'' source ./lib-git-p4.sh test_expect_success 'start p4d' ' start_p4d ' test_expect_success 'add p4 files with wildcards in the names' ' ( cd "$cli" && printf "file2\nhas\nsome\nrandom\ntext\n" >file2 && p4 add file2 && echo file-wild-hash >file-wild#hash && if test_have_prereq !MINGW,!CYGWIN then echo file-wild-star >file-wild\*star fi && echo file-wild-at >file-wild@at && echo file-wild-percent >file-wild%percent && p4 add -f file-wild* && p4 submit -d "file wildcards" ) ' test_expect_success 'wildcard files git p4 clone' ' git p4 clone --dest="$git" //depot && test_when_finished cleanup_git && ( cd "$git" && test -f file-wild#hash && if test_have_prereq !MINGW,!CYGWIN then test -f file-wild\*star fi && test -f file-wild@at && test -f file-wild%percent ) ' test_expect_success 'wildcard files submit back to p4, add' ' test_when_finished cleanup_git && git p4 clone --dest="$git" //depot && ( cd "$git" && echo git-wild-hash >git-wild#hash && if test_have_prereq !MINGW,!CYGWIN then echo git-wild-star >git-wild\*star fi && echo git-wild-at >git-wild@at && echo git-wild-percent >git-wild%percent && git add git-wild* && git commit -m "add some wildcard filenames" && git config git-p4.skipSubmitEdit true && git p4 submit ) && ( cd "$cli" && test_path_is_file git-wild#hash && if test_have_prereq !MINGW,!CYGWIN then test_path_is_file git-wild\*star fi && test_path_is_file git-wild@at && test_path_is_file git-wild%percent ) ' test_expect_success 'wildcard files submit back to p4, modify' ' test_when_finished cleanup_git && git p4 clone --dest="$git" //depot && ( cd "$git" && echo new-line >>git-wild#hash && if test_have_prereq !MINGW,!CYGWIN then echo new-line >>git-wild\*star fi && echo new-line >>git-wild@at && echo new-line >>git-wild%percent && git add git-wild* && git commit -m "modify the wildcard files" && git config git-p4.skipSubmitEdit true && git p4 submit ) && ( cd "$cli" && test_line_count = 2 git-wild#hash && if test_have_prereq !MINGW,!CYGWIN then test_line_count = 2 git-wild\*star fi && test_line_count = 2 git-wild@at && test_line_count = 2 git-wild%percent ) ' test_expect_success 'wildcard files submit back to p4, copy' ' test_when_finished cleanup_git && git p4 clone --dest="$git" //depot && ( cd "$git" && cp file2 git-wild-cp#hash && git add git-wild-cp#hash && cp git-wild#hash file-wild-3 && git add file-wild-3 && git commit -m "wildcard copies" && git config git-p4.detectCopies true && git config git-p4.detectCopiesHarder true && git config git-p4.skipSubmitEdit true && git p4 submit ) && ( cd "$cli" && test_path_is_file git-wild-cp#hash && test_path_is_file file-wild-3 ) ' test_expect_success 'wildcard files submit back to p4, rename' ' test_when_finished cleanup_git && git p4 clone --dest="$git" //depot && ( cd "$git" && git mv git-wild@at file-wild-4 && git mv file-wild-3 git-wild-cp%percent && git commit -m "wildcard renames" && git config git-p4.detectRenames true && git config git-p4.skipSubmitEdit true && git p4 submit ) && ( cd "$cli" && test_path_is_missing git-wild@at && test_path_is_file git-wild-cp%percent ) ' test_expect_success 'wildcard files submit back to p4, delete' ' test_when_finished cleanup_git && git p4 clone --dest="$git" //depot && ( cd "$git" && git rm git-wild* && git commit -m "delete the wildcard files" && git config git-p4.skipSubmitEdit true && git p4 submit ) && ( cd "$cli" && test_path_is_missing git-wild#hash && if test_have_prereq !MINGW,!CYGWIN then test_path_is_missing git-wild\*star fi && test_path_is_missing git-wild@at && test_path_is_missing git-wild%percent ) ' test_expect_success 'p4 deleted a wildcard file' ' ( cd "$cli" && echo "wild delete test" >wild@delete && p4 add -f wild@delete && p4 submit -d "add wild@delete" ) && test_when_finished cleanup_git && git p4 clone --dest="$git" //depot && ( cd "$git" && test_path_is_file wild@delete ) && ( cd "$cli" && # must use its encoded name p4 delete wild%40delete && p4 submit -d "delete wild@delete" ) && ( cd "$git" && git p4 sync && git merge --ff-only p4/master && test_path_is_missing wild@delete ) ' test_expect_success 'wildcard files requiring keyword scrub' ' ( cd "$cli" && cat <<-\EOF >scrub@wild && $Id$ line2 EOF p4 add -t text+k -f scrub@wild && p4 submit -d "scrub at wild" ) && test_when_finished cleanup_git && git p4 clone --dest="$git" //depot && ( cd "$git" && git config git-p4.skipSubmitEdit true && git config git-p4.attemptRCSCleanup true && sed "s/^line2/line2 edit/" scrub@wild.tmp && mv -f scrub@wild.tmp scrub@wild && git commit -m "scrub at wild line2 edit" scrub@wild && git p4 submit ) ' test_expect_success 'kill p4d' ' kill_p4d ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"git p4 wildcards">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./lib-git-p4.sh)}) (C {(test_expect_success)} {(SQ <"start p4d">)} {(SQ <"\n"> <"\tstart_p4d\n">)}) (C {(test_expect_success)} {(SQ <"add p4 files with wildcards in the names">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\t\tprintf \"file2\\nhas\\nsome\\nrandom\\ntext\\n\" >file2 &&\n"> <"\t\tp4 add file2 &&\n"> <"\t\techo file-wild-hash >file-wild#hash &&\n"> <"\t\tif test_have_prereq !MINGW,!CYGWIN\n"> <"\t\tthen\n"> <"\t\t\techo file-wild-star >file-wild\\*star\n"> <"\t\tfi &&\n"> <"\t\techo file-wild-at >file-wild@at &&\n"> <"\t\techo file-wild-percent >file-wild%percent &&\n"> <"\t\tp4 add -f file-wild* &&\n"> <"\t\tp4 submit -d \"file wildcards\"\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"wildcard files git p4 clone">)} { (SQ <"\n"> <"\tgit p4 clone --dest=\"$git\" //depot &&\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\ttest -f file-wild#hash &&\n"> <"\t\tif test_have_prereq !MINGW,!CYGWIN\n"> <"\t\tthen\n"> <"\t\t\ttest -f file-wild\\*star\n"> <"\t\tfi &&\n"> <"\t\ttest -f file-wild@at &&\n"> <"\t\ttest -f file-wild%percent\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"wildcard files submit back to p4, add">)} { (SQ <"\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\tgit p4 clone --dest=\"$git\" //depot &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\techo git-wild-hash >git-wild#hash &&\n"> <"\t\tif test_have_prereq !MINGW,!CYGWIN\n"> <"\t\tthen\n"> <"\t\t\techo git-wild-star >git-wild\\*star\n"> <"\t\tfi &&\n"> <"\t\techo git-wild-at >git-wild@at &&\n"> <"\t\techo git-wild-percent >git-wild%percent &&\n"> <"\t\tgit add git-wild* &&\n"> <"\t\tgit commit -m \"add some wildcard filenames\" &&\n"> <"\t\tgit config git-p4.skipSubmitEdit true &&\n"> <"\t\tgit p4 submit\n"> <"\t) &&\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\t\ttest_path_is_file git-wild#hash &&\n"> <"\t\tif test_have_prereq !MINGW,!CYGWIN\n"> <"\t\tthen\n"> <"\t\t\ttest_path_is_file git-wild\\*star\n"> <"\t\tfi &&\n"> <"\t\ttest_path_is_file git-wild@at &&\n"> <"\t\ttest_path_is_file git-wild%percent\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"wildcard files submit back to p4, modify">)} { (SQ <"\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\tgit p4 clone --dest=\"$git\" //depot &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\techo new-line >>git-wild#hash &&\n"> <"\t\tif test_have_prereq !MINGW,!CYGWIN\n"> <"\t\tthen\n"> <"\t\t\techo new-line >>git-wild\\*star\n"> <"\t\tfi &&\n"> <"\t\techo new-line >>git-wild@at &&\n"> <"\t\techo new-line >>git-wild%percent &&\n"> <"\t\tgit add git-wild* &&\n"> <"\t\tgit commit -m \"modify the wildcard files\" &&\n"> <"\t\tgit config git-p4.skipSubmitEdit true &&\n"> <"\t\tgit p4 submit\n"> <"\t) &&\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\t\ttest_line_count = 2 git-wild#hash &&\n"> <"\t\tif test_have_prereq !MINGW,!CYGWIN\n"> <"\t\tthen\n"> <"\t\t\ttest_line_count = 2 git-wild\\*star\n"> <"\t\tfi &&\n"> <"\t\ttest_line_count = 2 git-wild@at &&\n"> <"\t\ttest_line_count = 2 git-wild%percent\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"wildcard files submit back to p4, copy">)} { (SQ <"\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\tgit p4 clone --dest=\"$git\" //depot &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tcp file2 git-wild-cp#hash &&\n"> <"\t\tgit add git-wild-cp#hash &&\n"> <"\t\tcp git-wild#hash file-wild-3 &&\n"> <"\t\tgit add file-wild-3 &&\n"> <"\t\tgit commit -m \"wildcard copies\" &&\n"> <"\t\tgit config git-p4.detectCopies true &&\n"> <"\t\tgit config git-p4.detectCopiesHarder true &&\n"> <"\t\tgit config git-p4.skipSubmitEdit true &&\n"> <"\t\tgit p4 submit\n"> <"\t) &&\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\t\ttest_path_is_file git-wild-cp#hash &&\n"> <"\t\ttest_path_is_file file-wild-3\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"wildcard files submit back to p4, rename">)} { (SQ <"\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\tgit p4 clone --dest=\"$git\" //depot &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit mv git-wild@at file-wild-4 &&\n"> <"\t\tgit mv file-wild-3 git-wild-cp%percent &&\n"> <"\t\tgit commit -m \"wildcard renames\" &&\n"> <"\t\tgit config git-p4.detectRenames true &&\n"> <"\t\tgit config git-p4.skipSubmitEdit true &&\n"> <"\t\tgit p4 submit\n"> <"\t) &&\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\t\ttest_path_is_missing git-wild@at &&\n"> <"\t\ttest_path_is_file git-wild-cp%percent\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"wildcard files submit back to p4, delete">)} { (SQ <"\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\tgit p4 clone --dest=\"$git\" //depot &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit rm git-wild* &&\n"> <"\t\tgit commit -m \"delete the wildcard files\" &&\n"> <"\t\tgit config git-p4.skipSubmitEdit true &&\n"> <"\t\tgit p4 submit\n"> <"\t) &&\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\t\ttest_path_is_missing git-wild#hash &&\n"> <"\t\tif test_have_prereq !MINGW,!CYGWIN\n"> <"\t\tthen\n"> <"\t\t\ttest_path_is_missing git-wild\\*star\n"> <"\t\tfi &&\n"> <"\t\ttest_path_is_missing git-wild@at &&\n"> <"\t\ttest_path_is_missing git-wild%percent\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"p4 deleted a wildcard file">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\t\techo \"wild delete test\" >wild@delete &&\n"> <"\t\tp4 add -f wild@delete &&\n"> <"\t\tp4 submit -d \"add wild@delete\"\n"> <"\t) &&\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\tgit p4 clone --dest=\"$git\" //depot &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\ttest_path_is_file wild@delete\n"> <"\t) &&\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\t\t# must use its encoded name\n"> <"\t\tp4 delete wild%40delete &&\n"> <"\t\tp4 submit -d \"delete wild@delete\"\n"> <"\t) &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit p4 sync &&\n"> <"\t\tgit merge --ff-only p4/master &&\n"> <"\t\ttest_path_is_missing wild@delete\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"wildcard files requiring keyword scrub">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> <"\t\tcat <<-\\EOF >scrub@wild &&\n"> <"\t\t$Id$\n"> <"\t\tline2\n"> <"\t\tEOF\n"> <"\t\tp4 add -t text+k -f scrub@wild &&\n"> <"\t\tp4 submit -d \"scrub at wild\"\n"> <"\t) &&\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\tgit p4 clone --dest=\"$git\" //depot &&\n"> <"\t(\n"> <"\t\tcd \"$git\" &&\n"> <"\t\tgit config git-p4.skipSubmitEdit true &&\n"> <"\t\tgit config git-p4.attemptRCSCleanup true &&\n"> <"\t\tsed \"s/^line2/line2 edit/\" scrub@wild.tmp &&\n"> <"\t\tmv -f scrub@wild.tmp scrub@wild &&\n"> <"\t\tgit commit -m \"scrub at wild line2 edit\" scrub@wild &&\n"> <"\t\tgit p4 submit\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"kill p4d">)} {(SQ <"\n"> <"\tkill_p4d\n">)}) (C {(test_done)}) ] )