diff options
| author | William Boman <william@redwill.se> | 2023-03-12 08:21:15 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-12 08:21:15 +0100 |
| commit | a01d02ad7f680aec98a1e2ec35b04cedd307cfa8 (patch) | |
| tree | 1a09e274a1f2a4da85b911abcbb182a211035501 /tests/mason-core/installer/managers | |
| parent | feat(golangci-lint): support linux_arm64 (#1089) (diff) | |
| download | mason-a01d02ad7f680aec98a1e2ec35b04cedd307cfa8.tar mason-a01d02ad7f680aec98a1e2ec35b04cedd307cfa8.tar.gz mason-a01d02ad7f680aec98a1e2ec35b04cedd307cfa8.tar.bz2 mason-a01d02ad7f680aec98a1e2ec35b04cedd307cfa8.tar.lz mason-a01d02ad7f680aec98a1e2ec35b04cedd307cfa8.tar.xz mason-a01d02ad7f680aec98a1e2ec35b04cedd307cfa8.tar.zst mason-a01d02ad7f680aec98a1e2ec35b04cedd307cfa8.zip | |
feat: add github registry source capabilities (#1091)
Diffstat (limited to 'tests/mason-core/installer/managers')
| -rw-r--r-- | tests/mason-core/installer/managers/cargo_spec.lua | 112 | ||||
| -rw-r--r-- | tests/mason-core/installer/managers/composer_spec.lua | 22 | ||||
| -rw-r--r-- | tests/mason-core/installer/managers/gem_spec.lua | 50 | ||||
| -rw-r--r-- | tests/mason-core/installer/managers/golang_spec.lua | 56 | ||||
| -rw-r--r-- | tests/mason-core/installer/managers/luarocks_spec.lua | 63 | ||||
| -rw-r--r-- | tests/mason-core/installer/managers/npm_spec.lua | 53 | ||||
| -rw-r--r-- | tests/mason-core/installer/managers/nuget_spec.lua | 21 | ||||
| -rw-r--r-- | tests/mason-core/installer/managers/opam_spec.lua | 20 | ||||
| -rw-r--r-- | tests/mason-core/installer/managers/pypi_spec.lua | 126 | ||||
| -rw-r--r-- | tests/mason-core/installer/managers/std_spec.lua | 150 |
10 files changed, 673 insertions, 0 deletions
diff --git a/tests/mason-core/installer/managers/cargo_spec.lua b/tests/mason-core/installer/managers/cargo_spec.lua new file mode 100644 index 00000000..63768f4d --- /dev/null +++ b/tests/mason-core/installer/managers/cargo_spec.lua @@ -0,0 +1,112 @@ +local installer = require "mason-core.installer" +local cargo = require "mason-core.installer.managers.cargo" + +describe("cargo manager", function() + it("should install", function() + local handle = InstallHandleGenerator "dummy" + local ctx = InstallContextGenerator(handle) + installer.exec_in_context(ctx, function() + cargo.install("my-crate", "1.0.0") + end) + + assert.spy(ctx.spawn.cargo).was_called(1) + assert.spy(ctx.spawn.cargo).was_called_with { + "install", + "--root", + ".", + { "--version", "1.0.0" }, + vim.NIL, -- features + vim.NIL, -- locked + "my-crate", + } + end) + + it("should install locked", function() + local handle = InstallHandleGenerator "dummy" + local ctx = InstallContextGenerator(handle) + installer.exec_in_context(ctx, function() + cargo.install("my-crate", "1.0.0", { + locked = true, + }) + end) + + assert.spy(ctx.spawn.cargo).was_called(1) + assert.spy(ctx.spawn.cargo).was_called_with { + "install", + "--root", + ".", + { "--version", "1.0.0" }, + vim.NIL, -- features + "--locked", -- locked + "my-crate", + } + end) + + it("should install provided features", function() + local handle = InstallHandleGenerator "dummy" + local ctx = InstallContextGenerator(handle) + installer.exec_in_context(ctx, function() + cargo.install("my-crate", "1.0.0", { + features = "lsp,cli", + }) + end) + + assert.spy(ctx.spawn.cargo).was_called(1) + assert.spy(ctx.spawn.cargo).was_called_with { + "install", + "--root", + ".", + { "--version", "1.0.0" }, + { "--features", "lsp,cli" }, -- features + vim.NIL, -- locked + "my-crate", + } + end) + + it("should install git tag source", function() + local handle = InstallHandleGenerator "dummy" + local ctx = InstallContextGenerator(handle) + installer.exec_in_context(ctx, function() + cargo.install("my-crate", "1.0.0", { + git = { + url = "https://github.com/neovim/neovim", + }, + }) + end) + + assert.spy(ctx.spawn.cargo).was_called(1) + assert.spy(ctx.spawn.cargo).was_called_with { + "install", + "--root", + ".", + { "--git", "https://github.com/neovim/neovim", "--tag", "1.0.0" }, + vim.NIL, -- features + vim.NIL, -- locked + "my-crate", + } + end) + + it("should install git rev source", function() + local handle = InstallHandleGenerator "dummy" + local ctx = InstallContextGenerator(handle) + installer.exec_in_context(ctx, function() + cargo.install("my-crate", "16dfc89abd413c391e5b63ae5d132c22843ce9a7", { + git = { + url = "https://github.com/neovim/neovim", + rev = true, + }, + }) + end) + + assert.spy(ctx.spawn.cargo).was_called(1) + assert.spy(ctx.spawn.cargo).was_called_with { + "install", + "--root", + ".", + { "--git", "https://github.com/neovim/neovim", "--rev", "16dfc89abd413c391e5b63ae5d132c22843ce9a7" }, + vim.NIL, -- features + vim.NIL, -- locked + "my-crate", + } + end) +end) diff --git a/tests/mason-core/installer/managers/composer_spec.lua b/tests/mason-core/installer/managers/composer_spec.lua new file mode 100644 index 00000000..a4e1f82f --- /dev/null +++ b/tests/mason-core/installer/managers/composer_spec.lua @@ -0,0 +1,22 @@ +local installer = require "mason-core.installer" +local composer = require "mason-core.installer.managers.composer" + +describe("composer manager", function() + it("should install", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + composer.install("my-package", "1.0.0") + end) + + assert.spy(ctx.spawn.composer).was_called(2) + assert.spy(ctx.spawn.composer).was_called_with { + "init", + "--no-interaction", + "--stability=stable", + } + assert.spy(ctx.spawn.composer).was_called_with { + "require", + "my-package:1.0.0", + } + end) +end) diff --git a/tests/mason-core/installer/managers/gem_spec.lua b/tests/mason-core/installer/managers/gem_spec.lua new file mode 100644 index 00000000..580c6432 --- /dev/null +++ b/tests/mason-core/installer/managers/gem_spec.lua @@ -0,0 +1,50 @@ +local installer = require "mason-core.installer" +local gem = require "mason-core.installer.managers.gem" + +describe("gem manager", function() + it("should install", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + gem.install("my-gem", "1.0.0") + end) + + assert.spy(ctx.spawn.gem).was_called(1) + assert.spy(ctx.spawn.gem).was_called_with { + "install", + "--no-user-install", + "--no-format-executable", + "--install-dir=.", + "--bindir=bin", + "--no-document", + "my-gem:1.0.0", + vim.NIL, -- extra_packages + env = { + GEM_HOME = ctx.cwd:get(), + }, + } + end) + + it("should install extra packages", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + gem.install("my-gem", "1.0.0", { + extra_packages = { "extra-gem" }, + }) + end) + + assert.spy(ctx.spawn.gem).was_called(1) + assert.spy(ctx.spawn.gem).was_called_with { + "install", + "--no-user-install", + "--no-format-executable", + "--install-dir=.", + "--bindir=bin", + "--no-document", + "my-gem:1.0.0", + { "extra-gem" }, + env = { + GEM_HOME = ctx.cwd:get(), + }, + } + end) +end) diff --git a/tests/mason-core/installer/managers/golang_spec.lua b/tests/mason-core/installer/managers/golang_spec.lua new file mode 100644 index 00000000..cdad6e25 --- /dev/null +++ b/tests/mason-core/installer/managers/golang_spec.lua @@ -0,0 +1,56 @@ +local installer = require "mason-core.installer" +local golang = require "mason-core.installer.managers.golang" + +describe("golang manager", function() + it("should install", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + golang.install("my-golang", "1.0.0") + end) + + assert.spy(ctx.spawn.go).was_called(1) + assert.spy(ctx.spawn.go).was_called_with { + "install", + "-v", + "my-golang@1.0.0", + env = { + GOBIN = ctx.cwd:get(), + }, + } + end) + + it("should install extra packages", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + golang.install("my-golang", "1.0.0", { + extra_packages = { "extra", "package" }, + }) + end) + + assert.spy(ctx.spawn.go).was_called(3) + assert.spy(ctx.spawn.go).was_called_with { + "install", + "-v", + "my-golang@1.0.0", + env = { + GOBIN = ctx.cwd:get(), + }, + } + assert.spy(ctx.spawn.go).was_called_with { + "install", + "-v", + "extra@latest", + env = { + GOBIN = ctx.cwd:get(), + }, + } + assert.spy(ctx.spawn.go).was_called_with { + "install", + "-v", + "package@latest", + env = { + GOBIN = ctx.cwd:get(), + }, + } + end) +end) diff --git a/tests/mason-core/installer/managers/luarocks_spec.lua b/tests/mason-core/installer/managers/luarocks_spec.lua new file mode 100644 index 00000000..69ac3946 --- /dev/null +++ b/tests/mason-core/installer/managers/luarocks_spec.lua @@ -0,0 +1,63 @@ +local installer = require "mason-core.installer" +local stub = require "luassert.stub" +local luarocks = require "mason-core.installer.managers.luarocks" + +describe("luarocks manager", function() + it("should install", function() + local ctx = create_dummy_context() + stub(ctx, "promote_cwd") + installer.exec_in_context(ctx, function() + luarocks.install("my-rock", "1.0.0") + end) + + assert.spy(ctx.promote_cwd).was_called(1) + assert.spy(ctx.spawn.luarocks).was_called(1) + assert.spy(ctx.spawn.luarocks).was_called_with { + "install", + { "--tree", ctx.cwd:get() }, + vim.NIL, -- dev + vim.NIL, -- server + { "my-rock", "1.0.0" }, + } + end) + + it("should install dev mode", function() + local ctx = create_dummy_context() + stub(ctx, "promote_cwd") + installer.exec_in_context(ctx, function() + luarocks.install("my-rock", "1.0.0", { + dev = true, + }) + end) + + assert.spy(ctx.promote_cwd).was_called(1) + assert.spy(ctx.spawn.luarocks).was_called(1) + assert.spy(ctx.spawn.luarocks).was_called_with { + "install", + { "--tree", ctx.cwd:get() }, + "--dev", + vim.NIL, -- server + { "my-rock", "1.0.0" }, + } + end) + + it("should install using provided server", function() + local ctx = create_dummy_context() + stub(ctx, "promote_cwd") + installer.exec_in_context(ctx, function() + luarocks.install("my-rock", "1.0.0", { + server = "https://luarocks.org/dev", + }) + end) + + assert.spy(ctx.promote_cwd).was_called(1) + assert.spy(ctx.spawn.luarocks).was_called(1) + assert.spy(ctx.spawn.luarocks).was_called_with { + "install", + { "--tree", ctx.cwd:get() }, + vim.NIL, -- dev + "--server=https://luarocks.org/dev", + { "my-rock", "1.0.0" }, + } + end) +end) diff --git a/tests/mason-core/installer/managers/npm_spec.lua b/tests/mason-core/installer/managers/npm_spec.lua new file mode 100644 index 00000000..655acb64 --- /dev/null +++ b/tests/mason-core/installer/managers/npm_spec.lua @@ -0,0 +1,53 @@ +local installer = require "mason-core.installer" +local stub = require "luassert.stub" +local match = require "luassert.match" +local npm = require "mason-core.installer.managers.npm" + +describe("npm manager", function() + it("should init package.json", function() + local ctx = create_dummy_context() + stub(ctx.fs, "append_file") + installer.exec_in_context(ctx, function() + npm.init() + end) + + assert.spy(ctx.spawn.npm).was_called(1) + assert.spy(ctx.spawn.npm).was_called_with { + "init", + "--yes", + "--scope=mason", + } + assert.spy(ctx.fs.append_file).was_called(1) + assert.spy(ctx.fs.append_file).was_called_with(match.is_ref(ctx.fs), ".npmrc", "global-style=true") + end) + + it("should install", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + npm.install("my-package", "1.0.0") + end) + + assert.spy(ctx.spawn.npm).was_called(1) + assert.spy(ctx.spawn.npm).was_called_with { + "install", + "my-package@1.0.0", + vim.NIL, -- extra_packages + } + end) + + it("should install extra packages", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + npm.install("my-package", "1.0.0", { + extra_packages = { "extra-package" }, + }) + end) + + assert.spy(ctx.spawn.npm).was_called(1) + assert.spy(ctx.spawn.npm).was_called_with { + "install", + "my-package@1.0.0", + { "extra-package" }, + } + end) +end) diff --git a/tests/mason-core/installer/managers/nuget_spec.lua b/tests/mason-core/installer/managers/nuget_spec.lua new file mode 100644 index 00000000..1bdecf37 --- /dev/null +++ b/tests/mason-core/installer/managers/nuget_spec.lua @@ -0,0 +1,21 @@ +local installer = require "mason-core.installer" +local nuget = require "mason-core.installer.managers.nuget" + +describe("nuget manager", function() + it("should install", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + nuget.install("nuget-package", "1.0.0") + end) + + assert.spy(ctx.spawn.dotnet).was_called(1) + assert.spy(ctx.spawn.dotnet).was_called_with { + "tool", + "update", + "--tool-path", + ".", + { "--version", "1.0.0" }, + "nuget-package", + } + end) +end) diff --git a/tests/mason-core/installer/managers/opam_spec.lua b/tests/mason-core/installer/managers/opam_spec.lua new file mode 100644 index 00000000..c1fe59f6 --- /dev/null +++ b/tests/mason-core/installer/managers/opam_spec.lua @@ -0,0 +1,20 @@ +local installer = require "mason-core.installer" +local opam = require "mason-core.installer.managers.opam" + +describe("opam manager", function() + it("should install", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + opam.install("opam-package", "1.0.0") + end) + + assert.spy(ctx.spawn.opam).was_called(1) + assert.spy(ctx.spawn.opam).was_called_with { + "install", + "--destdir=.", + "--yes", + "--verbose", + "opam-package.1.0.0", + } + end) +end) diff --git a/tests/mason-core/installer/managers/pypi_spec.lua b/tests/mason-core/installer/managers/pypi_spec.lua new file mode 100644 index 00000000..f0a6cdc6 --- /dev/null +++ b/tests/mason-core/installer/managers/pypi_spec.lua @@ -0,0 +1,126 @@ +local installer = require "mason-core.installer" +local stub = require "luassert.stub" +local path = require "mason-core.path" +local pypi = require "mason-core.installer.managers.pypi" + +---@param ctx InstallContext +local function venv_py(ctx) + return path.concat { + ctx.cwd:get(), + "venv", + "bin", + "python", + } +end + +describe("pypi manager", function() + it("should init venv without upgrading pip", function() + local ctx = create_dummy_context() + stub(ctx, "promote_cwd") + installer.exec_in_context(ctx, function() + pypi.init { upgrade_pip = false } + end) + + assert.spy(ctx.promote_cwd).was_called(1) + assert.spy(ctx.spawn.python3).was_called(1) + assert.spy(ctx.spawn.python3).was_called_with { + "-m", + "venv", + "venv", + } + end) + + it("should init venv and upgrade pip", function() + local ctx = create_dummy_context() + stub(ctx, "promote_cwd") + installer.exec_in_context(ctx, function() + pypi.init { upgrade_pip = true, install_extra_args = { "--proxy", "http://localhost" } } + end) + + assert.spy(ctx.promote_cwd).was_called(1) + assert.spy(ctx.spawn.python3).was_called(1) + assert.spy(ctx.spawn.python3).was_called_with { + "-m", + "venv", + "venv", + } + assert.spy(ctx.spawn[venv_py(ctx)]).was_called(1) + assert.spy(ctx.spawn[venv_py(ctx)]).was_called_with { + "-m", + "pip", + "--disable-pip-version-check", + "install", + "-U", + { "--proxy", "http://localhost" }, + { "pip" }, + } + end) + + it("should install", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + pypi.install("pypi-package", "1.0.0") + end) + + assert.spy(ctx.spawn[venv_py(ctx)]).was_called(1) + assert.spy(ctx.spawn[venv_py(ctx)]).was_called_with { + "-m", + "pip", + "--disable-pip-version-check", + "install", + "-U", + vim.NIL, -- install_extra_args + { + "pypi-package==1.0.0", + vim.NIL, -- extra_packages + }, + } + end) + + it("should install extra specifier", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + pypi.install("pypi-package", "1.0.0", { + extra = "lsp", + }) + end) + + assert.spy(ctx.spawn[venv_py(ctx)]).was_called(1) + assert.spy(ctx.spawn[venv_py(ctx)]).was_called_with { + "-m", + "pip", + "--disable-pip-version-check", + "install", + "-U", + vim.NIL, -- install_extra_args + { + "pypi-package[lsp]==1.0.0", + vim.NIL, -- extra_packages + }, + } + end) + + it("should install extra packages", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + pypi.install("pypi-package", "1.0.0", { + extra_packages = { "extra-package" }, + install_extra_args = { "--proxy", "http://localhost:9000" }, + }) + end) + + assert.spy(ctx.spawn[venv_py(ctx)]).was_called(1) + assert.spy(ctx.spawn[venv_py(ctx)]).was_called_with { + "-m", + "pip", + "--disable-pip-version-check", + "install", + "-U", + { "--proxy", "http://localhost:9000" }, + { + "pypi-package==1.0.0", + { "extra-package" }, + }, + } + end) +end) diff --git a/tests/mason-core/installer/managers/std_spec.lua b/tests/mason-core/installer/managers/std_spec.lua new file mode 100644 index 00000000..feff9abe --- /dev/null +++ b/tests/mason-core/installer/managers/std_spec.lua @@ -0,0 +1,150 @@ +local installer = require "mason-core.installer" +local stub = require "luassert.stub" +local match = require "luassert.match" +local std = require "mason-core.installer.managers.std" + +describe("std unpack [Unix]", function() + it("should unpack .gz", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + std.unpack "file.gz" + end) + + assert.spy(ctx.spawn.gzip).was_called(1) + assert.spy(ctx.spawn.gzip).was_called_with { "-d", "file.gz" } + end) + + it("should unpack .tar", function() + local ctx = create_dummy_context() + stub(ctx.fs, "unlink") + installer.exec_in_context(ctx, function() + std.unpack "file.tar" + end) + + assert.spy(ctx.spawn.tar).was_called(1) + assert.spy(ctx.spawn.tar).was_called_with { "--no-same-owner", "-xvf", "file.tar" } + assert.spy(ctx.fs.unlink).was_called(1) + assert.spy(ctx.fs.unlink).was_called_with(match.is_ref(ctx.fs), "file.tar") + end) + + it("should unpack .tar.bz2", function() + local ctx = create_dummy_context() + stub(ctx.fs, "unlink") + installer.exec_in_context(ctx, function() + std.unpack "file.tar.bz2" + end) + + assert.spy(ctx.spawn.tar).was_called(1) + assert.spy(ctx.spawn.tar).was_called_with { "--no-same-owner", "-xvf", "file.tar.bz2" } + assert.spy(ctx.fs.unlink).was_called(1) + assert.spy(ctx.fs.unlink).was_called_with(match.is_ref(ctx.fs), "file.tar.bz2") + end) + + it("should unpack .tar.gz", function() + local ctx = create_dummy_context() + stub(ctx.fs, "unlink") + installer.exec_in_context(ctx, function() + std.unpack "file.tar.gz" + end) + + assert.spy(ctx.spawn.tar).was_called(1) + assert.spy(ctx.spawn.tar).was_called_with { "--no-same-owner", "-xvf", "file.tar.gz" } + assert.spy(ctx.fs.unlink).was_called(1) + assert.spy(ctx.fs.unlink).was_called_with(match.is_ref(ctx.fs), "file.tar.gz") + end) + + it("should unpack .tar.xz", function() + local ctx = create_dummy_context() + stub(ctx.fs, "unlink") + installer.exec_in_context(ctx, function() + std.unpack "file.tar.xz" + end) + + assert.spy(ctx.spawn.tar).was_called(1) + assert.spy(ctx.spawn.tar).was_called_with { "--no-same-owner", "-xvf", "file.tar.xz" } + assert.spy(ctx.fs.unlink).was_called(1) + assert.spy(ctx.fs.unlink).was_called_with(match.is_ref(ctx.fs), "file.tar.xz") + end) + + it("should unpack .tar.zst", function() + local ctx = create_dummy_context() + stub(ctx.fs, "unlink") + installer.exec_in_context(ctx, function() + std.unpack "file.tar.zst" + end) + + assert.spy(ctx.spawn.tar).was_called(1) + assert.spy(ctx.spawn.tar).was_called_with { "--no-same-owner", "-xvf", "file.tar.zst" } + assert.spy(ctx.fs.unlink).was_called(1) + assert.spy(ctx.fs.unlink).was_called_with(match.is_ref(ctx.fs), "file.tar.zst") + end) + + it("should unpack .vsix", function() + local ctx = create_dummy_context() + stub(ctx.fs, "unlink") + installer.exec_in_context(ctx, function() + std.unpack "file.vsix" + end) + + assert.spy(ctx.spawn.unzip).was_called(1) + assert.spy(ctx.spawn.unzip).was_called_with { "-d", ".", "file.vsix" } + assert.spy(ctx.fs.unlink).was_called(1) + assert.spy(ctx.fs.unlink).was_called_with(match.is_ref(ctx.fs), "file.vsix") + end) + + it("should unpack .zip", function() + local ctx = create_dummy_context() + stub(ctx.fs, "unlink") + installer.exec_in_context(ctx, function() + std.unpack "file.zip" + end) + + assert.spy(ctx.spawn.unzip).was_called(1) + assert.spy(ctx.spawn.unzip).was_called_with { "-d", ".", "file.zip" } + assert.spy(ctx.fs.unlink).was_called(1) + assert.spy(ctx.fs.unlink).was_called_with(match.is_ref(ctx.fs), "file.zip") + end) +end) + +describe("std clone", function() + it("should clone", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + std.clone "https://github.com/williamboman/mason.nvim" + end) + + assert.spy(ctx.spawn.git).was_called(1) + assert.spy(ctx.spawn.git).was_called_with { + "clone", + "--depth", + "1", + vim.NIL, -- recursive + "https://github.com/williamboman/mason.nvim", + ".", + } + end) + + it("should clone and checkout rev", function() + local ctx = create_dummy_context() + installer.exec_in_context(ctx, function() + std.clone("https://github.com/williamboman/mason.nvim", { + rev = "e1fd03b1856cb5ad8425f49e18353dc524b02f91", + recursive = true, + }) + end) + + assert.spy(ctx.spawn.git).was_called(3) + assert.spy(ctx.spawn.git).was_called_with { + "clone", + "--depth", + "1", + "--recursive", + "https://github.com/williamboman/mason.nvim", + ".", + } + assert + .spy(ctx.spawn.git) + .was_called_with { "fetch", "--depth", "1", "origin", "e1fd03b1856cb5ad8425f49e18353dc524b02f91" } + assert.spy(ctx.spawn.git).was_called_with { "checkout", "FETCH_HEAD" } + end) +end) |
