aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-09-17 22:35:38 +0200
committerGitHub <noreply@github.com>2022-09-17 22:35:38 +0200
commitd7eb2eeec566da6cfd1c61b1d7aa6fc592d1b296 (patch)
tree5f5ae4c7b55a90e9522fbaa4a04a1c5ccbafd0d8 /tests
parentfeat(editorconfig-checker): use the pre-packaged ec (#434) (diff)
downloadmason-d7eb2eeec566da6cfd1c61b1d7aa6fc592d1b296.tar
mason-d7eb2eeec566da6cfd1c61b1d7aa6fc592d1b296.tar.gz
mason-d7eb2eeec566da6cfd1c61b1d7aa6fc592d1b296.tar.bz2
mason-d7eb2eeec566da6cfd1c61b1d7aa6fc592d1b296.tar.lz
mason-d7eb2eeec566da6cfd1c61b1d7aa6fc592d1b296.tar.xz
mason-d7eb2eeec566da6cfd1c61b1d7aa6fc592d1b296.tar.zst
mason-d7eb2eeec566da6cfd1c61b1d7aa6fc592d1b296.zip
feat: more competent platform detection (#436)
Diffstat (limited to 'tests')
-rw-r--r--tests/mason-core/installer/context_spec.lua8
-rw-r--r--tests/mason-core/installer/linker_spec.lua8
-rw-r--r--tests/mason-core/platform_spec.lua57
3 files changed, 48 insertions, 25 deletions
diff --git a/tests/mason-core/installer/context_spec.lua b/tests/mason-core/installer/context_spec.lua
index 2523d33e..516aa7d2 100644
--- a/tests/mason-core/installer/context_spec.lua
+++ b/tests/mason-core/installer/context_spec.lua
@@ -36,10 +36,10 @@ exec bash -c 'echo $GREETING' "$@"]]
end)
it("should write shell exec wrapper on Windows", function()
- platform.is_mac = false
- platform.is_unix = false
- platform.is_linux = false
- platform.is_win = true
+ platform.is.mac = false
+ platform.is.unix = false
+ platform.is.linux = false
+ platform.is.win = true
local handle = InstallHandleGenerator "dummy"
local ctx = InstallContextGenerator(handle)
stub(ctx.fs, "write_file")
diff --git a/tests/mason-core/installer/linker_spec.lua b/tests/mason-core/installer/linker_spec.lua
index 71b7f7fe..cc14294b 100644
--- a/tests/mason-core/installer/linker_spec.lua
+++ b/tests/mason-core/installer/linker_spec.lua
@@ -64,10 +64,10 @@ describe("installer", function()
it(
"should write executable wrapper on Windows",
async_test(function()
- platform.is_mac = false
- platform.is_linux = false
- platform.is_unix = false
- platform.is_win = true
+ platform.is.mac = false
+ platform.is.linux = false
+ platform.is.unix = false
+ platform.is.win = true
local dummy = registry.get_package "dummy"
stub(fs.async, "file_exists")
diff --git a/tests/mason-core/platform_spec.lua b/tests/mason-core/platform_spec.lua
index 2c9d2035..7559e1ce 100644
--- a/tests/mason-core/platform_spec.lua
+++ b/tests/mason-core/platform_spec.lua
@@ -8,13 +8,24 @@ describe("platform", function()
return require "mason-core.platform"
end
- local function stub_mac(arch)
- arch = arch or "x86_64"
- stub(vim.fn, "has")
+ local function stub_uname(uname)
stub(vim.loop, "os_uname")
- vim.loop.os_uname.returns { machine = arch }
+ vim.loop.os_uname.returns(uname)
+ end
+
+ ---@param libc string
+ local function stub_libc(libc)
+ stub(os, "execute")
+ local exit_code = libc == "musl" and 0 or 1
+ -- selene: allow(incorrect_standard_library_use)
+ os.execute.on_call_with("ldd --version 2>&1 | grep -q musl").returns(nil, nil, exit_code)
+ end
+
+ local function stub_mac()
+ stub(vim.fn, "has")
vim.fn.has.on_call_with("mac").returns(1)
vim.fn.has.on_call_with("unix").returns(1)
+ vim.fn.has.on_call_with("linux").returns(0)
vim.fn.has.on_call_with(match._).returns(0)
end
@@ -22,6 +33,7 @@ describe("platform", function()
stub(vim.fn, "has")
vim.fn.has.on_call_with("mac").returns(0)
vim.fn.has.on_call_with("unix").returns(1)
+ vim.fn.has.on_call_with("linux").returns(1)
vim.fn.has.on_call_with(match._).returns(0)
end
@@ -32,7 +44,8 @@ describe("platform", function()
end
it("should be able to detect platform and arch", function()
- stub_mac "arm64"
+ stub_mac()
+ stub_uname { machine = "aarch64" }
assert.is_true(platform().is.mac_arm64)
assert.is_false(platform().is.mac_x64)
assert.is_false(platform().is.nothing)
@@ -40,40 +53,50 @@ describe("platform", function()
it("should be able to detect macos", function()
stub_mac()
- assert.is_true(platform().is_mac)
assert.is_true(platform().is.mac)
- assert.is_true(platform().is_unix)
assert.is_true(platform().is.unix)
- assert.is_false(platform().is_linux)
assert.is_false(platform().is.linux)
- assert.is_false(platform().is_win)
assert.is_false(platform().is.win)
end)
it("should be able to detect linux", function()
stub_linux()
- assert.is_false(platform().is_mac)
assert.is_false(platform().is.mac)
- assert.is_true(platform().is_unix)
assert.is_true(platform().is.unix)
- assert.is_true(platform().is_linux)
assert.is_true(platform().is.linux)
- assert.is_false(platform().is_win)
assert.is_false(platform().is.win)
end)
it("should be able to detect windows", function()
stub_windows()
- assert.is_false(platform().is_mac)
assert.is_false(platform().is.mac)
- assert.is_false(platform().is_unix)
assert.is_false(platform().is.unix)
- assert.is_false(platform().is_linux)
assert.is_false(platform().is.linux)
- assert.is_true(platform().is_win)
assert.is_true(platform().is.win)
end)
+ it("should be able to detect correct triple based on libc", function()
+ stub_linux()
+ stub_uname { machine = "aarch64" }
+ stub_libc "musl"
+ assert.is_false(platform().is.linux_x64_musl)
+ assert.is_false(platform().is.linux_x64_gnu)
+ assert.is_true(platform().is.linux_arm64_musl)
+ assert.is_false(platform().is.linux_arm64_gnu)
+ assert.is_false(platform().is.linux_arm64_gnu)
+ end)
+
+ it("should be able to detect correct triple based on sysname", function()
+ stub_linux()
+ stub_uname { machine = "aarch64", sysname = "OpenBSD" }
+ stub_libc "musl"
+ assert.is_false(platform().is.linux_x64_musl)
+ assert.is_false(platform().is.linux_x64_gnu)
+ assert.is_false(platform().is.linux_arm64_gnu)
+ assert.is_false(platform().is.linux_arm64_gnu)
+ assert.is_true(platform().is.linux_arm64_openbsd)
+ end)
+
it("should run correct case on linux", function()
local unix = spy.new()
local win = spy.new()