t: fix out-of-tree tests for some git-p4 tests
Both t9835 and t9836 exercise git-p4, but one exercises Python 2 whereas the other one uses Python 3. These tests do not exercise "git p4", but instead they use "git p4.py". This calls the unbuilt version of "git-p4.py" that still has the "#!/usr/bin/env python" shebang, which allows the test to modify which Python version comes first in $PATH, making it possible to force a Python version. But "git-p4.py" is not in our PATH during out-of-tree builds, and thus we cannot locate "git-p4.py". The tests thus break with CMake and Meson. Fix this by instead manually setting up script wrappers that invoke the respective Python interpreter directly. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
154ce05cce
commit
78ad7291df
@@ -8,29 +8,29 @@ failing, and produces maximally sane output in git.'
|
||||
|
||||
. ./lib-git-p4.sh
|
||||
|
||||
python_target_version='3'
|
||||
|
||||
###############################
|
||||
## SECTION REPEATED IN t9835 ##
|
||||
###############################
|
||||
|
||||
# Please note: this test calls "git-p4.py" rather than "git-p4", because the
|
||||
# latter references a specific path so we can't easily force it to run under
|
||||
# the python version we need to.
|
||||
|
||||
python_major_version=$(python -V 2>&1 | cut -c 8)
|
||||
python_target_binary=$(which python$python_target_version)
|
||||
if ! test "$python_major_version" = "$python_target_version" && test "$python_target_binary"
|
||||
# These tests are specific to Python 3. Write a custom script that executes
|
||||
# git-p4 directly with the Python 3 interpreter to ensure that we use that
|
||||
# version even if Git was compiled with Python 2.
|
||||
python_target_binary=$(which python3)
|
||||
if test -n "$python_target_binary"
|
||||
then
|
||||
mkdir temp_python
|
||||
PATH="$(pwd)/temp_python:$PATH" && export PATH
|
||||
ln -s $python_target_binary temp_python/python
|
||||
PATH="$(pwd)/temp_python:$PATH"
|
||||
export PATH
|
||||
|
||||
write_script temp_python/git-p4-python3 <<-EOF
|
||||
exec "$python_target_binary" "$(git --exec-path)/git-p4" "\$@"
|
||||
EOF
|
||||
fi
|
||||
|
||||
python_major_version=$(python -V 2>&1 | cut -c 8)
|
||||
if ! test "$python_major_version" = "$python_target_version"
|
||||
git p4-python3 >err
|
||||
if ! grep 'valid commands' err
|
||||
then
|
||||
skip_all="skipping python$python_target_version-specific git p4 tests; python$python_target_version not available"
|
||||
skip_all="skipping python3 git p4 tests; python3 not available"
|
||||
test_done
|
||||
fi
|
||||
|
||||
@@ -81,14 +81,14 @@ test_expect_success 'init depot' '
|
||||
test_expect_success 'clone non-utf8 repo with strict encoding' '
|
||||
test_when_finished cleanup_git &&
|
||||
test_when_finished remove_user_cache &&
|
||||
test_must_fail git -c git-p4.metadataDecodingStrategy=strict p4.py clone --dest="$git" //depot@all 2>err &&
|
||||
test_must_fail git -c git-p4.metadataDecodingStrategy=strict p4-python3 clone --dest="$git" //depot@all 2>err &&
|
||||
grep "Decoding perforce metadata failed!" err
|
||||
'
|
||||
|
||||
test_expect_success 'check utf-8 contents with passthrough strategy' '
|
||||
test_when_finished cleanup_git &&
|
||||
test_when_finished remove_user_cache &&
|
||||
git -c git-p4.metadataDecodingStrategy=passthrough p4.py clone --dest="$git" //depot@all &&
|
||||
git -c git-p4.metadataDecodingStrategy=passthrough p4-python3 clone --dest="$git" //depot@all &&
|
||||
(
|
||||
cd "$git" &&
|
||||
git log >actual &&
|
||||
@@ -100,7 +100,7 @@ test_expect_success 'check utf-8 contents with passthrough strategy' '
|
||||
test_expect_success 'check latin-1 contents corrupted in git with passthrough strategy' '
|
||||
test_when_finished cleanup_git &&
|
||||
test_when_finished remove_user_cache &&
|
||||
git -c git-p4.metadataDecodingStrategy=passthrough p4.py clone --dest="$git" //depot@all &&
|
||||
git -c git-p4.metadataDecodingStrategy=passthrough p4-python3 clone --dest="$git" //depot@all &&
|
||||
(
|
||||
cd "$git" &&
|
||||
git log >actual &&
|
||||
@@ -114,7 +114,7 @@ test_expect_success 'check latin-1 contents corrupted in git with passthrough st
|
||||
test_expect_success 'check utf-8 contents with fallback strategy' '
|
||||
test_when_finished cleanup_git &&
|
||||
test_when_finished remove_user_cache &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback p4.py clone --dest="$git" //depot@all &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback p4-python3 clone --dest="$git" //depot@all &&
|
||||
(
|
||||
cd "$git" &&
|
||||
git log >actual &&
|
||||
@@ -126,7 +126,7 @@ test_expect_success 'check utf-8 contents with fallback strategy' '
|
||||
test_expect_success 'check latin-1 contents with fallback strategy' '
|
||||
test_when_finished cleanup_git &&
|
||||
test_when_finished remove_user_cache &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback p4.py clone --dest="$git" //depot@all &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback p4-python3 clone --dest="$git" //depot@all &&
|
||||
(
|
||||
cd "$git" &&
|
||||
git log >actual &&
|
||||
@@ -138,7 +138,7 @@ test_expect_success 'check latin-1 contents with fallback strategy' '
|
||||
test_expect_success 'check cp-1252 contents with fallback strategy' '
|
||||
test_when_finished cleanup_git &&
|
||||
test_when_finished remove_user_cache &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback p4.py clone --dest="$git" //depot@all &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback p4-python3 clone --dest="$git" //depot@all &&
|
||||
(
|
||||
cd "$git" &&
|
||||
git log >actual &&
|
||||
@@ -150,7 +150,7 @@ test_expect_success 'check cp-1252 contents with fallback strategy' '
|
||||
test_expect_success 'check cp850 contents parsed with correct fallback' '
|
||||
test_when_finished cleanup_git &&
|
||||
test_when_finished remove_user_cache &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback -c git-p4.metadataFallbackEncoding=cp850 p4.py clone --dest="$git" //depot@all &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback -c git-p4.metadataFallbackEncoding=cp850 p4-python3 clone --dest="$git" //depot@all &&
|
||||
(
|
||||
cd "$git" &&
|
||||
git log >actual &&
|
||||
@@ -162,7 +162,7 @@ test_expect_success 'check cp850 contents parsed with correct fallback' '
|
||||
test_expect_success 'check cp850-only contents escaped when cp1252 is fallback' '
|
||||
test_when_finished cleanup_git &&
|
||||
test_when_finished remove_user_cache &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback p4.py clone --dest="$git" //depot@all &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback p4-python3 clone --dest="$git" //depot@all &&
|
||||
(
|
||||
cd "$git" &&
|
||||
git log >actual &&
|
||||
@@ -174,7 +174,7 @@ test_expect_success 'check cp850-only contents escaped when cp1252 is fallback'
|
||||
test_expect_success 'check cp-1252 contents on later sync after clone with fallback strategy' '
|
||||
test_when_finished cleanup_git &&
|
||||
test_when_finished remove_user_cache &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback p4.py clone --dest="$git" //depot@all &&
|
||||
git -c git-p4.metadataDecodingStrategy=fallback p4-python3 clone --dest="$git" //depot@all &&
|
||||
(
|
||||
cd "$cli" &&
|
||||
P4USER=cp1252_author &&
|
||||
@@ -186,7 +186,7 @@ test_expect_success 'check cp-1252 contents on later sync after clone with fallb
|
||||
(
|
||||
cd "$git" &&
|
||||
|
||||
git p4.py sync --branch=master &&
|
||||
git p4-python3 sync --branch=master &&
|
||||
|
||||
git log p4/master >actual &&
|
||||
grep "sœme more cp-1252 tæxt" actual &&
|
||||
@@ -202,7 +202,7 @@ test_expect_success 'check cp-1252 contents on later sync after clone with fallb
|
||||
test_expect_success 'fallback (both utf-8 and cp-1252 contents handled) is the default with python3' '
|
||||
test_when_finished cleanup_git &&
|
||||
test_when_finished remove_user_cache &&
|
||||
git p4.py clone --dest="$git" //depot@all &&
|
||||
git p4-python3 clone --dest="$git" //depot@all &&
|
||||
(
|
||||
cd "$git" &&
|
||||
git log >actual &&
|
||||
|
||||
Reference in New Issue
Block a user