diff options
| author | William Boman <william@redwill.se> | 2022-08-15 21:37:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-15 19:37:38 +0000 |
| commit | 68d3d554e6d003ef01964f968fb1e44c14d87522 (patch) | |
| tree | 7c17d39a1473e8eaa969adfac5f5adb4e32dcb7b | |
| parent | fix(github): fix resolving asset file (#298) (diff) | |
| download | mason-68d3d554e6d003ef01964f968fb1e44c14d87522.tar mason-68d3d554e6d003ef01964f968fb1e44c14d87522.tar.gz mason-68d3d554e6d003ef01964f968fb1e44c14d87522.tar.bz2 mason-68d3d554e6d003ef01964f968fb1e44c14d87522.tar.lz mason-68d3d554e6d003ef01964f968fb1e44c14d87522.tar.xz mason-68d3d554e6d003ef01964f968fb1e44c14d87522.tar.zst mason-68d3d554e6d003ef01964f968fb1e44c14d87522.zip | |
test(github): add spec file for the github manager (#299)
| -rw-r--r-- | lua/mason-core/managers/github/init.lua | 3 | ||||
| -rw-r--r-- | tests/mason-core/managers/github_spec.lua | 52 |
2 files changed, 54 insertions, 1 deletions
diff --git a/lua/mason-core/managers/github/init.lua b/lua/mason-core/managers/github/init.lua index 5c76f817..373ed1a9 100644 --- a/lua/mason-core/managers/github/init.lua +++ b/lua/mason-core/managers/github/init.lua @@ -63,7 +63,8 @@ function M.release_file(opts) if type(opts.asset_file) == "function" then asset_file = opts.asset_file(release) else - asset_file = opts.asset_file + assert(type(opts.asset_file) == "string", "expected asset_file to be a string") + asset_file = opts.asset_file --[[@as string]] end if not asset_file then error( diff --git a/tests/mason-core/managers/github_spec.lua b/tests/mason-core/managers/github_spec.lua new file mode 100644 index 00000000..7d44f144 --- /dev/null +++ b/tests/mason-core/managers/github_spec.lua @@ -0,0 +1,52 @@ +local stub = require "luassert.stub" +local mock = require "luassert.mock" + +local Result = require "mason-core.result" +local installer = require "mason-core.installer" +local github = require "mason-core.managers.github" +local Optional = require "mason-core.optional" +local client = require "mason-core.managers.github.client" + +describe("github release file", function() + it( + "should use provided version", + async_test(function() + stub(client, "fetch_latest_release") + local handle = InstallHandleGenerator "dummy" + local ctx = InstallContextGenerator(handle) + local source = installer.run_installer(ctx, function() + return github.release_file { + repo = "williamboman/mason.nvim", + asset_file = "program.exe", + version = Optional.of "13.37", + } + end) + assert.spy(client.fetch_latest_release).was_not_called() + assert.equals("13.37", source.release) + end) + ) + + it( + "should use use dynamic asset_file", + async_test(function() + stub(client, "fetch_latest_release") + client.fetch_latest_release.returns(Result.success(mock.new { + tag_name = "im_the_tag", + })) + local handle = InstallHandleGenerator "dummy" + local ctx = InstallContextGenerator(handle) + local source = installer.run_installer(ctx, function() + return github.release_file { + repo = "williamboman/mason.nvim", + asset_file = function(version) + return version .. "_for_reals" + end, + } + end) + assert.spy(client.fetch_latest_release).was_called(1) + assert.spy(client.fetch_latest_release).was_called_with "williamboman/mason.nvim" + assert.equals("im_the_tag", source.release) + assert.equals("im_the_tag_for_reals", source.asset_file) + end) + ) +end) |
