Skip to content

Commit 2b3f6a0

Browse files
committed
Fix boolean fied validation
Field presence was checked by `if data then` which is false in cases: 1. data = nil - expected 2. data = false - not expected Closes #88
1 parent a5bb101 commit 2b3f6a0

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

avro_schema/frontend.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,7 @@ copy_data = function(schema, data, visited)
803803
end
804804
-- copy data
805805
for _, field in ipairs(schema.fields) do
806-
if data[field.name] then
806+
if data[field.name] ~= nil then
807807
-- a field is present in data
808808
ptr = field.name
809809
res[field.name] =

test/ddt_suite/validate.lua

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,19 @@ t {
3838
validate_error = 'Not a boolean: 100500'
3939
}
4040

41+
-- gh-88, false in record field is treated as absense of value
42+
t {
43+
schema = [[{
44+
"type": "record",
45+
"name": "X",
46+
"fields": [
47+
{"name": "f1", "type": "boolean"}
48+
]
49+
}]],
50+
validate = [[ {"f1": false} ]],
51+
validate_only = true
52+
}
53+
4154
-- int
4255

4356
t {

0 commit comments

Comments
 (0)