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", function() 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)