Mercurial > prosody-hg
view spec/util_multitable_spec.lua @ 14205:a874c3f4570a 13.0
util.startup: Always apply umask (thanks Max Hearnden)
Commit c673ff1075bd removed mod_posix, and moved functionality into
util.startup, including applying a secure umask at runtime. However, the
new function was not called from the startup sequence, leading Prosody to run
with whatever umask it inherited from the environment.
Prosody Debian packages ship with a secure umask 027 in the systemd unit file
for the prosody service, so Debian systems using systemd are not affected.
prosodyctl calls the switch_user() function during startup, which would set
the umask, so prosodyctl commands which created files were unaffected.
This change makes both prosody and prosodyctl unconditionally set a secure
umask during the startup process.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 28 May 2026 17:25:46 +0100 |
| parents | 4878e4159e12 |
| children |
line wrap: on
line source
local multitable = require "util.multitable"; describe("util.multitable", function() describe("#new()", function() it("should create a multitable", function() local mt = multitable.new(); assert.is_table(mt, "Multitable is a table"); assert.is_function(mt.add, "Multitable has method add"); assert.is_function(mt.get, "Multitable has method get"); assert.is_function(mt.remove, "Multitable has method remove"); end); end); describe("#get()", function() it("should allow getting correctly", function() local function has_items(list, ...) local should_have = {}; if select('#', ...) > 0 then assert.is_table(list, "has_items: list is table", 3); else assert.is.falsy(list and #list > 0, "No items, and no list"); return true, "has-all"; end for n=1,select('#', ...) do should_have[select(n, ...)] = true; end for _, item in ipairs(list) do if not should_have[item] then return false, "too-many"; end should_have[item] = nil; end if next(should_have) then return false, "not-enough"; end return true, "has-all"; end local function assert_has_all(message, list, ...) return assert.are.equal(select(2, has_items(list, ...)), "has-all", message or "List has all expected items, and no more", 2); end local mt = multitable.new(); local trigger1, trigger2, trigger3 = {}, {}, {}; local item1, item2, item3 = {}, {}, {}; assert_has_all("Has no items with trigger1", mt:get(trigger1)); mt:add(1, 2, 3, item1); assert_has_all("Has item1 for 1, 2, 3", mt:get(1, 2, 3), item1); end); end); -- Doesn't support nil --[[ mt:add(nil, item1); mt:add(nil, item2); mt:add(nil, item3); assert_has_all("Has all items with (nil)", mt:get(nil), item1, item2, item3); ]] end);
