Files
2026-07-13 12:32:21 +08:00

77 lines
2.1 KiB
Lua

local signals = require "kong.cmd.utils.nginx_signals"
local pl_path = require "pl.path"
local pl_file = require "pl.file"
local pl_dir = require "pl.dir"
local shell = require "resty.shell"
describe("kong cli utils", function()
describe("nginx_signals", function()
describe("find_nginx_bin()", function()
local tmpdir
before_each(function()
tmpdir = pl_path.tmpname()
assert(os.remove(tmpdir))
end)
after_each(function()
pcall(pl_dir.rmtree, tmpdir)
end)
local function fake_nginx_binary(version)
local bin_dir = pl_path.join(tmpdir, "nginx/sbin")
pl_dir.makepath(bin_dir)
local nginx = pl_path.join(bin_dir, "nginx")
pl_file.write(nginx, string.format(
[[#!/bin/sh
echo 'nginx version: openresty/%s' >&2]], version
))
assert(shell.run("chmod +x " .. nginx, nil, 0))
return nginx
end
it("works with empty/unset input", function()
local bin, err = signals.find_nginx_bin()
assert.is_nil(err)
assert.matches("sbin/nginx", bin)
assert.truthy(pl_path.exists(bin))
end)
it("works when openresty_path is unset", function()
local bin, err = signals.find_nginx_bin({})
assert.is_nil(err)
assert.matches("sbin/nginx", bin)
assert.truthy(pl_path.exists(bin))
end)
it("prefers `openresty_path` when supplied", function()
local meta = require "kong.meta"
local version = meta._DEPENDENCIES.nginx[1]
local nginx = fake_nginx_binary(version)
local bin, err = signals.find_nginx_bin({ openresty_path = tmpdir })
assert.is_nil(err)
assert.equals(nginx, bin)
end)
it("returns nil+error if a compatible nginx bin is not found in `openresty_path`", function()
fake_nginx_binary("1.0.1")
local bin, err = signals.find_nginx_bin({ openresty_path = tmpdir })
assert.is_nil(bin)
assert.not_nil(err)
assert.matches("could not find OpenResty", err)
end)
end)
end)
end)