1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
local InstallReceipt = require("mason-core.receipt").InstallReceipt
local fs = require "mason-core.fs"
local function fixture(file)
return vim.json.decode(fs.sync.read_file(("./tests/fixtures/receipts/%s"):format(file)))
end
describe("receipt ::", function()
it("should parse 1.0 structures", function()
local receipt = InstallReceipt.new(fixture "1.0.json")
assert.equals("angular-language-server", receipt:get_name())
assert.equals("1.0", receipt:get_schema_version())
assert.same({ type = "npm", package = "@angular/language-server" }, receipt:get_source())
assert.same({
bin = {
ngserver = "node_modules/.bin/ngserver",
},
}, receipt:get_links())
assert.is_true(receipt:is_schema_min "1.0")
end)
it("should parse 1.1 structures", function()
local receipt = InstallReceipt.new(fixture "1.1.json")
assert.equals("angular-language-server", receipt:get_name())
assert.equals("1.1", receipt:get_schema_version())
assert.same({
type = "registry+v1",
id = "pkg:npm/%40angular/language-server@16.1.8",
source = {
extra_packages = { "typescript@5.1.3" },
version = "16.1.8",
package = "@angular/language-server",
},
}, receipt:get_source())
assert.same({
bin = {
ngserver = "node_modules/.bin/ngserver",
},
opt = {},
share = {},
}, receipt:get_links())
assert.is_true(receipt:is_schema_min "1.1")
end)
it("should parse 1.2 structures", function()
local receipt = InstallReceipt.new(fixture "1.2.json")
assert.equals("angular-language-server", receipt:get_name())
assert.equals("1.2", receipt:get_schema_version())
assert.same({
type = "registry+v1",
id = "pkg:npm/%40angular/language-server@16.1.8",
}, receipt:get_source())
assert.same({
bin = {
ngserver = "node_modules/.bin/ngserver",
},
opt = {},
share = {},
}, receipt:get_links())
assert.is_true(receipt:is_schema_min "1.2")
end)
describe("schema versions ::", function()
it("should check minimum compatibility", function()
local receipt_1_0 = InstallReceipt.new { schema_version = "1.0" }
local receipt_1_1 = InstallReceipt.new { schema_version = "1.1" }
local receipt_1_2 = InstallReceipt.new { schema_version = "1.2" }
assert.is_true(receipt_1_0:is_schema_min "1.0")
assert.is_true(receipt_1_1:is_schema_min "1.0")
assert.is_true(receipt_1_2:is_schema_min "1.0")
assert.is_false(receipt_1_0:is_schema_min "1.1")
assert.is_true(receipt_1_1:is_schema_min "1.1")
assert.is_true(receipt_1_2:is_schema_min "1.1")
assert.is_false(receipt_1_0:is_schema_min "1.2")
assert.is_false(receipt_1_1:is_schema_min "1.2")
assert.is_true(receipt_1_2:is_schema_min "1.2")
end)
end)
end)
|