Message ID | 20240410032812.30476-1-congdanhqx@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 03e84cca5d66083878901934711d3f1a56c41dbc |
Headers | show |
Series | [v2] t9604: Fix test for musl libc and new Debian | expand |
On Tue, Apr 9, 2024 at 11:28 PM Đoàn Trần Công Danh <congdanhqx@gmail.com> wrote: > 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 omited. > 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]. s/omited/omitted/ > 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>
On 2024-04-10 10:28:12+0700, Đoàn Trần Công Danh <congdanhqx@gmail.com> wrote: > -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 Not sure if it's a good idea to change those CST6CDT, EST5EDT MST7MDT to some non-sense likes: XST6XDT, YST5YDT, ZST7ZDT, though. Since those characters are for decoration purpose > EOF > git cvsimport -p"-x" -A cvs-authors -C module-2 module && > ( > -- > 2.44.0.rc0.258.g7320e9588666f >
On Tue, Apr 9, 2024 at 11:28 PM Đoàn Trần Công Danh <congdanhqx@gmail.com> wrote: > 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 omited. > 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. > > Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com> > --- > diff --git a/t/t9604-cvsimport-timestamps.sh b/t/t9604-cvsimport-timestamps.sh > @@ -3,11 +3,28 @@ > +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 && Is this duplicated `git cvsimport` invocation intentional?
On 2024-04-09 23:37:16-0400, Eric Sunshine <sunshine@sunshineco.com> wrote: > On Tue, Apr 9, 2024 at 11:28 PM Đoàn Trần Công Danh > <congdanhqx@gmail.com> wrote: > > 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 omited. > > 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. > > > > Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com> > > --- > > diff --git a/t/t9604-cvsimport-timestamps.sh b/t/t9604-cvsimport-timestamps.sh > > @@ -3,11 +3,28 @@ > > +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 && > > Is this duplicated `git cvsimport` invocation intentional? I have no idea whether that was intentional, it's there from the very begining. Apply this diff on top of my change, and tests still pass. ----- 8< ------ t/t9604-cvsimport-timestamps.sh | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/t/t9604-cvsimport-timestamps.sh b/t/t9604-cvsimport-timestamps.sh index 2d03259729b5f..c51a9fa8b6ca6 100755 --- a/t/t9604-cvsimport-timestamps.sh +++ b/t/t9604-cvsimport-timestamps.sh @@ -25,11 +25,7 @@ test_expect_success PERL,POSIX_TIMEZONE 'check timestamps are UTC' ' 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 && - git log --format="%s %ai" - ) >actual-1 && + git -C module-1 log --format="%s %ai" >actual-1 && cat >expect-1 <<-EOF && Rev 16 2006-10-29 07:00:01 +0000 Rev 15 2006-10-29 06:59:59 +0000 @@ -60,10 +56,7 @@ test_expect_success PERL,POSIX_TIMEZONE 'check timestamps with author-specific t 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 && - ( - cd module-2 && - git log --format="%s %ai %an" - ) >actual-2 && + git -C module-2 log --format="%s %ai %an" >actual-2 && cat >expect-2 <<-EOF && Rev 16 2006-10-29 01:00:01 -0600 User Two Rev 15 2006-10-29 01:59:59 -0500 User Two ----- >8 ----------------
diff --git a/t/t9604-cvsimport-timestamps.sh b/t/t9604-cvsimport-timestamps.sh index 2ff4aa932df44..2d03259729b5f 100755 --- a/t/t9604-cvsimport-timestamps.sh +++ b/t/t9604-cvsimport-timestamps.sh @@ -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 && (