diff options
| author | William Boman <william@redwill.se> | 2022-07-08 18:34:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-08 18:34:38 +0200 |
| commit | 976aa4fbee8a070f362cab6f6ec84e9251a90cf9 (patch) | |
| tree | 5e8d9c9c59444a25c7801b8f39763c4ba6e1f76d /tests/core/managers/cargo_spec.lua | |
| parent | feat: add gotests, gomodifytags, impl (#28) (diff) | |
| download | mason-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.lua | 226 |
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) |
