@@ -103,8 +103,17 @@ describe('util.format_time', function()
103103 return os.time ({ year = year , month = month , day = day , hour = hour or 0 , min = min or 0 , sec = sec or 0 })
104104 end
105105
106+ local function c_locale_date (fmt , timestamp )
107+ local saved = os.setlocale (' C' , ' time' )
108+ local result = os.date (fmt , timestamp )
109+ os.setlocale (saved , ' time' )
110+ return result
111+ end
112+
106113 local function compact_locale_time (timestamp )
114+ local saved = os.setlocale (' C' , ' time' )
107115 local locale_time = vim .trim (os.date (' %X' , timestamp ) or ' ' )
116+ os.setlocale (saved , ' time' )
108117 locale_time = locale_time :gsub (' ^(%d?%d:%d%d):%d%d(.*)$' , ' %1%2' )
109118 if locale_time == ' ' then
110119 locale_time = vim .trim (os.date (' %H:%M' , timestamp ) or ' ' )
@@ -152,21 +161,21 @@ describe('util.format_time', function()
152161 describe (' other day timestamps' , function ()
153162 it (' formats yesterday with date prefix and locale time' , function ()
154163 local result = util .format_time (yesterday )
155- local expected_prefix = os.date (' %d %b' , yesterday ) .. ' '
164+ local expected_prefix = c_locale_date (' %d %b' , yesterday ) .. ' '
156165 assert .is_true (vim .startswith (result , expected_prefix ))
157166 assert .equals (compact_locale_time (yesterday ), result :sub (# expected_prefix + 1 ))
158167 end )
159168
160169 it (' formats last week with date prefix and locale time' , function ()
161170 local result = util .format_time (last_week )
162- local expected_prefix = os.date (' %d %b' , last_week ) .. ' '
171+ local expected_prefix = c_locale_date (' %d %b' , last_week ) .. ' '
163172 assert .is_true (vim .startswith (result , expected_prefix ))
164173 assert .equals (compact_locale_time (last_week ), result :sub (# expected_prefix + 1 ))
165174 end )
166175
167176 it (' formats future date with full date and locale time' , function ()
168177 local result = util .format_time (next_year )
169- local expected_prefix = os.date (' %d %b %Y' , next_year ) .. ' '
178+ local expected_prefix = c_locale_date (' %d %b %Y' , next_year ) .. ' '
170179 assert .is_true (vim .startswith (result , expected_prefix ))
171180 assert .equals (compact_locale_time (next_year ), result :sub (# expected_prefix + 1 ))
172181 assert .matches (' %d%d%d%d' , result )
@@ -230,7 +239,7 @@ describe('util.format_time', function()
230239 if os.date (' %Y-%m-%d' , early_tomorrow ) == os.date (' %Y-%m-%d' ) then
231240 assert .equals (compact_locale_time (early_tomorrow ), early_result )
232241 else
233- local expected_prefix = os.date (' %d %b' , early_tomorrow ) .. ' '
242+ local expected_prefix = c_locale_date (' %d %b' , early_tomorrow ) .. ' '
234243 assert .is_true (vim .startswith (early_result , expected_prefix ))
235244 assert .equals (compact_locale_time (early_tomorrow ), early_result :sub (# expected_prefix + 1 ))
236245 end
0 commit comments