Skip to content

Commit 5664dd5

Browse files
fix: replace deprecated calls to vim.validate (#1876)
Co-authored-by: William Boman <william@redwill.se>
1 parent ce1682f commit 5664dd5

File tree

2 files changed

+74
-69
lines changed

2 files changed

+74
-69
lines changed

lua/mason-core/package/init.lua

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -86,30 +86,33 @@ local PackageMt = { __index = Package }
8686
---@field opt table<string, string>?
8787

8888
---@param spec PackageSpec | RegistryPackageSpec
89-
function Package.new(spec)
89+
local function validate_spec(spec)
90+
if vim.fn.has "nvim-0.11" ~= 1 then
91+
return
92+
end
9093
if is_registry_spec(spec) then
91-
vim.validate {
92-
name = { spec.name, "s" },
93-
description = { spec.description, "s" },
94-
homepage = { spec.homepage, "s" },
95-
licenses = { spec.licenses, "t" },
96-
categories = { spec.categories, "t" },
97-
languages = { spec.languages, "t" },
98-
source = { spec.source, "t" },
99-
bin = { spec.bin, { "t", "nil" } },
100-
share = { spec.share, { "t", "nil" } },
101-
}
94+
vim.validate("name", spec.name, "string")
95+
vim.validate("description", spec.description, "string")
96+
vim.validate("homepage", spec.homepage, "string")
97+
vim.validate("licenses", spec.licenses, "table")
98+
vim.validate("categories", spec.categories, "table")
99+
vim.validate("languages", spec.languages, "table")
100+
vim.validate("source", spec.source, "table")
101+
vim.validate("bin", spec.bin, { "table", "nil" })
102+
vim.validate("share", spec.share, { "table", "nil" })
102103
else
103-
vim.validate {
104-
name = { spec.name, "s" },
105-
desc = { spec.desc, "s" },
106-
homepage = { spec.homepage, "s" },
107-
categories = { spec.categories, "t" },
108-
languages = { spec.languages, "t" },
109-
install = { spec.install, "f" },
110-
}
104+
vim.validate("name", spec.name, "string")
105+
vim.validate("desc", spec.desc, "string")
106+
vim.validate("homepage", spec.homepage, "string")
107+
vim.validate("categories", spec.categories, "table")
108+
vim.validate("languages", spec.languages, "table")
109+
vim.validate("install", spec.install, "function")
111110
end
111+
end
112112

113+
---@param spec PackageSpec | RegistryPackageSpec
114+
function Package.new(spec)
115+
validate_spec(spec)
113116
return EventEmitter.init(setmetatable({
114117
name = spec.name, -- for convenient access
115118
spec = spec,

tests/mason-core/package/package_spec.lua

Lines changed: 51 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -23,60 +23,62 @@ describe("package", function()
2323
assert.same({ "rust-analyzer", "nightly" }, parse "rust-analyzer@nightly")
2424
end)
2525

26-
it("should validate spec", function()
27-
local valid_spec = {
28-
name = "Package name",
29-
desc = "Package description",
30-
homepage = "https://example.com",
31-
categories = { Pkg.Cat.LSP },
32-
languages = { Pkg.Lang.Rust },
33-
install = function() end,
34-
}
35-
local function spec(fields)
36-
return setmetatable(fields, { __index = valid_spec })
37-
end
38-
assert.equals(
39-
"name: expected string, got number",
40-
assert.has_error(function()
41-
Pkg.new(spec { name = 23 })
42-
end)
43-
)
26+
if vim.fn.has "nvim-0.11" == 1 then
27+
it("should validate spec", function()
28+
local valid_spec = {
29+
name = "Package name",
30+
desc = "Package description",
31+
homepage = "https://example.com",
32+
categories = { Pkg.Cat.LSP },
33+
languages = { Pkg.Lang.Rust },
34+
install = function() end,
35+
}
36+
local function spec(fields)
37+
return setmetatable(fields, { __index = valid_spec })
38+
end
39+
assert.equals(
40+
"name: expected string, got number",
41+
assert.has_error(function()
42+
Pkg.new(spec { name = 23 })
43+
end)
44+
)
4445

45-
assert.equals(
46-
"desc: expected string, got number",
47-
assert.has_error(function()
48-
Pkg.new(spec { desc = 23 })
49-
end)
50-
)
46+
assert.equals(
47+
"desc: expected string, got number",
48+
assert.has_error(function()
49+
Pkg.new(spec { desc = 23 })
50+
end)
51+
)
5152

52-
assert.equals(
53-
"homepage: expected string, got number",
54-
assert.has_error(function()
55-
Pkg.new(spec { homepage = 23 })
56-
end)
57-
)
53+
assert.equals(
54+
"homepage: expected string, got number",
55+
assert.has_error(function()
56+
Pkg.new(spec { homepage = 23 })
57+
end)
58+
)
5859

59-
assert.equals(
60-
"categories: expected table, got number",
61-
assert.has_error(function()
62-
Pkg.new(spec { categories = 23 })
63-
end)
64-
)
60+
assert.equals(
61+
"categories: expected table, got number",
62+
assert.has_error(function()
63+
Pkg.new(spec { categories = 23 })
64+
end)
65+
)
6566

66-
assert.equals(
67-
"languages: expected table, got number",
68-
assert.has_error(function()
69-
Pkg.new(spec { languages = 23 })
70-
end)
71-
)
67+
assert.equals(
68+
"languages: expected table, got number",
69+
assert.has_error(function()
70+
Pkg.new(spec { languages = 23 })
71+
end)
72+
)
7273

73-
assert.equals(
74-
"install: expected function, got number",
75-
assert.has_error(function()
76-
Pkg.new(spec { install = 23 })
77-
end)
78-
)
79-
end)
74+
assert.equals(
75+
"install: expected function, got number",
76+
assert.has_error(function()
77+
Pkg.new(spec { install = 23 })
78+
end)
79+
)
80+
end)
81+
end
8082

8183
it("should create new handle", function()
8284
local dummy = registry.get_package "dummy"

0 commit comments

Comments
 (0)