99e37c2560
Use 'test_atexit' to run cleanup commands to stop 'p4d' at the end of the test script or upon interrupt or failure, as it is shorter, simpler, and more robust than registering such cleanup commands in the trap on EXIT in the test scripts. Note that one of the test scripts, 't9801-git-p4-branch.sh', stops and then re-starts 'p4d' twice in the middle of the script; take care that the cleanup functions to stop 'p4d' are only registered once. Note also that 'git p4' tests invoke different functions in the trap on EXIT ('cleanup') and in the last test before 'test_done' ('kill_p4d'). Register both of these functions with 'test_atexit' for now, and a a later patch in this series will then clean up the redundancy. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
131 lines
2.7 KiB
Bash
Executable File
131 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='Clone repositories and keep empty commits'
|
|
|
|
. ./lib-git-p4.sh
|
|
|
|
test_expect_success 'start p4d' '
|
|
start_p4d
|
|
'
|
|
|
|
test_expect_success 'Create a repo' '
|
|
client_view "//depot/... //client/..." &&
|
|
(
|
|
cd "$cli" &&
|
|
|
|
mkdir -p subdir &&
|
|
|
|
>subdir/file1.txt &&
|
|
p4 add subdir/file1.txt &&
|
|
p4 submit -d "Add file 1" &&
|
|
|
|
>file2.txt &&
|
|
p4 add file2.txt &&
|
|
p4 submit -d "Add file 2" &&
|
|
|
|
>subdir/file3.txt &&
|
|
p4 add subdir/file3.txt &&
|
|
p4 submit -d "Add file 3" &&
|
|
|
|
>file4.txt &&
|
|
p4 add file4.txt &&
|
|
p4 submit -d "Add file 4" &&
|
|
|
|
p4 delete subdir/file3.txt &&
|
|
p4 submit -d "Remove file 3" &&
|
|
|
|
p4 delete file4.txt &&
|
|
p4 submit -d "Remove file 4"
|
|
)
|
|
'
|
|
|
|
test_expect_success 'Clone repo root path with all history' '
|
|
client_view "//depot/... //client/..." &&
|
|
test_when_finished cleanup_git &&
|
|
(
|
|
cd "$git" &&
|
|
git init . &&
|
|
git p4 clone --use-client-spec --destination="$git" //depot@all &&
|
|
cat >expect <<-\EOF &&
|
|
Remove file 4
|
|
[git-p4: depot-paths = "//depot/": change = 6]
|
|
|
|
Remove file 3
|
|
[git-p4: depot-paths = "//depot/": change = 5]
|
|
|
|
Add file 4
|
|
[git-p4: depot-paths = "//depot/": change = 4]
|
|
|
|
Add file 3
|
|
[git-p4: depot-paths = "//depot/": change = 3]
|
|
|
|
Add file 2
|
|
[git-p4: depot-paths = "//depot/": change = 2]
|
|
|
|
Add file 1
|
|
[git-p4: depot-paths = "//depot/": change = 1]
|
|
|
|
EOF
|
|
git log --format=%B >actual &&
|
|
test_cmp expect actual
|
|
)
|
|
'
|
|
|
|
test_expect_success 'Clone repo subdir with all history but keep empty commits' '
|
|
client_view "//depot/subdir/... //client/subdir/..." &&
|
|
test_when_finished cleanup_git &&
|
|
(
|
|
cd "$git" &&
|
|
git init . &&
|
|
git config git-p4.keepEmptyCommits true &&
|
|
git p4 clone --use-client-spec --destination="$git" //depot@all &&
|
|
cat >expect <<-\EOF &&
|
|
Remove file 4
|
|
[git-p4: depot-paths = "//depot/": change = 6]
|
|
|
|
Remove file 3
|
|
[git-p4: depot-paths = "//depot/": change = 5]
|
|
|
|
Add file 4
|
|
[git-p4: depot-paths = "//depot/": change = 4]
|
|
|
|
Add file 3
|
|
[git-p4: depot-paths = "//depot/": change = 3]
|
|
|
|
Add file 2
|
|
[git-p4: depot-paths = "//depot/": change = 2]
|
|
|
|
Add file 1
|
|
[git-p4: depot-paths = "//depot/": change = 1]
|
|
|
|
EOF
|
|
git log --format=%B >actual &&
|
|
test_cmp expect actual
|
|
)
|
|
'
|
|
|
|
test_expect_success 'Clone repo subdir with all history' '
|
|
client_view "//depot/subdir/... //client/subdir/..." &&
|
|
test_when_finished cleanup_git &&
|
|
(
|
|
cd "$git" &&
|
|
git init . &&
|
|
git p4 clone --use-client-spec --destination="$git" --verbose //depot@all &&
|
|
cat >expect <<-\EOF &&
|
|
Remove file 3
|
|
[git-p4: depot-paths = "//depot/": change = 5]
|
|
|
|
Add file 3
|
|
[git-p4: depot-paths = "//depot/": change = 3]
|
|
|
|
Add file 1
|
|
[git-p4: depot-paths = "//depot/": change = 1]
|
|
|
|
EOF
|
|
git log --format=%B >actual &&
|
|
test_cmp expect actual
|
|
)
|
|
'
|
|
|
|
test_done
|