File

spec/util_time_spec.lua @ 13027:012d6e7b723a

integration tests: Preserve unmocked time.monotonic() With monotonic() frozen, timers may fail to trigger. This caused problems after the new util.startup changes that moved the server-started event to a timer. The timer wouldn't trigger, the event didn't fire, and prosody would fail to daemonize. All the tests that depend on specific time behaviour are depending on wall clock time, so only mocking util.time.now() and os.time() fixes those.
author Matthew Wild <mwild1@gmail.com>
date Thu, 06 Apr 2023 14:00:54 +0100
parent 9193:aba99b6539f5
line wrap: on
line source

describe("util.time", function ()
	local time;
	setup(function ()
		time = require "util.time";
	end);
	describe("now()", function ()
		it("exists", function ()
			assert.is_function(time.now);
		end);
		it("returns a number", function ()
			assert.is_number(time.now());
		end);
	end);
	describe("monotonic()", function ()
		it("exists", function ()
			assert.is_function(time.monotonic);
		end);
		it("returns a number", function ()
			assert.is_number(time.monotonic());
		end);
		it("time goes in one direction", function ()
			local a = time.monotonic();
			local b	= time.monotonic();
			assert.truthy(a <= b);
		end);
	end);
end);