diff --git a/lua/mason-core/installer/registry/init.lua b/lua/mason-core/installer/registry/init.lua index 6b03296f4..9373f8d07 100644 --- a/lua/mason-core/installer/registry/init.lua +++ b/lua/mason-core/installer/registry/init.lua @@ -132,7 +132,7 @@ function M.parse(spec, opts) log.trace("Parsed source for purl.", source.id, parsed_source) return { provider = provider, - source = parsed_source, + source = vim.tbl_extend("keep", parsed_source, source), raw_source = source, purl = purl, } @@ -204,7 +204,6 @@ function M.compile(spec, opts) ctx.receipt:with_primary_source { type = ctx.package.spec.schema, id = Purl.compile(parsed.purl), - source = parsed.source, } end):on_failure(function(err) error(err, 0) diff --git a/tests/mason-core/installer/registry/installer_spec.lua b/tests/mason-core/installer/registry/installer_spec.lua index 6ac25da94..51d9035e8 100644 --- a/tests/mason-core/installer/registry/installer_spec.lua +++ b/tests/mason-core/installer/registry/installer_spec.lua @@ -56,11 +56,32 @@ describe("registry installer :: parsing", function() version = "v1.2.3", }, parsed.purl) assert.same({ + id = "pkg:dummy/package-name@v1.2.3", package = "package-name", extra_info = "here", }, parsed.source) end) + it("should keep unmapped fields", function() + installer.register_provider("dummy", dummy_provider) + + local result = installer.parse({ + schema = "registry+v1", + source = { + id = "pkg:dummy/package-name@v1.2.3", + bin = "node:server.js", + }, + }, {}) + local parsed = result:get_or_nil() + + assert.is_true(result:is_success()) + assert.same({ + id = "pkg:dummy/package-name@v1.2.3", + package = "package-name", + bin = "node:server.js", + }, parsed.source) + end) + it("should reject incompatible schema versions", function() installer.register_provider("dummy", dummy_provider) @@ -277,6 +298,7 @@ describe("registry installer :: compiling", function() name = "package-name", version = "v1.2.3", }, { + id = "pkg:dummy/package-name@v1.2.3", package = "package-name", }) end diff --git a/tests/mason-core/installer/registry/providers/github/release_spec.lua b/tests/mason-core/installer/registry/providers/github/release_spec.lua index 47ac47c88..909eb36f3 100644 --- a/tests/mason-core/installer/registry/providers/github/release_spec.lua +++ b/tests/mason-core/installer/registry/providers/github/release_spec.lua @@ -225,6 +225,7 @@ describe("github provider :: release :: parsing", function() assert.is_true(result:is_success()) assert.same({ + id = "pkg:github/owner/repo@1.2.3", asset = { target = "darwin_x64", file = "old-asset.tar.gz", @@ -235,6 +236,17 @@ describe("github provider :: release :: parsing", function() out_file = "old-asset.tar.gz", }, }, + version_overrides = { + { + constraint = "semver:<=1.0.0", + asset = { + { + target = "darwin_x64", + file = "old-asset.tar.gz", + }, + }, + }, + }, repo = "owner/repo", }, parsed.source) end)