From 38a5cd8486b08818c72e51efa8ca40151670bdeb Mon Sep 17 00:00:00 2001 From: Kubilay Kocak Date: Tue, 25 Jun 2019 02:30:13 +0000 Subject: [PATCH] Fix test_tzlocal_offset_equal[GMT-tzoff1] test_tzlocal_offset_equal[GMT-tzoff1] fails if a system does not have a defined (installed) GMT timezone, for example if "Link Etc/GMT GMT" is not defined in the zoneinfo configuration: > assert tz.tzlocal() == tzoff E AssertionError: assert tzlocal() == tzoffset(u'GMT', 0) E -tzlocal() E +tzoffset(u'GMT', 0) An example of such a configuration is FreeBSD, who's default timezone is UTC [1][2]. This configuration results in any "non-present" or undefined TZ name being returned/processed as the default timezone name (in FreeBSD's case, UTC). Further, POSIX does not recognize [3] TZ=GMT or TZ=UTC as valid values because they neither start with a colon nor contain a numeric offset hour field. Accordingly, update the GMT value for this parametrized test to GMT0, a specific (not aliased) timezone, making it more robust to system configuration differences. [1] https://svnweb.freebsd.org/changeset/base/130332 [2] https://svnweb.freebsd.org/changeset/base/199405 [3] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html --- changelog.d/928.bugfix.rst | 1 + dateutil/test/test_tz.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changelog.d/928.bugfix.rst diff --git a/changelog.d/928.bugfix.rst b/changelog.d/928.bugfix.rst new file mode 100644 index 000000000..01d19a4df --- /dev/null +++ b/changelog.d/928.bugfix.rst @@ -0,0 +1 @@ +Fixed issue where ``test_tzlocal_offset_equal`` would fail in certain environments (such as FreeBSD) due to an invalid assumption about what time zone names are provided. Reported and fixed by Kubilay Kocak (gh issue #918, pr #928). diff --git a/dateutil/test/test_tz.py b/dateutil/test/test_tz.py index d6288261a..6cd8ea088 100644 --- a/dateutil/test/test_tz.py +++ b/dateutil/test/test_tz.py @@ -993,7 +993,7 @@ def test_tzlocal_local_time_trim_colon(): @mark_tzlocal_nix @pytest.mark.parametrize('tzvar, tzoff', [ ('EST5', tz.tzoffset('EST', -18000)), - ('GMT', tz.tzoffset('GMT', 0)), + ('GMT0', tz.tzoffset('GMT', 0)), ('YAKT-9', tz.tzoffset('YAKT', timedelta(hours=9))), ('JST-9', tz.tzoffset('JST', timedelta(hours=9))), ])