Software /
code /
prosody
File
spec/util_human_io_spec.lua @ 13626:ac60c21015c7
core.configmanager: Add ways to read config values from files
Inspired by something MattJ said
Allows retrieving config values from files which are expected to be
relative to the config directory, extending on the ENV_ method of
retrieving config values from outside the config file.
- FileLine retrieves the first line, stripping any trailing newline
- FileContents reads the whole file
- FileLines reads lines into an array
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 16 Jan 2025 15:05:00 +0100 |
parent | 13367:82513890a1d8 |
line wrap: on
line source
describe("util.human.io", function () local human_io setup(function () human_io = require "util.human.io"; end); describe("table", function () it("alignment works", function () local row = human_io.table({ { width = 3, align = "right" }, { width = 3, }, }); assert.equal(" 1 | . ", row({ 1, "." })); assert.equal(" 10 | .. ", row({ 10, ".." })); assert.equal("100 | ...", row({ 100, "..." })); assert.equal("10… | ..…", row({ 1000, "...." })); end); end); describe("ellipsis", function() it("works", function() assert.equal("…", human_io.ellipsis("abc", 1)); assert.equal("a…", human_io.ellipsis("abc", 2)); assert.equal("abc", human_io.ellipsis("abc", 3)); assert.equal("…", human_io.ellipsis("räksmörgås", 1)); assert.equal("r…", human_io.ellipsis("räksmörgås", 2)); assert.equal("rä…", human_io.ellipsis("räksmörgås", 3)); assert.equal("räk…", human_io.ellipsis("räksmörgås", 4)); assert.equal("räks…", human_io.ellipsis("räksmörgås", 5)); assert.equal("räksm…", human_io.ellipsis("räksmörgås", 6)); assert.equal("räksmö…", human_io.ellipsis("räksmörgås", 7)); assert.equal("räksmör…", human_io.ellipsis("räksmörgås", 8)); assert.equal("räksmörg…", human_io.ellipsis("räksmörgås", 9)); assert.equal("räksmörgås", human_io.ellipsis("räksmörgås", 10)); end); end); describe("parse_duration", function () local function test(expected, duration) return assert.equal(expected, human_io.parse_duration(duration), ("%q -> %d"):format(duration, expected)); end local function should_fail(duration) assert.is_nil(human_io.parse_duration(duration), "invalid duration should fail: %q"); end it("works", function () test(1, "1s"); test(60, "1min"); test(60, "1 min"); test(60, "1 minute"); test(120, "2min"); test(7200, "2h"); test(7200, "2 hours"); test(86400, "1d"); test(604800, "1w"); test(604800, "1week"); test(1814400, "3 weeks"); test(2678400, "1month"); test(2678400, "1 month"); test(31536000, "365 days"); test(31556952, "1 year"); should_fail("two weeks"); should_fail("1m"); should_fail("1mi"); should_fail("1mo"); end); end); describe("parse_duration_lax", function () local function test(expected, duration) return assert.equal(expected, human_io.parse_duration_lax(duration), ("%q -> %d"):format(duration, expected)); end it("works", function () test(1, "1s"); test(60, "1mi"); test(60, "1min"); test(60, "1 min"); test(60, "1 minute"); test(120, "2min"); test(7200, "2h"); test(7200, "2 hours"); test(86400, "1d"); test(604800, "1w"); test(604800, "1week"); test(1814400, "3 weeks"); test(2678400, "1m"); test(2678400, "1mo"); test(2678400, "1month"); test(2678400, "1 month"); test(31536000, "365 days"); test(31556952, "1 year"); return assert.is_nil(human_io.parse_duration_lax("two weeks"), "\"2 weeks\" -> nil"); end); end); end);