git/t/t9817-git-p4-exclude.sh
Patrick Steinhardt 63ee933383 t98xx: mark Perforce tests as memory-leak free
All the Perforce tests are free of memory leaks. This went unnoticed
because most folks do not have p4 and p4d installed on their computers.
Consequently, given that the prerequisites for running those tests
aren't fulfilled, `TEST_PASSES_SANITIZE_LEAK=check` won't notice that
those tests are indeed memory leak free.

Mark those tests accordingly.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-07-31 10:05:18 -07:00

110 lines
2.8 KiB
Bash
Executable file

#!/bin/sh
test_description='git p4 tests for excluded paths during clone and sync'
TEST_PASSES_SANITIZE_LEAK=true
. ./lib-git-p4.sh
test_expect_success 'start p4d' '
start_p4d
'
# Create a repo with the structure:
#
# //depot/wanted/foo
# //depot/discard/foo
#
# Check that we can exclude a subdirectory with both
# clone and sync operations.
test_expect_success 'create exclude repo' '
(
cd "$cli" &&
mkdir -p wanted discard &&
echo wanted >wanted/foo &&
echo discard >discard/foo &&
echo discard_file >discard_file &&
echo discard_file_not >discard_file_not &&
p4 add wanted/foo discard/foo discard_file discard_file_not &&
p4 submit -d "initial revision"
)
'
test_expect_success 'check the repo was created correctly' '
test_when_finished cleanup_git &&
git p4 clone --dest="$git" //depot/...@all &&
(
cd "$git" &&
test_path_is_file wanted/foo &&
test_path_is_file discard/foo &&
test_path_is_file discard_file &&
test_path_is_file discard_file_not
)
'
test_expect_success 'clone, excluding part of repo' '
test_when_finished cleanup_git &&
git p4 clone -//depot/discard/... --dest="$git" //depot/...@all &&
(
cd "$git" &&
test_path_is_file wanted/foo &&
test_path_is_missing discard/foo &&
test_path_is_file discard_file &&
test_path_is_file discard_file_not
)
'
test_expect_success 'clone, excluding single file, no trailing /' '
test_when_finished cleanup_git &&
git p4 clone -//depot/discard_file --dest="$git" //depot/...@all &&
(
cd "$git" &&
test_path_is_file wanted/foo &&
test_path_is_file discard/foo &&
test_path_is_missing discard_file &&
test_path_is_file discard_file_not
)
'
test_expect_success 'clone, then sync with exclude' '
test_when_finished cleanup_git &&
git p4 clone -//depot/discard/... --dest="$git" //depot/...@all &&
(
cd "$cli" &&
p4 edit wanted/foo discard/foo discard_file_not &&
date >>wanted/foo &&
date >>discard/foo &&
date >>discard_file_not &&
p4 submit -d "updating" &&
cd "$git" &&
git p4 sync -//depot/discard/... &&
test_path_is_file wanted/foo &&
test_path_is_missing discard/foo &&
test_path_is_file discard_file &&
test_path_is_file discard_file_not
)
'
test_expect_success 'clone, then sync with exclude, no trailing /' '
test_when_finished cleanup_git &&
git p4 clone -//depot/discard/... -//depot/discard_file --dest="$git" //depot/...@all &&
(
cd "$cli" &&
p4 edit wanted/foo discard/foo discard_file_not &&
date >>wanted/foo &&
date >>discard/foo &&
date >>discard_file_not &&
p4 submit -d "updating" &&
cd "$git" &&
git p4 sync -//depot/discard/... -//depot/discard_file &&
test_path_is_file wanted/foo &&
test_path_is_missing discard/foo &&
test_path_is_missing discard_file &&
test_path_is_file discard_file_not
)
'
test_done