From db51730df1817fc4b6ecf5a065c69fac518ad821 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 18 Jun 2019 22:53:24 +0200 Subject: patch 8.1.1567: localtime_r() does not respond to $TZ changes Problem: Localtime_r() does not respond to $TZ changes. Solution: If $TZ changes then call tzset(). (Tom Ryder) --- src/testdir/test_functions.vim | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/testdir/test_functions.vim') diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim index a2e4da6c76..f71717f73e 100644 --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -187,6 +187,30 @@ func Test_strftime() call assert_fails('call strftime([])', 'E730:') call assert_fails('call strftime("%Y", [])', 'E745:') + + " Check that the time changes after we change the timezone + " Save previous timezone value, if any + if exists('$TZ') + let tz = $TZ + endif + + " Force EST and then UTC, save the current hour (24-hour clock) for each + let $TZ = 'EST' | let est = strftime('%H') + let $TZ = 'UTC' | let utc = strftime('%H') + + " Those hours should be two bytes long, and should not be the same; if they + " are, a tzset(3) call may have failed somewhere + call assert_equal(strlen(est), 2) + call assert_equal(strlen(utc), 2) + call assert_notequal(est, utc) + + " If we cached a timezone value, put it back, otherwise clear it + if exists('tz') + let $TZ = tz + else + unlet $TZ + endif + endfunc func Test_resolve_unix() -- cgit v1.2.3