summaryrefslogtreecommitdiff
path: root/spec/unit/rockspecs_spec.lua
diff options
context:
space:
mode:
authorMike Vink <mike@pionative.com>2025-02-03 21:29:42 +0100
committerMike Vink <mike@pionative.com>2025-02-03 21:29:42 +0100
commit5155816b7b925dec5d5feb1568b1d7ceb00938b9 (patch)
treedeca28ea15e79f6f804c3d90d2ba757881638af5 /spec/unit/rockspecs_spec.lua
fetch tarballHEADmaster
Diffstat (limited to 'spec/unit/rockspecs_spec.lua')
-rw-r--r--spec/unit/rockspecs_spec.lua126
1 files changed, 126 insertions, 0 deletions
diff --git a/spec/unit/rockspecs_spec.lua b/spec/unit/rockspecs_spec.lua
new file mode 100644
index 0000000..7eb033c
--- /dev/null
+++ b/spec/unit/rockspecs_spec.lua
@@ -0,0 +1,126 @@
+
+local rockspecs = require("luarocks.rockspecs")
+local cfg = require("luarocks.core.cfg")
+local test_env = require("spec.util.test_env")
+local lfs = require("lfs")
+
+describe("luarocks.rockspecs #unit", function()
+
+ lazy_setup(function()
+ cfg.init()
+ end)
+
+ it("auto adds a build dependency for non-vendored build types", function()
+ local filename = "test-1.0-1.rockspec"
+ local rockspec = {
+ package = "test",
+ source = {
+ url = "",
+ },
+ build = {
+ type = "foo"
+ },
+ }
+ local globals = {}
+ local quick = true
+
+ local out = rockspecs.from_persisted_table(filename, rockspec, globals, quick)
+
+ assert(rockspec == out)
+ assert.same(rockspec.build_dependencies, {
+ { name = "luarocks-build-foo", constraints = {} },
+ })
+ end)
+
+ it("does not add a build dependency for non-vendored build type if it's already ther", function()
+ local filename = "test-1.0-1.rockspec"
+ local rockspec = {
+ package = "test",
+ source = {
+ url = "",
+ },
+ build_dependencies = {
+ "luarocks-build-cpp >= 1.0",
+ },
+ build = {
+ type = "cpp"
+ },
+ }
+ local globals = {}
+ local quick = true
+
+ local out = rockspecs.from_persisted_table(filename, rockspec, globals, quick)
+
+ assert(rockspec == out)
+
+ assert.same(rockspec.build_dependencies, {
+ { name = "luarocks-build-cpp", constraints = { { op = ">=", version = { string = "1.0", 1, 0 } } } },
+ })
+ end)
+
+ it("does not add a build dependency for 'none' build type", function()
+ local filename = "test-1.0-1.rockspec"
+ local rockspec = {
+ package = "test",
+ source = {
+ url = "",
+ },
+ build = {
+ type = "none"
+ },
+ }
+ local globals = {}
+ local quick = true
+
+ local out = rockspecs.from_persisted_table(filename, rockspec, globals, quick)
+
+ assert(rockspec == out)
+ assert.same(rockspec.build_dependencies, {})
+ end)
+
+ it("does not add a build dependency for 'module' build type", function()
+ local filename = "test-1.0-1.rockspec"
+ local rockspec = {
+ package = "test",
+ source = {
+ url = "",
+ },
+ build = {
+ type = "none"
+ },
+ }
+ local globals = {}
+ local quick = true
+
+ local out = rockspecs.from_persisted_table(filename, rockspec, globals, quick)
+
+ assert(rockspec == out)
+ assert.same(rockspec.build_dependencies, {})
+ end)
+
+ for d in lfs.dir(test_env.testing_paths.src_dir .. "/luarocks/build") do
+ local name = d:match("(.*)%.lua")
+ if name then
+ it("does not add a build dependency for vendored '" .. name .. "' type", function()
+ local filename = "test-1.0-1.rockspec"
+ local rockspec = {
+ package = "test",
+ source = {
+ url = "",
+ },
+ build = {
+ type = name
+ },
+ }
+ local globals = {}
+ local quick = true
+
+ local out = rockspecs.from_persisted_table(filename, rockspec, globals, quick)
+
+ assert(rockspec == out)
+ assert.same(rockspec.build_dependencies, {})
+ end)
+ end
+ end
+
+end)