-- Unit checks for custom/extensions/link-trailers.lua, run under a standalone -- Lua by t0506-link-trailers.sh with the script path as the argument. The -- shipped configuration links Fixes and Reverts object names to ./?id=, -- Closes and Bug marks to bugs.example.com and a bare URL to itself, and -- everything here checks that shape, the key matching and the values that -- must pass through untouched. local test_directory = arg[0]:match("^(.*)/") or "." local h = dofile(test_directory .. "/harness.lua") h.load(arg[1]) local function render(key, text) return h.run({ key, "commit" }, { text }) end local out, ret = render("Fixes", "1234567 (\"plain commit\")") h.contains("a Fixes object name links to its commit", out, "1234567 (\"plain commit\")") h.equals("close answers zero", ret, 0) out = render("fixes", "1234567") h.contains("the key matches case insensitively", out, "1234567") out = render("Fixes", "123456") h.excludes("six hex characters stay text", out, "cafebabe") out = render("Closes", "#45") h.equals("a Closes mark links to the tracker", out, "#45") out = render("Bug", "45") h.equals("a bare Bug number links to the tracker", out, "45") out = render("Closes", "not a number") h.equals("a Closes value that is no number stays text", out, "not a number") out = render("Link", "https://example.com/?a=1&b=2") h.equals("a bare URL links to itself with its escaping kept", out, "https://example.com/?a=1&b=2") out = render("Whatever", "https://example.com/x") h.contains("a URL links under any key", out, "") out = render("Link", "https://example.com/it's") h.equals("a URL holding a quote stays text", out, "https://example.com/it's") out = render("Link", "see https://example.com/x") h.equals("a URL inside other text stays text", out, "see https://example.com/x") out = render("Reported-by", "someone") h.equals("a key with no rule passes through", out, "someone") out = h.run({ "Fixes", "commit" }, { "12345", "67 tail" }) h.contains("a value split across writes is seen whole", out, "1234567 tail") out, ret = render("Fixes", "") h.equals("an empty value stays empty", out, "") h.equals("an empty value still answers zero", ret, 0) h.finish()