util.serialization: Make errors fatal by default (like the previous implementation)
authorKim Alvefur <zash@zash.se>
Thu, 11 Oct 2018 22:42:17 +0200
changeset 9483 006a71a83e6a
parent 9482 3a683b2476e2
child 9484 f34c635c5f42
util.serialization: Make errors fatal by default (like the previous implementation)
spec/util_serialization_spec.lua
util/serialization.lua
--- a/spec/util_serialization_spec.lua	Thu Oct 11 18:20:09 2018 +0100
+++ b/spec/util_serialization_spec.lua	Thu Oct 11 22:42:17 2018 +0200
@@ -7,9 +7,19 @@
 			assert.is_string(serialization.serialize(nil));
 			assert.is_string(serialization.serialize(1));
 			assert.is_string(serialization.serialize(true));
-			assert.is_string(serialization.serialize(function () end));
 		end);
 
+		it("rejects function by default", function ()
+			assert.has_error(function ()
+				serialization.serialize(function () end)
+			end);
+		end);
+
+		it("makes a string in debug mode", function ()
+			assert.is_string(serialization.serialize(function () end, "debug"));
+		end);
+
+
 		it("roundtrips", function ()
 			local function test(data)
 				local serialized = serialization.serialize(data);
--- a/util/serialization.lua	Thu Oct 11 18:20:09 2018 +0100
+++ b/util/serialization.lua	Thu Oct 11 22:42:17 2018 +0200
@@ -103,7 +103,7 @@
 		opt.equals = opt.equals or "=";
 	end
 
-	local fallback = opt.fatal and fatal_error or opt.fallback or default_fallback;
+	local fallback = opt.fallback or opt.fatal == false and default_fallback or fatal_error;
 
 	local function ser(v)
 		return (types[type(v)] or fallback)(v);