Skip to content

Commit db56511

Browse files
feature: support datetime type
Support datetime type checks [1] (added in Tarantool 2.10.0). 1. tarantool/tarantool#5941 Part of tarantool/tarantool#7726
1 parent 031d6a1 commit db56511

File tree

3 files changed

+73
-0
lines changed

3 files changed

+73
-0
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
99
### Added
1010

1111
- "error" type supported.
12+
- "datetime" type supported.
1213

1314
### Fixed
1415

checks.lua

+5
Original file line numberDiff line numberDiff line change
@@ -349,4 +349,9 @@ end
349349

350350
add_ffi_type_checker('error', 'struct error')
351351

352+
local has_datetime, datetime = pcall(require, 'datetime')
353+
if has_datetime then
354+
checkers.datetime = datetime.is_datetime
355+
end
356+
352357
return checks

test.lua

+67
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,15 @@ end
624624

625625
local has_error = (box.error ~= nil) and (box.error.new ~= nil)
626626

627+
function testdata.fn_datetime(arg) -- luacheck: no unused args
628+
checks('datetime')
629+
end
630+
631+
local has_datetime, datetime = pcall(require, 'datetime')
632+
if has_datetime then
633+
testdata.datetime = datetime
634+
end
635+
627636
local ret_cases = {
628637
-- fn_int64
629638
{
@@ -970,6 +979,64 @@ local ret_cases = {
970979
code = 'fn_error(1)',
971980
ok = false,
972981
},
982+
983+
-- fn_datetime
984+
{
985+
skip = not has_datetime,
986+
code = 'fn_datetime(datetime.new())',
987+
ok = true,
988+
additional_data = {'datetime'},
989+
},
990+
{
991+
skip = not has_datetime,
992+
code = 'fn_datetime(datetime.new{year=2023, month=1, day=11})',
993+
ok = true,
994+
additional_data = {'datetime'},
995+
},
996+
{
997+
skip = not has_datetime,
998+
code = 'fn_datetime(datetime.new{nsec=1001001})',
999+
ok = true,
1000+
additional_data = {'datetime'},
1001+
},
1002+
{
1003+
skip = not has_datetime,
1004+
code = 'fn_datetime(datetime.new{timestamp=1673439642})',
1005+
ok = true,
1006+
additional_data = {'datetime'},
1007+
},
1008+
{
1009+
skip = not has_datetime,
1010+
code = 'fn_datetime(datetime.new{tzoffset=180})',
1011+
ok = true,
1012+
additional_data = {'datetime'},
1013+
},
1014+
{
1015+
skip = not has_datetime,
1016+
code = 'fn_datetime(datetime.new{tz="Europe/Moscow"})',
1017+
ok = true,
1018+
additional_data = {'datetime'},
1019+
},
1020+
{
1021+
skip = not has_datetime,
1022+
code = 'fn_datetime()',
1023+
ok = false,
1024+
},
1025+
{
1026+
skip = not has_datetime,
1027+
code = 'fn_datetime("1.11.2023")',
1028+
ok = false,
1029+
},
1030+
{
1031+
skip = not has_datetime,
1032+
code = 'fn_datetime(1673439642)',
1033+
ok = false,
1034+
},
1035+
{
1036+
skip = not has_datetime,
1037+
code = 'fn_datetime({year=2023, month=1, day=11})',
1038+
ok = false,
1039+
},
9731040
}
9741041

9751042
for _, case in pairs(ret_cases) do

0 commit comments

Comments
 (0)