Write tests in Lua, integrate into tasty.
Overview
This package is not a traditional tasty test provider in that
tests are not run in Haskell. Instead, this package allows to
write and run tests in Lua; the results are then converted
into a format that allows to process the test results with Tasty.
A basic Lua test-suite is provided with the tasty
Lua module.
Example
Tasty Lua scripts can be put into a separate file and then loaded in the test program. The script must return the test result tree:
-- FILE: example-tests.lua
local tasty = require 'tasty'
local assert = tasty.assert
return {
tasty.group 'examples' {
tasty.test('multiplication', function() assert.are_equal(6, 2 * 3) end),
tasty.test('truthyness', function() assert.is_truthy(0) end),
tasty.group 'nil' {
tasty.test('0 is nil', function () assert.is_nil(0) end)
}
}
}
On the Haskell side, the script is executed and the results are included in the test results. Two ways of integrating the tests into the test output are supported.
One test per file
This method is closest to Tasty’s intended way of running tests. A script is run as a single test case. On success, the number of passing Lua tests is included in the output. In the case of a failure, all failure information is collected and presented to the user.
import Test.Tasty (defaultMain, testGroup)
import Test.Tasty.Lua (testLuaFile)
import Foreign.Lua (run)
main = defaultMain $
testLuaFile run "Lua example tests" "example-tests.lua"
Lua tests as Tasty tests
Lua tests can be transformed into mock Tasty tests, thus showing all tests with their status in the final output.
import Foreign.Lua (run)
import System.Directory (withCurrentDirectory)
import Test.Tasty (defaultMain, testGroup)
import Test.Tasty.Lua (translateResultsFromFile)
main = do
luaTest <- withCurrentDirectory "test" . run $ do
-- run other commands to setup the Lua environment here.
translateResultsFromFile "example-tests.lua"
defaultMain . testGroup "Haskell and Lua tests" $
[ luaTest
-- more tasty tests go here
]