# HG changeset patch # User Matthew Wild # Date 1457130495 0 # Node ID 3304a04281d6cd65ee485a1be6cb5e5499efbd09 # Parent db0dc08929e749496a5462a2fc804654403fe1bc# Parent ee1f7e1e548c5af70e3174e0551c71bd28c33834 Merge 0.10->trunk diff -r db0dc08929e7 -r 3304a04281d6 Makefile --- a/Makefile Thu Mar 03 16:06:16 2016 +0100 +++ b/Makefile Fri Mar 04 22:28:15 2016 +0000 @@ -53,7 +53,7 @@ $(MAKE) clean -C util-src test: - cd tests && $(RUNWITH) test.lua + cd tests && $(RUNWITH) test.lua 0 util/%.so: $(MAKE) install -C util-src diff -r db0dc08929e7 -r 3304a04281d6 tests/test.lua --- a/tests/test.lua Thu Mar 03 16:06:16 2016 +0100 +++ b/tests/test.lua Fri Mar 04 22:28:15 2016 +0000 @@ -18,6 +18,7 @@ dotest "core.s2smanager" dotest "core.configmanager" dotest "util.ip" + dotest "util.json" dotest "util.stanza" dotest "util.sasl.scram" dotest "util.cache" diff -r db0dc08929e7 -r 3304a04281d6 tests/test_util_json.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_util_json.lua Fri Mar 04 22:28:15 2016 +0000 @@ -0,0 +1,21 @@ + +function encode(encode, json) + local function test(f, j, e) + if e then + assert_equal(f(j), e); + end + assert_equal(f(j), f(json.decode(f(j)))); + end + test(encode, json.null, "null") + test(encode, {}, "{}") + test(encode, {a=1}); + test(encode, {a={1,2,3}}); + test(encode, {1}, "[1]"); +end + +function decode(decode) + local empty_array = decode("[]"); + assert_equal(type(empty_array), "table"); + assert_equal(#empty_array, 0); + assert_equal(next(empty_array), nil); +end diff -r db0dc08929e7 -r 3304a04281d6 util/json.lua --- a/util/json.lua Thu Mar 03 16:06:16 2016 +0100 +++ b/util/json.lua Fri Mar 04 22:28:15 2016 +0000 @@ -145,7 +145,9 @@ function simplesave(o, buffer) local t = type(o); - if t == "number" then + if o == null then + t_insert(buffer, "null"); + elseif t == "number" then t_insert(buffer, tostring(o)); elseif t == "string" then stringsave(o, buffer);