-
Notifications
You must be signed in to change notification settings - Fork 0
test
luarocks test - Run the test suite for the Lua project in the current directory.
luarocks test [-h] [--test-type <type>] [<rockspec>] [<args>] ...
If the first argument is a rockspec, it will use it to determine the parameters for running tests; otherwise, it will attempt to detect the rockspec.
Any additional arguments are forwarded to the test suite. To make sure that test suite flags are not interpreted as LuaRocks flags, use -- to separate LuaRocks arguments from test suite arguments.
-
rockspec- Project rockspec. -
args- Test suite arguments.
-
--test-type <type>- Specify the test suite type manually if it was not specified in the rockspec and it could not be auto-detected.
There are two test types that ship by default with LuaRocks: busted and command. They can be specified explicitly in a rockspec in the test.type field. Custom test types can be loaded using the test_dependencies field; a dependency can declare a new test type by adding a module in the luarocks.test.* namespace; it can then be used as a test type in the rockspec.
You can enable the busted test type adding a top-level test table in a rockspec and setting its type to busted. The busted type can be auto-detected if the project's source contains a configuration file called .busted, so if a project has that file luarocks test can be used to launch Busted even if it doesn't have a test section in the rockspec.
Here's an example of a busted test section, also using the flags option to pass extra flags to Busted, and using per-platform overrides.
test = {
type = "busted",
platforms = {
windows = {
flags = { "--exclude-tags=ssh,git,unix" }
},
unix = {
flags = { "--exclude-tags=ssh,git" }
}
}
}
You can enable the command test type adding a top-level test table in a rockspec and setting its type to command. The command type can be auto-detected if the project's source contains a file called test.lua at the root of the source tree, so if a project has that file luarocks test can be used to run it using the default Lua interpreter even if it doesn't have a test section in the rockspec.
The test block for a command test type can take either a script argument, which is a Lua script to be launched using the configured Lua interpreter, or a command argument, which is a command to be launched directly on a shell. Both can take additional arguments via the flags array entry.
Here is an example using a script:
test = {
type = "command",
script = "tests/test_all.lua",
}
And here is an example using a command:
test = {
type = "command",
command = "make test",
}
In the following example, assume a project uses Busted as its test tool. The current directory contains the source code of a Lua project with a rockspec in its root, this will run Busted, pass any additional arguments specified in the test.flags field of the rockspec, plus the --exclude-tags=ssh argument given explicitly via the command-line:
luarocks test -- --exclude-tags=ssh