]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t9604: Fix test for musl libc and new Debian
authorĐoàn Trần Công Danh <congdanhqx@gmail.com>
Wed, 10 Apr 2024 03:28:12 +0000 (10:28 +0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Apr 2024 16:10:31 +0000 (09:10 -0700)
CST6CDT and the like are POSIX timezone, with no rule for transition.
And POSIX doesn't enforce how to interpret the rule if it's omitted.
Some libc (e.g. glibc) resorted back to IANA (formerly Olson) db rules
for those timezones.  Some libc (e.g. FreeBSD) uses a fixed rule.
Other libc (e.g. musl) interpret that as no transition at all [1].

In addition, distributions (notoriously Debian-derived, which uses IANA
db for CST6CDT and the like) started to split "legacy" timezones
like CST6CDT, EST5EDT into `tzdata-legacy', which will not be installed
by default [2].

In those cases, t9604 will run into failure.

Let's switch to POSIX timezone with rules to change timezone.

1: http://mm.icann.org/pipermail/tz/2024-March/058751.html
2: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1043250

Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t9604-cvsimport-timestamps.sh

index 2ff4aa932df44e3afed6447acceb20e8c599c4ea..2d03259729b5f4269ec546a2663199708fffcbbf 100755 (executable)
@@ -3,11 +3,28 @@
 test_description='git cvsimport timestamps'
 . ./lib-cvs.sh
 
+test_lazy_prereq POSIX_TIMEZONE '
+       local tz=XST-1XDT,M3.5.0,M11.1.0
+       echo "1711846799 -> 2024-03-31 01:59:59 +0100" >expected &&
+       TZ="$tz" test-tool date show:iso-local 1711846799 >actual &&
+       test_cmp expected actual &&
+       echo "1711846800 -> 2024-03-31 03:00:00 +0200" >expected &&
+       TZ="$tz" test-tool date show:iso-local 1711846800 >actual &&
+       test_cmp expected actual &&
+       echo "1730591999 -> 2024-11-03 01:59:59 +0200" >expected &&
+       TZ="$tz" test-tool date show:iso-local 1730591999 >actual &&
+       test_cmp expected actual &&
+       echo "1730592000 -> 2024-11-03 01:00:00 +0100" >expected &&
+       TZ="$tz" test-tool date show:iso-local 1730592000 >actual &&
+       test_cmp expected actual
+'
+
 setup_cvs_test_repository t9604
 
-test_expect_success PERL 'check timestamps are UTC (TZ=CST6CDT)' '
+test_expect_success PERL,POSIX_TIMEZONE 'check timestamps are UTC' '
 
-       TZ=CST6CDT git cvsimport -p"-x" -C module-1 module &&
+       TZ=CST6CDT,M4.1.0,M10.5.0 \
+       git cvsimport -p"-x" -C module-1 module &&
        git cvsimport -p"-x" -C module-1 module &&
        (
                cd module-1 &&
@@ -34,13 +51,13 @@ test_expect_success PERL 'check timestamps are UTC (TZ=CST6CDT)' '
        test_cmp expect-1 actual-1
 '
 
-test_expect_success PERL 'check timestamps with author-specific timezones' '
+test_expect_success PERL,POSIX_TIMEZONE 'check timestamps with author-specific timezones' '
 
        cat >cvs-authors <<-EOF &&
        user1=User One <user1@domain.org>
-       user2=User Two <user2@domain.org> CST6CDT
-       user3=User Three <user3@domain.org> EST5EDT
-       user4=User Four <user4@domain.org> MST7MDT
+       user2=User Two <user2@domain.org> CST6CDT,M4.1.0,M10.5.0
+       user3=User Three <user3@domain.org> EST5EDT,M4.1.0,M10.5.0
+       user4=User Four <user4@domain.org> MST7MDT,M4.1.0,M10.5.0
        EOF
        git cvsimport -p"-x" -A cvs-authors -C module-2 module &&
        (