scansion/console.lua

changeset 115
0f8d0906af6e
child 126
87ea077acc21
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scansion/console.lua	Mon Sep 10 13:52:35 2018 +0100
@@ -0,0 +1,47 @@
+local pretty = require "scansion.pretty".new({});
+
+local function lines(l)
+	return table.concat(l, "\n");
+end
+
+local handlers = {
+	["script"] = function (data)
+		return "TEST: "..(data.title or data.filename);
+	end;
+	["test-passed"] = function ()
+		return "PASS";
+	end;
+	["test-failed"] = function (data)
+		local error_text;
+		if data.error and data.error.type == "unexpected-stanza" then
+			error_text = "Received unexpected stanza:\n\n"..pretty(data.error.data.stanza, 4);
+			if data.error.data.expected then
+				error_text = error_text.."\n\nExpected:\n\n"..pretty(data.error.data.expected, 4);
+			end
+		else
+			error_text = tostring(data.error);
+		end
+		return "FAIL: "..error_text
+	end;
+	["test-error"] = function (data)
+		return "ERROR: "..tostring(data.error);
+	end;
+
+	["action"] = function (data)
+		local action = data.action;
+		local obj_type = data.object_type;
+		local l = {};
+		if data.annotation then
+			table.insert(l, action.annotation);
+		end
+		table.insert(l, data.object.." "..action);
+		if data.extra and obj_type == "client" and (action == "sends" or action == "receives") then
+			table.insert(l, "\n"..pretty(lines(data.extra), 4).."\n");
+		end
+		return lines(l);
+	end;
+};
+
+return {
+	handlers = handlers;
+}

mercurial