[Issue 12875] New: [unittest] std.datetime fails: Not a valid tzdata file.

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sat Jun 7 17:20:51 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=12875

          Issue ID: 12875
           Summary: [unittest] std.datetime fails: Not a valid tzdata
                    file.
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: Phobos
          Assignee: nobody at puremagic.com
          Reporter: ibuclaw at gdcproject.org

Reduced to a test case:

---
import std.datetime;
import std.exception;
import std.stdio;

void main()
{
  static void testPZSuccess(string tzName)
  {
    scope(failure) writefln("TZName which threw: %s", tzName);

    TimeZone.getTimeZone(tzName);
  }

  auto tzNames = TimeZone.getInstalledTZNames();

  foreach(tzName; tzNames)
    assertNotThrown!DateTimeException(testPZSuccess(tzName));

}
---


Throws with the following error:
---
TZName which threw: America/Godthab
core.exception.AssertError at test.d(17): assertNotThrown failed: TimeException
was thrown: Not a valid tzdata file.
----------------
0x44bbcb _enforceValidTZFile
    ../../../../libphobos/src/std/datetime.d:29854
0x44bbcb immutable(std.datetime.PosixTimeZone)
std.datetime.PosixTimeZone.getTimeZone(immutable(char)[], immutable(char)[])
    ../../../../libphobos/src/std/datetime.d:29322
0x44c982 immutable(std.datetime.TimeZone)
std.datetime.TimeZone.getTimeZone(immutable(char)[])
    ../../../../libphobos/src/std/datetime.d:27635
[snip backtrace]
---


The line where the assert occurs:
---
_enforceValidTZFile(tzFileVersion == '\0' || tzFileVersion == '2');
---


And indeed when testing the file, it is in version '3' format - so I guess not
supported.
---
$ file /usr/share/zoneinfo/America/Godthab 
/usr/share/zoneinfo/America/Godthab: timezone data, version 3, 5 gmt time
flags, 5 std time flags, no leap seconds, 117 transition times, 5 abbreviation
chars
---


Here the distribution-specific version of the package tzdata:
---
tzdata  2014c-0ubuntu0.14.04
---

--


More information about the Digitalmars-d-bugs mailing list