Message ID | 20241211-pks-meson-ci-v1-6-28d18b494374@pks.im (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | ci: wire up support for Meson | expand |
Patrick Steinhardt <ps@pks.im> writes: > 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" so that the unbuilt version of "git-p4.py" > is used that has "#!/usr/bin/env python" as shebang instead of the > replaced shebang. > > 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> > --- > t/t9835-git-p4-metadata-encoding-python2.sh | 48 ++++++++++++++------------- > t/t9836-git-p4-metadata-encoding-python3.sh | 50 ++++++++++++++--------------- > 2 files changed, 50 insertions(+), 48 deletions(-) > > diff --git a/t/t9835-git-p4-metadata-encoding-python2.sh b/t/t9835-git-p4-metadata-encoding-python2.sh > index 036bf79c6674f6f1f0d667c7270674168428ffee..02f9ec09053890a4d41b7dc95644066d6481bbb6 100755 > --- a/t/t9835-git-p4-metadata-encoding-python2.sh > +++ b/t/t9835-git-p4-metadata-encoding-python2.sh > @@ -14,23 +14,25 @@ python_target_version='2' > ## SECTION REPEATED IN t9836 ## > ############################### > > -# 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 2. Write a custom script that executes > +# git-p4 directly with the Python 2 interpreter to ensure that we use that > +# version even if Git was compiled with Python 3. > +python_target_binary=$(which python2) > +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-python2 <<-EOF > + exec "$python_target_binary" "$(git --exec-path)/git-p4" "\$@" > + EOF > fi > So if the python version (2 here), is available, we create a temp script which will use that version. That script is then used in all the commands below. Makes sense. This is similarly replicated in `t9836` but with Python 3. [snip]
On Thu, Dec 12, 2024 at 02:53:47AM -0800, karthik nayak wrote: > Patrick Steinhardt <ps@pks.im> writes: > > diff --git a/t/t9835-git-p4-metadata-encoding-python2.sh b/t/t9835-git-p4-metadata-encoding-python2.sh > > index 036bf79c6674f6f1f0d667c7270674168428ffee..02f9ec09053890a4d41b7dc95644066d6481bbb6 100755 > > --- a/t/t9835-git-p4-metadata-encoding-python2.sh > > +++ b/t/t9835-git-p4-metadata-encoding-python2.sh > > @@ -14,23 +14,25 @@ python_target_version='2' > > ## SECTION REPEATED IN t9836 ## > > ############################### > > > > -# 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 2. Write a custom script that executes > > +# git-p4 directly with the Python 2 interpreter to ensure that we use that > > +# version even if Git was compiled with Python 3. > > +python_target_binary=$(which python2) > > +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-python2 <<-EOF > > + exec "$python_target_binary" "$(git --exec-path)/git-p4" "\$@" > > + EOF > > fi > > > > So if the python version (2 here), is available, we create a temp script > which will use that version. That script is then used in all the > commands below. Makes sense. > > This is similarly replicated in `t9836` but with Python 3. Yeah. This whole setup is just plain awkward from my point of view. Another option would be to accept reality and stop supporting Python 2 altogether. But doing that as part of this patch series did not feel like a good idea to me. Thanks for your review! Patrick
Patrick Steinhardt <ps@pks.im> writes: > 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" so that the unbuilt version of "git-p4.py" > is used that has "#!/usr/bin/env python" as shebang instead of the > replaced shebang. It took me a while to figure out what you mean by "the replaced shebang"? I think you mean something like: These tests do not exercise "git p4", but instead they use "git p4.py". This calls the unbuilt version of "git-p4.py", which has the "#!/usr/bin/env python" shebang. This allows the test to modify which `python` 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. I like this approach, way more explicit now the Python version is in the command itself. > > Signed-off-by: Patrick Steinhardt <ps@pks.im> > --- > t/t9835-git-p4-metadata-encoding-python2.sh | 48 ++++++++++++++------------- > t/t9836-git-p4-metadata-encoding-python3.sh | 50 ++++++++++++++--------------- > 2 files changed, 50 insertions(+), 48 deletions(-) > > diff --git a/t/t9835-git-p4-metadata-encoding-python2.sh b/t/t9835-git-p4-metadata-encoding-python2.sh > index 036bf79c6674f6f1f0d667c7270674168428ffee..02f9ec09053890a4d41b7dc95644066d6481bbb6 100755 > --- a/t/t9835-git-p4-metadata-encoding-python2.sh > +++ b/t/t9835-git-p4-metadata-encoding-python2.sh > @@ -14,23 +14,25 @@ python_target_version='2' > ## SECTION REPEATED IN t9836 ## To be honest, I don't understand why this section wasn't put in a function in lib-git-p4.sh in the first place, instead of duplicating? Anyhow, I think for two test files it's fine to duplicate this code, and after all you're not changing that. But I've noticed you are no longer using `python_target_version`. I would suggest to either remove the variable, or use it again so the code between the two test files is identical again. Doing the latter would probably mean you also need to create a variable like `p4_python=p4-python$python_target_version` and use `$p4_python` instead of `p4-python2` throughout the script, so I'm not sure that improves things. > ############################### > > -# 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 2. Write a custom script that executes > +# git-p4 directly with the Python 2 interpreter to ensure that we use that > +# version even if Git was compiled with Python 3. > +python_target_binary=$(which python2) > +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-python2 <<-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-python2 >err > +if ! grep 'valid commands' err I like this sanity check, this verifies if the command actually works: Thus the output when the script is properly created: usage: /home/toon/devel/git/git-p4 <command> [options] valid commands: branches, clone, sync, submit, unshelve, commit, rebase Try /home/toon/devel/git/git-p4 <command> --help for command specific help. And when the script was not written: git: 'p4-python2' is not a git command. See 'git --help'. I noticed though, the stderr output isn's shallowed into /dev/null, resulting the output for the test to be the following if Python 2 is not found: make[2]: Entering directory '/home/toon/devel/git/t' *** t9835-git-p4-metadata-encoding-python2.sh *** which: no python2 in (/home/toon/devel/git/bin-wrappers:/home/toon/.local/bin:[snip]) git: 'p4-python2' is not a git command. See 'git --help'. not ok 1 - start p4d I think that's totally fine though, it's giving the user proper information about what is wrong. -- Toon
On Fri, Dec 13, 2024 at 11:00:23AM +0100, Toon Claes wrote: > Patrick Steinhardt <ps@pks.im> writes: > > diff --git a/t/t9835-git-p4-metadata-encoding-python2.sh b/t/t9835-git-p4-metadata-encoding-python2.sh > > index 036bf79c6674f6f1f0d667c7270674168428ffee..02f9ec09053890a4d41b7dc95644066d6481bbb6 100755 > > --- a/t/t9835-git-p4-metadata-encoding-python2.sh > > +++ b/t/t9835-git-p4-metadata-encoding-python2.sh > > @@ -14,23 +14,25 @@ python_target_version='2' > > ## SECTION REPEATED IN t9836 ## > > To be honest, I don't understand why this section wasn't put in a > function in lib-git-p4.sh in the first place, instead of duplicating? > Anyhow, I think for two test files it's fine to duplicate this code, and > after all you're not changing that. > > But I've noticed you are no longer using `python_target_version`. I > would suggest to either remove the variable, or use it again so the code > between the two test files is identical again. Doing the latter would > probably mean you also need to create a variable like > `p4_python=p4-python$python_target_version` and use `$p4_python` instead > of `p4-python2` throughout the script, so I'm not sure that improves > things. Good catch. I did it in the Python 3 test, but forgot to do it here, as well. > > ############################### > > > > -# 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 2. Write a custom script that executes > > +# git-p4 directly with the Python 2 interpreter to ensure that we use that > > +# version even if Git was compiled with Python 3. > > +python_target_binary=$(which python2) > > +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-python2 <<-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-python2 >err > > +if ! grep 'valid commands' err > > I like this sanity check, this verifies if the command actually works: > > Thus the output when the script is properly created: > > usage: /home/toon/devel/git/git-p4 <command> [options] > > valid commands: branches, clone, sync, submit, unshelve, commit, rebase > > Try /home/toon/devel/git/git-p4 <command> --help for command specific help. > > > And when the script was not written: > > git: 'p4-python2' is not a git command. See 'git --help'. > > > I noticed though, the stderr output isn's shallowed into /dev/null, > resulting the output for the test to be the following if Python 2 is not found: > > make[2]: Entering directory '/home/toon/devel/git/t' > *** t9835-git-p4-metadata-encoding-python2.sh *** > which: no python2 in (/home/toon/devel/git/bin-wrappers:/home/toon/.local/bin:[snip]) > git: 'p4-python2' is not a git command. See 'git --help'. > not ok 1 - start p4d > > > I think that's totally fine though, it's giving the user proper > information about what is wrong. Yeah, I actually consider it a win to have it. Not that anybody ever executes these tests outside of CI anyway. Patrick
diff --git a/t/t9835-git-p4-metadata-encoding-python2.sh b/t/t9835-git-p4-metadata-encoding-python2.sh index 036bf79c6674f6f1f0d667c7270674168428ffee..02f9ec09053890a4d41b7dc95644066d6481bbb6 100755 --- a/t/t9835-git-p4-metadata-encoding-python2.sh +++ b/t/t9835-git-p4-metadata-encoding-python2.sh @@ -14,23 +14,25 @@ python_target_version='2' ## SECTION REPEATED IN t9836 ## ############################### -# 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 2. Write a custom script that executes +# git-p4 directly with the Python 2 interpreter to ensure that we use that +# version even if Git was compiled with Python 3. +python_target_binary=$(which python2) +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-python2 <<-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-python2 >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 python2 git p4 tests; python2 not available" test_done fi @@ -81,14 +83,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-python2 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-python2 clone --dest="$git" //depot@all && ( cd "$git" && git log >actual && @@ -100,7 +102,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-python2 clone --dest="$git" //depot@all && ( cd "$git" && git log >actual && @@ -114,7 +116,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-python2 clone --dest="$git" //depot@all && ( cd "$git" && git log >actual && @@ -126,7 +128,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-python2 clone --dest="$git" //depot@all && ( cd "$git" && git log >actual && @@ -138,7 +140,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-python2 clone --dest="$git" //depot@all && ( cd "$git" && git log >actual && @@ -150,7 +152,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-python2 clone --dest="$git" //depot@all && ( cd "$git" && git log >actual && @@ -162,7 +164,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-python2 clone --dest="$git" //depot@all && ( cd "$git" && git log >actual && @@ -174,7 +176,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-python2 clone --dest="$git" //depot@all && ( cd "$cli" && P4USER=cp1252_author && @@ -186,7 +188,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-python2 sync --branch=master && git log p4/master >actual && grep "sœme more cp-1252 tæxt" actual && @@ -201,7 +203,7 @@ test_expect_success 'check cp-1252 contents on later sync after clone with fallb test_expect_success 'passthrough (latin-1 contents corrupted in git) is the default with python2' ' 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-python2 clone --dest="$git" //depot@all && ( cd "$git" && git log >actual && diff --git a/t/t9836-git-p4-metadata-encoding-python3.sh b/t/t9836-git-p4-metadata-encoding-python3.sh index 63350dc4b5c6262480cd0be8fd88fba714c55428..5e5217a66b4fdb3c7fcf073a50952c7e9009e9fe 100755 --- a/t/t9836-git-p4-metadata-encoding-python3.sh +++ b/t/t9836-git-p4-metadata-encoding-python3.sh @@ -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 &&
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" so that the unbuilt version of "git-p4.py" is used that has "#!/usr/bin/env python" as shebang instead of the replaced shebang. 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> --- t/t9835-git-p4-metadata-encoding-python2.sh | 48 ++++++++++++++------------- t/t9836-git-p4-metadata-encoding-python3.sh | 50 ++++++++++++++--------------- 2 files changed, 50 insertions(+), 48 deletions(-)