contrib/credential: fix "netrc" tests with out-of-tree builds

Tests of the "netrc" credential helper aren't prepared to handle out-of-tree builds: - They expect the "test.pl" script to be located relative to the build directory, even though it is located in the source directory. - They expect the built "git-credential-netrc" helper to be located relative to the "test.pl" file, evne though it is loated in the build directory. This works alright as long as source and build directories are the same, but starts to break apart with Meson. Fix these first issue by using the new "GIT_SOURCE_DIR" variable to locate the test script itself. And fix the second issue by introducing a new environment variable "CREDENTIAL_NETRC_PATH" that can be set for out-of-tree builds to locate the built credential helper. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Feb 18, 2025 at 08:45 UTC fd21e6e447516421c5abdba21b483187a5637ba2
2 files changed +5 -4
contrib/credential/netrc/t-git-credential-netrc.sh
+1 -1
@@ -15,7 +15,7 @@
15
16 export PERL5LIB="$GITPERLLIB"
17 test_expect_success 'git-credential-netrc' '
18 - perl "$GIT_BUILD_DIR"/contrib/credential/netrc/test.pl
18 + perl "$GIT_SOURCE_DIR"/contrib/credential/netrc/test.pl
19 '
20
21 test_done
contrib/credential/netrc/test.pl
+4 -3
@@ -15,10 +15,11 @@ BEGIN {
15
16 my @global_credential_args = @ARGV;
17 my $scriptDir = dirname rel2abs $0;
18 -my ($netrc, $netrcGpg, $gcNetrc) = map { catfile $scriptDir, $_; }
18 +my ($netrc, $netrcGpg) = map { catfile $scriptDir, $_; }
19 qw(test.netrc
20 - test.netrc.gpg
21 - git-credential-netrc);
20 + test.netrc.gpg);
21 +my $gcNetrc = $ENV{CREDENTIAL_NETRC_PATH} || catfile $scriptDir, qw(git-credential-netrc);
22 +
23 local $ENV{PATH} = join ':'
24 , $scriptDir
25 , $ENV{PATH}