diff options
Diffstat (limited to 't')
-rwxr-xr-x | t/t9800-git-p4-basic.sh (renamed from t/t9800-git-p4.sh) | 60 | ||||
-rwxr-xr-x | t/t9803-git-p4-shell-metachars.sh (renamed from t/t9803-git-shell-metachars.sh) | 0 | ||||
-rwxr-xr-x | t/t9805-git-p4-skip-submit-edit.sh (renamed from t/t9805-skip-submit-edit.sh) | 0 | ||||
-rwxr-xr-x | t/t9806-git-p4-options.sh | 170 | ||||
-rwxr-xr-x | t/t9807-git-p4-submit.sh | 92 | ||||
-rwxr-xr-x | t/t9807-submit.sh | 38 | ||||
-rwxr-xr-x | t/t9808-git-p4-chdir.sh (renamed from t/t9808-chdir.sh) | 0 |
7 files changed, 322 insertions, 38 deletions
diff --git a/t/t9800-git-p4.sh b/t/t9800-git-p4-basic.sh index 272de3fea3..04ee20e642 100755 --- a/t/t9800-git-p4.sh +++ b/t/t9800-git-p4-basic.sh @@ -65,6 +65,66 @@ test_expect_success 'git-p4 sync new branch' ' ) ' +test_expect_success 'clone two dirs' ' + ( + cd "$cli" && + mkdir sub1 sub2 && + echo sub1/f1 >sub1/f1 && + echo sub2/f2 >sub2/f2 && + p4 add sub1/f1 && + p4 submit -d "sub1/f1" && + p4 add sub2/f2 && + p4 submit -d "sub2/f2" + ) && + "$GITP4" clone --dest="$git" //depot/sub1 //depot/sub2 && + test_when_finished cleanup_git && + ( + cd "$git" && + git ls-files >lines && + test_line_count = 2 lines && + git log --oneline p4/master >lines && + test_line_count = 1 lines + ) +' + +test_expect_success 'clone two dirs, @all' ' + ( + cd "$cli" && + echo sub1/f3 >sub1/f3 && + p4 add sub1/f3 && + p4 submit -d "sub1/f3" + ) && + "$GITP4" clone --dest="$git" //depot/sub1@all //depot/sub2@all && + test_when_finished cleanup_git && + ( + cd "$git" && + git ls-files >lines && + test_line_count = 3 lines && + git log --oneline p4/master >lines && + test_line_count = 3 lines + ) +' + +test_expect_success 'clone two dirs, @all, conflicting files' ' + ( + cd "$cli" && + echo sub2/f3 >sub2/f3 && + p4 add sub2/f3 && + p4 submit -d "sub2/f3" + ) && + "$GITP4" clone --dest="$git" //depot/sub1@all //depot/sub2@all && + test_when_finished cleanup_git && + ( + cd "$git" && + git ls-files >lines && + test_line_count = 3 lines && + git log --oneline p4/master >lines && + test_line_count = 4 lines && + echo sub2/f3 >expected && + test_cmp expected f3 + ) +' + test_expect_success 'exit when p4 fails to produce marshaled output' ' badp4dir="$TRASH_DIRECTORY/badp4dir" && mkdir "$badp4dir" && diff --git a/t/t9803-git-shell-metachars.sh b/t/t9803-git-p4-shell-metachars.sh index db04375a13..db04375a13 100755 --- a/t/t9803-git-shell-metachars.sh +++ b/t/t9803-git-p4-shell-metachars.sh diff --git a/t/t9805-skip-submit-edit.sh b/t/t9805-git-p4-skip-submit-edit.sh index df929e0555..df929e0555 100755 --- a/t/t9805-skip-submit-edit.sh +++ b/t/t9805-git-p4-skip-submit-edit.sh diff --git a/t/t9806-git-p4-options.sh b/t/t9806-git-p4-options.sh new file mode 100755 index 0000000000..1f1952a657 --- /dev/null +++ b/t/t9806-git-p4-options.sh @@ -0,0 +1,170 @@ +#!/bin/sh + +test_description='git-p4 options' + +. ./lib-git-p4.sh + +test_expect_success 'start p4d' ' + start_p4d +' + +test_expect_success 'init depot' ' + ( + cd "$cli" && + echo file1 >file1 && + p4 add file1 && + p4 submit -d "change 1" && + echo file2 >file2 && + p4 add file2 && + p4 submit -d "change 2" && + echo file3 >file3 && + p4 add file3 && + p4 submit -d "change 3" + ) +' + +test_expect_success 'clone no --git-dir' ' + test_must_fail "$GITP4" clone --git-dir=xx //depot +' + +test_expect_success 'clone --branch' ' + "$GITP4" clone --branch=refs/remotes/p4/sb --dest="$git" //depot && + test_when_finished cleanup_git && + ( + cd "$git" && + git ls-files >files && + test_line_count = 0 files && + test_path_is_file .git/refs/remotes/p4/sb + ) +' + +test_expect_success 'clone --changesfile' ' + cf="$TRASH_DIRECTORY/cf" && + test_when_finished "rm \"$cf\"" && + printf "1\n3\n" >"$cf" && + "$GITP4" clone --changesfile="$cf" --dest="$git" //depot && + test_when_finished cleanup_git && + ( + cd "$git" && + git log --oneline p4/master >lines && + test_line_count = 2 lines + test_path_is_file file1 && + test_path_is_missing file2 && + test_path_is_file file3 + ) +' + +test_expect_success 'clone --changesfile, @all' ' + cf="$TRASH_DIRECTORY/cf" && + test_when_finished "rm \"$cf\"" && + printf "1\n3\n" >"$cf" && + test_must_fail "$GITP4" clone --changesfile="$cf" --dest="$git" //depot@all +' + +# imports both master and p4/master in refs/heads +# requires --import-local on sync to find p4 refs/heads +# does not update master on sync, just p4/master +test_expect_success 'clone/sync --import-local' ' + "$GITP4" clone --import-local --dest="$git" //depot@1,2 && + test_when_finished cleanup_git && + ( + cd "$git" && + git log --oneline refs/heads/master >lines && + test_line_count = 2 lines && + git log --oneline refs/heads/p4/master >lines && + test_line_count = 2 lines && + test_must_fail "$GITP4" sync && + + "$GITP4" sync --import-local && + git log --oneline refs/heads/master >lines && + test_line_count = 2 lines && + git log --oneline refs/heads/p4/master >lines && + test_line_count = 3 lines + ) +' + +test_expect_success 'clone --max-changes' ' + "$GITP4" clone --dest="$git" --max-changes 2 //depot@all && + test_when_finished cleanup_git && + ( + cd "$git" && + git log --oneline refs/heads/master >lines && + test_line_count = 2 lines + ) +' + +test_expect_success 'clone --keep-path' ' + ( + cd "$cli" && + mkdir -p sub/dir && + echo f4 >sub/dir/f4 && + p4 add sub/dir/f4 && + p4 submit -d "change 4" + ) && + "$GITP4" clone --dest="$git" --keep-path //depot/sub/dir@all && + test_when_finished cleanup_git && + ( + cd "$git" && + test_path_is_missing f4 && + test_path_is_file sub/dir/f4 + ) && + cleanup_git && + "$GITP4" clone --dest="$git" //depot/sub/dir@all && + ( + cd "$git" && + test_path_is_file f4 && + test_path_is_missing sub/dir/f4 + ) +' + +# clone --use-client-spec must still specify a depot path +# if given, it should rearrange files according to client spec +# when it has view lines that match the depot path +# XXX: should clone/sync just use the client spec exactly, rather +# than needing depot paths? +test_expect_success 'clone --use-client-spec' ' + ( + # big usage message + exec >/dev/null && + test_must_fail "$GITP4" clone --dest="$git" --use-client-spec + ) && + cli2="$TRASH_DIRECTORY/cli2" && + mkdir -p "$cli2" && + test_when_finished "rmdir \"$cli2\"" && + ( + cd "$cli2" && + p4 client -i <<-EOF + Client: client2 + Description: client2 + Root: $cli2 + View: //depot/sub/... //client2/bus/... + EOF + ) && + P4CLIENT=client2 && + test_when_finished cleanup_git && + "$GITP4" clone --dest="$git" --use-client-spec //depot/... && + ( + cd "$git" && + test_path_is_file bus/dir/f4 && + test_path_is_file file1 + ) && + cleanup_git && + + # same thing again, this time with variable instead of option + mkdir "$git" && + ( + cd "$git" && + git init && + git config git-p4.useClientSpec true && + "$GITP4" sync //depot/... && + git checkout -b master p4/master && + test_path_is_file bus/dir/f4 && + test_path_is_file file1 + ) +' + +test_expect_success 'kill p4d' ' + kill_p4d +' + +test_done diff --git a/t/t9807-git-p4-submit.sh b/t/t9807-git-p4-submit.sh new file mode 100755 index 0000000000..b1f61e3db5 --- /dev/null +++ b/t/t9807-git-p4-submit.sh @@ -0,0 +1,92 @@ +#!/bin/sh + +test_description='git-p4 submit' + +. ./lib-git-p4.sh + +test_expect_success 'start p4d' ' + start_p4d +' + +test_expect_success 'init depot' ' + ( + cd "$cli" && + echo file1 >file1 && + p4 add file1 && + p4 submit -d "change 1" + ) +' + +test_expect_success 'submit with no client dir' ' + test_when_finished cleanup_git && + "$GITP4" clone --dest="$git" //depot && + ( + cd "$git" && + echo file2 >file2 && + git add file2 && + git commit -m "git commit 2" && + rm -rf "$cli" && + git config git-p4.skipSubmitEdit true && + "$GITP4" submit + ) +' + +# make two commits, but tell it to apply only from HEAD^ +test_expect_success 'submit --origin' ' + test_when_finished cleanup_git && + "$GITP4" clone --dest="$git" //depot && + ( + cd "$git" && + test_commit "file3" && + test_commit "file4" && + git config git-p4.skipSubmitEdit true && + "$GITP4" submit --origin=HEAD^ + ) && + ( + cd "$cli" && + p4 sync && + test_path_is_missing "file3.t" && + test_path_is_file "file4.t" + ) +' + +test_expect_success 'submit with allowSubmit' ' + test_when_finished cleanup_git && + "$GITP4" clone --dest="$git" //depot && + ( + cd "$git" && + test_commit "file5" && + git config git-p4.skipSubmitEdit true && + git config git-p4.allowSubmit "nobranch" && + test_must_fail "$GITP4" submit && + git config git-p4.allowSubmit "nobranch,master" && + "$GITP4" submit + ) +' + +test_expect_success 'submit with master branch name from argv' ' + test_when_finished cleanup_git && + "$GITP4" clone --dest="$git" //depot && + ( + cd "$git" && + test_commit "file6" && + git config git-p4.skipSubmitEdit true && + test_must_fail "$GITP4" submit nobranch && + git branch otherbranch && + git reset --hard HEAD^ && + test_commit "file7" && + "$GITP4" submit otherbranch + ) && + ( + cd "$cli" && + p4 sync && + test_path_is_file "file6.t" && + test_path_is_missing "file7.t" + ) +' + +test_expect_success 'kill p4d' ' + kill_p4d +' + +test_done diff --git a/t/t9807-submit.sh b/t/t9807-submit.sh deleted file mode 100755 index 2cb724e14c..0000000000 --- a/t/t9807-submit.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -test_description='git-p4 submit' - -. ./lib-git-p4.sh - -test_expect_success 'start p4d' ' - start_p4d -' - -test_expect_success 'init depot' ' - ( - cd "$cli" && - echo file1 >file1 && - p4 add file1 && - p4 submit -d "change 1" - ) -' - -test_expect_success 'submit with no client dir' ' - test_when_finished cleanup_git && - "$GITP4" clone --dest="$git" //depot && - ( - cd "$git" && - echo file2 >file2 && - git add file2 && - git commit -m "git commit 2" && - rm -rf "$cli" && - git config git-p4.skipSubmitEdit true && - "$GITP4" submit - ) -' - -test_expect_success 'kill p4d' ' - kill_p4d -' - -test_done diff --git a/t/t9808-chdir.sh b/t/t9808-git-p4-chdir.sh index eb8cc9523e..eb8cc9523e 100755 --- a/t/t9808-chdir.sh +++ b/t/t9808-git-p4-chdir.sh |