aboutsummaryrefslogtreecommitdiffstats
path: root/tests/core/managers/gem_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/gem_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/gem_spec.lua')
-rw-r--r--tests/core/managers/gem_spec.lua206
1 files changed, 0 insertions, 206 deletions
diff --git a/tests/core/managers/gem_spec.lua b/tests/core/managers/gem_spec.lua
deleted file mode 100644
index 5beb6c95..00000000
--- a/tests/core/managers/gem_spec.lua
+++ /dev/null
@@ -1,206 +0,0 @@
-local spy = require "luassert.spy"
-local match = require "luassert.match"
-local mock = require "luassert.mock"
-local installer = require "mason.core.installer"
-local Optional = require "mason.core.optional"
-local gem = require "mason.core.managers.gem"
-local Result = require "mason.core.result"
-local spawn = require "mason.core.spawn"
-
-describe("gem manager", function()
- it(
- "should call gem install",
- async_test(function()
- local handle = InstallHandleGenerator "dummy"
- local ctx = InstallContextGenerator(handle, { requested_version = "42.13.37" })
- installer.run_installer(ctx, gem.packages { "main-package", "supporting-package", "supporting-package2" })
- assert.spy(ctx.spawn.gem).was_called(1)
- assert.spy(ctx.spawn.gem).was_called_with(match.tbl_containing {
- "install",
- "--no-user-install",
- "--install-dir=.",
- "--bindir=bin",
- "--no-document",
- match.tbl_containing {
- "main-package:42.13.37",
- "supporting-package",
- "supporting-package2",
- },
- })
- end)
- )
-
- it(
- "should provide receipt information",
- async_test(function()
- local handle = InstallHandleGenerator "dummy"
- local ctx = InstallContextGenerator(handle, { requested_version = "42.13.37" })
- installer.run_installer(ctx, gem.packages { "main-package", "supporting-package", "supporting-package2" })
- assert.same({
- type = "gem",
- package = "main-package",
- }, ctx.receipt.primary_source)
- assert.same({
- {
- type = "gem",
- package = "supporting-package",
- },
- {
- type = "gem",
- package = "supporting-package2",
- },
- }, ctx.receipt.secondary_sources)
- end)
- )
-end)
-
-describe("gem version check", function()
- it(
- "should return current version",
- async_test(function()
- spawn.gem = spy.new(function()
- return Result.success {
- stdout = [[shellwords (default: 0.1.0)
-singleton (default: 0.1.1)
-solargraph (0.44.0)
-stringio (default: 3.0.1)
-strscan (default: 3.0.1)
-]],
- }
- end)
-
- local result = gem.get_installed_primary_package_version(
- mock.new {
- primary_source = mock.new {
- type = "gem",
- package = "solargraph",
- },
- },
- "/tmp/install/dir"
- )
-
- assert.spy(spawn.gem).was_called(1)
- assert.spy(spawn.gem).was_called_with(match.tbl_containing {
- "list",
- cwd = "/tmp/install/dir",
- env = match.tbl_containing {
- GEM_HOME = "/tmp/install/dir",
- GEM_PATH = "/tmp/install/dir",
- PATH = match.matches "^/tmp/install/dir/bin:.*$",
- },
- })
- assert.is_true(result:is_success())
- assert.equals("0.44.0", result:get_or_nil())
-
- spawn.gem = nil
- end)
- )
-
- it(
- "should return outdated primary package",
- async_test(function()
- spawn.gem = spy.new(function()
- return Result.success {
- stdout = [[bigdecimal (3.1.1 < 3.1.2)
-cgi (0.3.1 < 0.3.2)
-logger (1.5.0 < 1.5.1)
-ostruct (0.5.2 < 0.5.3)
-reline (0.3.0 < 0.3.1)
-securerandom (0.1.1 < 0.2.0)
-solargraph (0.44.0 < 0.44.3)
-]],
- }
- end)
-
- local result = gem.check_outdated_primary_package(
- mock.new {
- primary_source = mock.new {
- type = "gem",
- package = "solargraph",
- },
- },
- "/tmp/install/dir"
- )
-
- assert.spy(spawn.gem).was_called(1)
- assert.spy(spawn.gem).was_called_with(match.tbl_containing {
- "outdated",
- cwd = "/tmp/install/dir",
- env = match.tbl_containing {
- GEM_HOME = "/tmp/install/dir",
- GEM_PATH = "/tmp/install/dir",
- PATH = match.matches "^/tmp/install/dir/bin:.*$",
- },
- })
- assert.is_true(result:is_success())
- assert.same({
- name = "solargraph",
- current_version = "0.44.0",
- latest_version = "0.44.3",
- }, result:get_or_nil())
-
- spawn.gem = nil
- end)
- )
-
- it(
- "should return failure if primary package is not outdated",
- async_test(function()
- spawn.gem = spy.new(function()
- return Result.success {
- stdout = "",
- }
- end)
-
- local result = gem.check_outdated_primary_package(
- mock.new {
- primary_source = mock.new {
- type = "gem",
- package = "solargraph",
- },
- },
- "/tmp/install/dir"
- )
-
- assert.is_true(result:is_failure())
- assert.equals("Primary package is not outdated.", result:err_or_nil())
- spawn.gem = nil
- end)
- )
-
- it("parses outdated gem output", function()
- local normalize = gem.parse_outdated_gem
- assert.same({
- name = "solargraph",
- current_version = "0.42.2",
- latest_version = "0.44.2",
- }, normalize [[solargraph (0.42.2 < 0.44.2)]])
- assert.same({
- name = "sorbet-runtime",
- current_version = "0.5.9307",
- latest_version = "0.5.9468",
- }, normalize [[sorbet-runtime (0.5.9307 < 0.5.9468)]])
- end)
-
- it("returns nil when unable to parse outdated gem", function()
- assert.is_nil(gem.parse_outdated_gem "a whole bunch of gibberish!")
- assert.is_nil(gem.parse_outdated_gem "")
- end)
-
- it("should parse gem list output", function()
- assert.same(
- {
- ["solargraph"] = "0.44.3",
- ["unicode-display_width"] = "2.1.0",
- },
- gem.parse_gem_list_output [[
-
-*** LOCAL GEMS ***
-
-nokogiri (1.13.3 arm64-darwin)
-solargraph (0.44.3)
-unicode-display_width (2.1.0)
-]]
- )
- end)
-end)