File

spec/util_paths_spec.lua @ 11694:d6be4dda1f60

net.server_epoll: Set minimum wait time to 1ms, matching epoll A timeout value less than 0.001 gets turned into zero on the C side, so epoll_wait() returns instantly and essentially busy-loops up to 1ms, e.g. when a timer event ends up scheduled (0, 0.001)ms into the future. Unsure if this has much effect in practice, but it may waste a small amount of CPU time. How much would depend on how often this ends up happening and how fast the CPU gets trough main loop iterations.
author Kim Alvefur <zash@zash.se>
date Thu, 15 Jul 2021 01:38:44 +0200
parent 11182:bab8d01e139a
line wrap: on
line source

local sep = package.config:match("(.)\n");
describe("util.paths", function ()
	local paths = require "util.paths";
	describe("#join()", function ()
		it("returns single component as-is", function ()
			assert.equal("foo", paths.join("foo"));
		end);
		it("joins paths", function ()
			assert.equal("foo"..sep.."bar", paths.join("foo", "bar"))
		end);
		it("joins longer paths", function ()
			assert.equal("foo"..sep.."bar"..sep.."baz", paths.join("foo", "bar", "baz"))
		end);
		it("joins even longer paths", function ()
			assert.equal("foo"..sep.."bar"..sep.."baz"..sep.."moo", paths.join("foo", "bar", "baz", "moo"))
		end);
	end)

	describe("#glob_to_pattern()", function ()
		it("works", function ()
			assert.equal("^thing.%..*$", paths.glob_to_pattern("thing?.*"))
		end);
	end)

	describe("#resolve_relative_path()", function ()
		it("returns absolute paths as-is", function ()
			if sep == "/" then
				assert.equal("/tmp/path", paths.resolve_relative_path("/run", "/tmp/path"));
			elseif sep == "\\" then
				assert.equal("C:\\Program Files", paths.resolve_relative_path("A:\\", "C:\\Program Files"));
			end
		end);
		it("resolves relative paths", function ()
			if sep == "/" then
				assert.equal("/run/path", paths.resolve_relative_path("/run", "path"));
			end
		end);
	end)
end)