aboutsummaryrefslogtreecommitdiffstats
path: root/tests/core/managers/cargo_spec.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-07-08 18:34:38 +0200
committerGitHub <noreply@github.com>2022-07-08 18:34:38 +0200
commit976aa4fbee8a070f362cab6f6ec84e9251a90cf9 (patch)
tree5e8d9c9c59444a25c7801b8f39763c4ba6e1f76d /tests/core/managers/cargo_spec.lua
parentfeat: add gotests, gomodifytags, impl (#28) (diff)
downloadmason-976aa4fbee8a070f362cab6f6ec84e9251a90cf9.tar
mason-976aa4fbee8a070f362cab6f6ec84e9251a90cf9.tar.gz
mason-976aa4fbee8a070f362cab6f6ec84e9251a90cf9.tar.bz2
mason-976aa4fbee8a070f362cab6f6ec84e9251a90cf9.tar.lz
mason-976aa4fbee8a070f362cab6f6ec84e9251a90cf9.tar.xz
mason-976aa4fbee8a070f362cab6f6ec84e9251a90cf9.tar.zst
mason-976aa4fbee8a070f362cab6f6ec84e9251a90cf9.zip
refactor: add mason-schemas and mason-core modules (#29)
* refactor: add mason-schemas and move generated filetype map to mason-lspconfig * refactor: add mason-core module
Diffstat (limited to 'tests/core/managers/cargo_spec.lua')
-rw-r--r--tests/core/managers/cargo_spec.lua226
1 files changed, 0 insertions, 226 deletions
diff --git a/tests/core/managers/cargo_spec.lua b/tests/core/managers/cargo_spec.lua
deleted file mode 100644
index 59bb75da..00000000
--- a/tests/core/managers/cargo_spec.lua
+++ /dev/null
@@ -1,226 +0,0 @@
-local spy = require "luassert.spy"
-local match = require "luassert.match"
-local mock = require "luassert.mock"
-local Optional = require "mason.core.optional"
-local installer = require "mason.core.installer"
-local cargo = require "mason.core.managers.cargo"
-local Result = require "mason.core.result"
-local spawn = require "mason.core.spawn"
-local path = require "mason.core.path"
-
-describe("cargo manager", function()
- it(
- "should call cargo install",
- async_test(function()
- local handle = InstallHandleGenerator "dummy"
- local ctx = InstallContextGenerator(handle, { requested_version = "42.13.37" })
- installer.run_installer(ctx, cargo.crate "my-crate")
- assert.spy(ctx.spawn.cargo).was_called(1)
- assert.spy(ctx.spawn.cargo).was_called_with {
- "install",
- "--root",
- ".",
- "--locked",
- { "--version", "42.13.37" },
- vim.NIL, -- --features
- "my-crate",
- }
- end)
- )
-
- it(
- "should call cargo install with git source",
- async_test(function()
- local handle = InstallHandleGenerator "dummy"
- local ctx = InstallContextGenerator(handle)
- installer.run_installer(ctx, cargo.crate("https://my-crate.git", { git = true }))
- assert.spy(ctx.spawn.cargo).was_called(1)
- assert.spy(ctx.spawn.cargo).was_called_with {
- "install",
- "--root",
- ".",
- "--locked",
- vim.NIL,
- vim.NIL, -- --features
- { "--git", "https://my-crate.git" },
- }
- end)
- )
-
- it(
- "should call cargo install with git source and a specific crate",
- async_test(function()
- local handle = InstallHandleGenerator "dummy"
- local ctx = InstallContextGenerator(handle)
- installer.run_installer(ctx, cargo.crate("crate-name", { git = "https://my-crate.git" }))
- assert.spy(ctx.spawn.cargo).was_called(1)
- assert.spy(ctx.spawn.cargo).was_called_with {
- "install",
- "--root",
- ".",
- "--locked",
- vim.NIL,
- vim.NIL, -- --features
- { "--git", "https://my-crate.git", "crate-name" },
- }
- end)
- )
-
- it(
- "should respect options",
- async_test(function()
- local handle = InstallHandleGenerator "dummy"
- local ctx = InstallContextGenerator(handle, { requested_version = "42.13.37" })
- installer.run_installer(ctx, cargo.crate("my-crate", { features = "lsp" }))
- assert.spy(ctx.spawn.cargo).was_called(1)
- assert.spy(ctx.spawn.cargo).was_called_with {
- "install",
- "--root",
- ".",
- "--locked",
- { "--version", "42.13.37" },
- { "--features", "lsp" },
- "my-crate",
- }
- end)
- )
-
- it(
- "should not allow combining version with git crate",
- async_test(function()
- local handle = InstallHandleGenerator "dummy"
- local ctx = InstallContextGenerator(handle, { requested_version = "42.13.37" })
- local err = assert.has_error(function()
- installer.run_installer(
- ctx,
- cargo.crate("my-crate", {
- git = true,
- })
- )
- end)
- assert.equals("Providing a version when installing a git crate is not allowed.", err)
- assert.spy(ctx.spawn.cargo).was_called(0)
- end)
- )
-
- it(
- "should provide receipt information",
- async_test(function()
- local handle = InstallHandleGenerator "dummy"
- local ctx = InstallContextGenerator(handle)
- installer.run_installer(ctx, cargo.crate "main-package")
- assert.same({
- type = "cargo",
- package = "main-package",
- }, ctx.receipt.primary_source)
- end)
- )
-end)
-
-describe("cargo version check", function()
- it("parses cargo installed packages output", function()
- assert.same(
- {
- ["bat"] = "0.18.3",
- ["exa"] = "0.10.1",
- ["git-select-branch"] = "0.1.1",
- ["hello_world"] = "0.0.1",
- ["rust-analyzer"] = "0.0.0",
- ["stylua"] = "0.11.2",
- ["zoxide"] = "0.5.0",
- },
- cargo.parse_installed_crates [[bat v0.18.3:
- bat
-exa v0.10.1:
- exa
-git-select-branch v0.1.1:
- git-select-branch
-hello_world v0.0.1 (/private/var/folders/ky/s6yyhm_d24d0jsrql4t8k4p40000gn/T/tmp.LGbguATJHj):
- hello_world
-rust-analyzer v0.0.0 (/private/var/folders/ky/s6yyhm_d24d0jsrql4t8k4p40000gn/T/tmp.YlsHeA9JVL/crates/rust-analyzer):
- rust-analyzer
-stylua v0.11.2:
- stylua
-zoxide v0.5.0:
- zoxide
-]]
- )
- end)
-
- it(
- "should return current version",
- async_test(function()
- spawn.cargo = spy.new(function()
- return Result.success {
- stdout = [[flux-lsp v0.8.8 (https://github.com/influxdata/flux-lsp#4e452f07):
- flux-lsp
-]],
- }
- end)
-
- local result = cargo.get_installed_primary_package_version(
- mock.new {
- primary_source = mock.new {
- type = "cargo",
- package = "https://github.com/influxdata/flux-lsp",
- },
- },
- path.package_prefix "dummy"
- )
-
- assert.spy(spawn.cargo).was_called(1)
- assert.spy(spawn.cargo).was_called_with(match.tbl_containing {
- "install",
- "--list",
- "--root",
- ".",
- cwd = path.package_prefix "dummy",
- })
- assert.is_true(result:is_success())
- assert.equals("0.8.8", result:get_or_nil())
-
- spawn.cargo = nil
- end)
- )
-
- -- XXX: This test will actually send http request to crates.io's API. It's not mocked.
- it(
- "should return outdated primary package",
- async_test(function()
- spawn.cargo = spy.new(function()
- return Result.success {
- stdout = [[lelwel v0.4.0:
- lelwel-ls
-]],
- }
- end)
-
- local result = cargo.check_outdated_primary_package(
- mock.new {
- primary_source = mock.new {
- type = "cargo",
- package = "lelwel",
- },
- },
- path.package_prefix "dummy"
- )
-
- assert.spy(spawn.cargo).was_called(1)
- assert.spy(spawn.cargo).was_called_with(match.tbl_containing {
- "install",
- "--list",
- "--root",
- ".",
- cwd = path.package_prefix "dummy",
- })
- assert.is_true(result:is_success())
- assert.is_true(match.tbl_containing {
- current_version = "0.4.0",
- latest_version = match.matches "%d.%d.%d",
- name = "lelwel",
- }(result:get_or_nil()))
-
- spawn.cargo = nil
- end)
- )
-end)