diff options
| author | William Boman <william@redwill.se> | 2023-10-11 15:33:10 +0200 |
|---|---|---|
| committer | William Boman <william@redwill.se> | 2025-02-16 09:49:17 +0100 |
| commit | 40bb6ddfa84b91f58a53f9d92ce7a3ce0c57b9aa (patch) | |
| tree | 1c092b13b2c40c693db87f040410411977990cef /tests/mason-core/receipt_spec.lua | |
| parent | fix(package): support older receipt structures (#1520) (diff) | |
| download | mason-40bb6ddfa84b91f58a53f9d92ce7a3ce0c57b9aa.tar mason-40bb6ddfa84b91f58a53f9d92ce7a3ce0c57b9aa.tar.gz mason-40bb6ddfa84b91f58a53f9d92ce7a3ce0c57b9aa.tar.bz2 mason-40bb6ddfa84b91f58a53f9d92ce7a3ce0c57b9aa.tar.lz mason-40bb6ddfa84b91f58a53f9d92ce7a3ce0c57b9aa.tar.xz mason-40bb6ddfa84b91f58a53f9d92ce7a3ce0c57b9aa.tar.zst mason-40bb6ddfa84b91f58a53f9d92ce7a3ce0c57b9aa.zip | |
refactor(receipt): change receipt structure and remove old builder APIs (#1521)
Diffstat (limited to 'tests/mason-core/receipt_spec.lua')
| -rw-r--r-- | tests/mason-core/receipt_spec.lua | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/mason-core/receipt_spec.lua b/tests/mason-core/receipt_spec.lua new file mode 100644 index 00000000..05ce1439 --- /dev/null +++ b/tests/mason-core/receipt_spec.lua @@ -0,0 +1,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) |
