[PATCH v2 00/10] Platform compatibility fixes
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Oct 15, 2024, 11:45 UTC
- Message-ID
- <cover.1728992306.git.ps@pks.im>
- In-Reply-To
- <cover.1728906490.git.ps@pks.im>
Hi,
this is the second version of my patch series that includes various different platform compatibility fixes.
Changes compared to v1:
- Provide a more in-depth explanation of the gitweb fix.
- Fix up a stale comment in "lib-gitweb.sh".
- Add a missing signoff.
Thanks!
Patrick
Patrick Steinhardt (10):
t/test-lib: fix quoting of TEST_RESULTS_SAN_FILE
t/test-lib: wire up NO_ICONV prerequisite
t/lib-gitweb: test against the build version of gitweb
t/lib-gpg: fix setup of GNUPGHOME in MinGW
t1401: make invocation of tar(1) work with Win32-provided one
t3404: work around platform-specific behaviour on macOS 10.15
t5500, t5601: skip tests which exercise paths with '[::1]' on Cygwin
t7300: work around platform-specific behaviour with long paths on
MinGW
builtin/credential-cache: fix missing parameter for stub function
http: fix build error on FreeBSDMakefile | 1 + builtin/credential-cache.c | 3 +- contrib/buildsystems/CMakeLists.txt | 6 ++ http.c | 10 +- t/lib-gitweb.sh | 4 +- t/lib-gpg.sh | 2 +- t/t0028-working-tree-encoding.sh | 6 ++ t/t1401-symbolic-ref.sh | 2 +- t/t2082-parallel-checkout-attributes.sh | 2 +- t/t3404-rebase-interactive.sh | 26 +++-- t/t3434-rebase-i18n.sh | 6 ++ t/t3900-i18n-commit.sh | 6 ++ t/t3901-i18n-patch.sh | 6 ++ t/t4041-diff-submodule-option.sh | 16 ++- t/t4059-diff-submodule-not-initialized.sh | 16 ++- t/t4060-diff-submodule-option-diff-format.sh | 17 ++-- t/t4201-shortlog.sh | 8 +- t/t4205-log-pretty-formats.sh | 102 +++++++++++-------- t/t4210-log-i18n.sh | 6 ++ t/t4254-am-corrupt.sh | 6 ++ t/t5100-mailinfo.sh | 14 ++- t/t5500-fetch-pack.sh | 14 ++- t/t5550-http-fetch-dumb.sh | 4 +- t/t5601-clone.sh | 11 +- t/t6006-rev-list-format.sh | 54 ++++++---- t/t7102-reset.sh | 40 +++++--- t/t7300-clean.sh | 2 +- t/t8005-blame-i18n.sh | 6 ++ t/t9300-fast-import.sh | 2 +- t/t9350-fast-export.sh | 10 +- t/test-lib.sh | 3 +- 31 files changed, 274 insertions(+), 137 deletions(-)
Range-diff against v1:
1: 601670912ee = 1: a514f5d14a7 t/test-lib: fix quoting of TEST_RESULTS_SAN_FILE
2: f1d74c46aa2 = 2: f6a8582c34a t/test-lib: wire up NO_ICONV prerequisite
3: eda73d81139 ! 3: 2e2d208ef1b t/lib-gitweb: test against the build version of gitweb
@@ Commit message
t/lib-gitweb: test against the build version of gitweb
When testing gitweb we set up the CGI script as "gitweb.perl", which is
- the source file of the build target "gitweb.cgi". This works alright as
- long as we run in-tree tests. But we're about to make out-of-tree tests
- a reality, and there things will break because "gitweb.perl" will not be
- found in the build directory.
+ the source file of the build target "gitweb.cgi". This file doesn't have
+ a patched shebang and still contains `++REPLACEMENT++` markers, but
+ things generally work because we replace the configuration with our own
+ test configuration.
- Fix this by using "gitweb.cgi" instead.
+ But this only works as long as "$GIT_BUILD_DIR" actually points to the
+ source tree, because "gitweb.cgi" and "gitweb.perl" happen to sit next
+ to each other. This is not the case though once you have out-of-tree
+ builds like with CMake, where the source and built versions live in
+ different directories. Consequently, "$GIT_BUILD_DIR/gitweb/gitweb.perl"
+ won't exist there.
+
+ While we could ask build systems with out-of-tree builds to instead set
+ up GITWEB_TEST_INSTALLED, which allows us to override the location of
+ the script, it goes against the spirit of this environment variable. We
+ _don't_ want to test against an installed version, we want to use the
+ version we have just built.
+
+ Fix this by using "gitweb.cgi" instead. This means that you cannot run
+ test scripts without building that file, but in general we do expect
+ developers to build stuff before they test it anyway.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
## t/lib-gitweb.sh ##
@@ t/lib-gitweb.sh: EOF
+ test -f "$SCRIPT_NAME" ||
error "Cannot find gitweb at $GITWEB_TEST_INSTALLED."
say "# Testing $SCRIPT_NAME"
- else # normal case, use source version of gitweb
+- else # normal case, use source version of gitweb
- SCRIPT_NAME="$GIT_BUILD_DIR/gitweb/gitweb.perl"
++ else # normal case, use built version of gitweb
+ SCRIPT_NAME="$GIT_BUILD_DIR/gitweb/gitweb.cgi"
fi
export SCRIPT_NAME
4: f5700647839 = 4: cc94f6fa648 t/lib-gpg: fix setup of GNUPGHOME in MinGW
5: d082cd92af3 ! 5: 58691dd652b t1401: make invocation of tar(1) work with Win32-provided one
@@ Commit message
Drop the trailing slash. Other tests that use tar(1) work alright, this
is the only instance where it has been failing.
+ Signed-off-by: Patrick Steinhardt <ps@pks.im>
+
## t/t1401-symbolic-ref.sh ##
@@ t/t1401-symbolic-ref.sh: reset_to_sane() {
test_expect_success 'setup' '
6: a82a6b3df70 = 6: 1daadd82766 t3404: work around platform-specific behaviour on macOS 10.15
7: e1b9617f943 = 7: 374f47bf3de t5500, t5601: skip tests which exercise paths with '[::1]' on Cygwin
8: b94fd876adb = 8: 13c06a8129b t7300: work around platform-specific behaviour with long paths on MinGW
9: 8cce69e5ba6 = 9: 5fd78b6d535 builtin/credential-cache: fix missing parameter for stub function
10: deb30e12a58 = 10: 9963dc73988 http: fix build error on FreeBSDbase-commit: ef8ce8f3d4344fd3af049c17eeba5cd20d98b69f
-- 2.47.0.72.gef8ce8f3d4.dirty