diff options
author | daurnimator <quae@daurnimator.com> | 2018-04-22 21:00:58 +1000 |
---|---|---|
committer | daurnimator <quae@daurnimator.com> | 2018-04-22 21:20:45 +1000 |
commit | f6a9b5adb12fe92ebaaa20d9707d7945406ae533 (patch) | |
tree | 07b80eef5144a2b8332513392093c6858b25511e | |
parent | 8ffcac749ad1153fd01cc7c0d40a338090bd1c38 (diff) | |
download | fengari-f6a9b5adb12fe92ebaaa20d9707d7945406ae533.tar.gz fengari-f6a9b5adb12fe92ebaaa20d9707d7945406ae533.tar.bz2 fengari-f6a9b5adb12fe92ebaaa20d9707d7945406ae533.zip |
src/loslib.js: Fix off-by-one error in month field of os.time()
-rw-r--r-- | src/loslib.js | 2 | ||||
-rw-r--r-- | test/loslib.test.js | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/src/loslib.js b/src/loslib.js index c282175..d20873d 100644 --- a/src/loslib.js +++ b/src/loslib.js @@ -73,7 +73,7 @@ const setallfields = function(L, time, utc) { setfield(L, "min", !utc ? time.getMinutes() : time.getUTCMinutes()); setfield(L, "hour", !utc ? time.getHours() : time.getUTCHours()); setfield(L, "day", !utc ? time.getDate() : time.getUTCDate()); - setfield(L, "month", !utc ? time.getMonth() : time.getUTCMonth()); + setfield(L, "month", (!utc ? time.getMonth() : time.getUTCMonth()) + 1); setfield(L, "year", !utc ? time.getFullYear() : time.getUTCFullYear()); setfield(L, "wday", !utc ? time.getDay() : time.getUTCDay()); let now = new Date(); diff --git a/test/loslib.test.js b/test/loslib.test.js index 5f06a06..abb5ef2 100644 --- a/test/loslib.test.js +++ b/test/loslib.test.js @@ -105,6 +105,27 @@ test('os.date normalisation', () => { }); +test('os.time normalisation of table', () => { + let L = lauxlib.luaL_newstate(); + if (!L) throw Error("failed to create lua state"); + + let luaCode = ` + local t = { + day = 20, + month = 2, + year = 2018 + } + os.time(t) + assert(t.day == 20, "unmodified day") + assert(t.month == 2, "unmodified month") + assert(t.year == 2018, "unmodified year") + `; + lualib.luaL_openlibs(L); + expect(lauxlib.luaL_loadstring(L, to_luastring(luaCode))).toBe(lua.LUA_OK); + lua.lua_call(L, 0, 0); +}); + + test('os.getenv', () => { let L = lauxlib.luaL_newstate(); if (!L) throw Error("failed to create lua state"); |