aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-test
diff options
context:
space:
mode:
Diffstat (limited to 'lua/mason-test')
-rw-r--r--lua/mason-test/helpers.lua33
1 files changed, 33 insertions, 0 deletions
diff --git a/lua/mason-test/helpers.lua b/lua/mason-test/helpers.lua
new file mode 100644
index 00000000..57b486ea
--- /dev/null
+++ b/lua/mason-test/helpers.lua
@@ -0,0 +1,33 @@
+local InstallContext = require "mason-core.installer.context"
+local InstallContextCwd = require "mason-core.installer.context.cwd"
+local InstallContextFs = require "mason-core.installer.context.fs"
+local InstallContextSpawn = require "mason-core.installer.context.spawn"
+local InstallHandle = require "mason-core.installer.handle"
+local InstallLocation = require "mason-core.installer.location"
+local Result = require "mason-core.result"
+local registry = require "mason-registry"
+local spy = require "luassert.spy"
+
+local M = {}
+
+---@param opts? { install_opts?: PackageInstallOpts, package?: string }
+function M.create_context(opts)
+ local pkg = registry.get_package(opts and opts.package or "dummy")
+ local handle = InstallHandle.new(pkg)
+ local location = InstallLocation.new "/tmp/install-dir"
+ local context_cwd = InstallContextCwd.new(location):set(location.dir)
+ local context_spawn = InstallContextSpawn.new(context_cwd, handle, false)
+ local context_fs = InstallContextFs.new(context_cwd)
+ local context = InstallContext.new(handle, context_cwd, context_spawn, context_fs, opts and opts.install_opts or {})
+ context.spawn = setmetatable({}, {
+ __index = function(s, cmd)
+ s[cmd] = spy.new(function()
+ return Result.success { stdout = nil, stderr = nil }
+ end)
+ return s[cmd]
+ end,
+ })
+ return context
+end
+
+return M