diff options
| author | Mike Vink <mike@pionative.com> | 2025-02-03 21:29:42 +0100 |
|---|---|---|
| committer | Mike Vink <mike@pionative.com> | 2025-02-03 21:29:42 +0100 |
| commit | 5155816b7b925dec5d5feb1568b1d7ceb00938b9 (patch) | |
| tree | deca28ea15e79f6f804c3d90d2ba757881638af5 /spec/cmd_spec.lua | |
Diffstat (limited to 'spec/cmd_spec.lua')
| -rw-r--r-- | spec/cmd_spec.lua | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/spec/cmd_spec.lua b/spec/cmd_spec.lua new file mode 100644 index 0000000..20248af --- /dev/null +++ b/spec/cmd_spec.lua @@ -0,0 +1,105 @@ +local test_env = require("spec.util.test_env") +local lfs = require("lfs") +local run = test_env.run + +describe("LuaRocks command line #integration", function() + + lazy_setup(function() + test_env.setup_specs() + end) + + describe("--version", function() + it("returns the LuaRocks version", function() + local output = run.luarocks("--version") + assert.match("LuaRocks main command-line interface", output, 1, true) + end) + + it("runs if Lua detection fails", function() + test_env.run_in_tmp(function(tmpdir) + test_env.write_file("bad_config.lua", [[ + variables = { + LUA_DIR = "/bad/lua/dir", + } + ]], finally) + local env = { + LUAROCKS_CONFIG = "bad_config.lua" + } + local output = run.luarocks("--version", env) + assert.match("LuaRocks main command-line interface", output, 1, true) + end, finally) + end) + end) + + describe("--lua-dir", function() + it("fails if given an invalid path", function() + local output = run.luarocks("--lua-dir=/bad/lua/path") + assert.match("Lua interpreter not found at /bad/lua/path", output, 1, true) + end) + + it("fails if given a valid path without Lua", function() + local output = run.luarocks("--lua-dir=.") + assert.match("Lua interpreter not found at .", output, 1, true) + end) + + it("passes if given a valid path with Lua", function() + assert.truthy(run.luarocks("--lua-dir=" .. test_env.testing_paths.luadir)) + end) + + it("passes if given a quoted path with Lua", function() + assert.truthy(run.luarocks("--lua-dir '" .. test_env.testing_paths.luadir .. "'")) + end) + end) + + describe("--lua-version", function() + it("fails if given something that is not a number", function() + local output = run.luarocks("--lua-version=bozo") + assert.match("malformed", output, 1, true) + end) + + it("sets the version independently of project tree", function() + test_env.run_in_tmp(function(tmpdir) + assert.truthy(run.luarocks_bool("init --lua-version=" .. test_env.lua_version .. " --lua-versions=" .. test_env.lua_version)) + + local output = run.luarocks("--lua-version=1.0") + assert.match("Version%s*:%s*1.0", output) + + output = run.luarocks("--lua-version=1.0 --project-tree=.") + assert.match("Version%s*:%s*1.0", output) + end, finally) + end) + end) + + it("detects version based on project tree", function() + test_env.run_in_tmp(function(tmpdir) + assert.truthy(run.luarocks_bool("init --lua-version=" .. test_env.lua_version)) + assert.truthy(run.luarocks_bool("config lua_version 1.0 --project-tree=" .. tmpdir .. "/lua_modules")) + + lfs.mkdir("aaa") + lfs.chdir("aaa") + lfs.mkdir("bbb") + lfs.chdir("bbb") + + local output = run.luarocks("") + assert.match("Version%s*:%s*1.0", output) + end, finally) + end) + + -- for backward compatibility + it("detects version of a project based on config", function() + test_env.run_in_tmp(function(tmpdir) + assert.truthy(run.luarocks_bool("init --lua-version=" .. test_env.lua_version)) + os.remove(".luarocks/config-" .. test_env.lua_version .. ".lua") + os.remove(".luarocks/default-lua-version.lua") + test_env.write_file(".luarocks/config-5.2.lua", [[ ]], finally) + + lfs.mkdir("aaa") + lfs.chdir("aaa") + lfs.mkdir("bbb") + lfs.chdir("bbb") + + local output = run.luarocks("") + assert.match("Version%s*:%s*5.2", output) + end, finally) + end) + +end) |
