premake/tests/base/test_rule.lua
Jarod42 29fa743f19 Improve rule support:
- move rule code from gmake2.lua to rule.lua
- Add UTs
- Fix enum case
- uniformise code for list.
- Add support of rules for Codelite.
2021-10-28 14:46:10 +02:00

86 lines
2.0 KiB
Lua

--
-- tests/base/test_rule.lua
-- Automated test suite for custom rule.
-- Copyright (c) 2008-2021 Jason Perkins and the Premake project
--
local suite = test.declare("rule")
local p = premake
function suite.setup()
rule "TestRule"
display "Test Rule"
fileextension ".rule"
propertydefinition {
name = "TestPropertyFalse",
kind = "boolean",
value = false,
switch = "-dummy"
}
propertydefinition {
name = "TestPropertyTrue",
kind = "boolean",
value = false,
switch = "-p"
}
propertydefinition {
name = "TestListProperty",
kind = "list"
}
propertydefinition {
name = "TestListPropertyWithSwitch",
kind = "list",
switch = "-S"
}
propertydefinition {
name = "TestListPropertySeparator",
kind = "list",
separator = ","
}
propertydefinition {
name = "TestListPropertySeparatorWithSwitch",
kind = "list",
separator = ",",
switch = "-O"
}
propertydefinition {
name = "TestEnumProperty",
values = { [0] = "V0", [1] = "V1"},
switch = { [0] = "S0", [1] = "S1"},
value = 0
}
end
--
-- rule tests
--
function suite.prepareEnvironment()
local rule = premake.global.getRule("TestRule")
local environ = {}
local cfg = {
["_rule_TestRule_TestPropertyFalse"] = false,
["_rule_TestRule_TestPropertyTrue"] = true,
["_rule_TestRule_TestListProperty"] = {"a", "b"},
["_rule_TestRule_TestListPropertyWithSwitch"] = {"c", "d"},
["_rule_TestRule_TestListPropertySeparator"] = {"e", "f"},
["_rule_TestRule_TestListPropertySeparatorWithSwitch"] = {"1", "2"},
["_rule_TestRule_TestEnumProperty"] = 'V1'
}
p.rule.prepareEnvironment(rule, environ, cfg)
test.isequal(nil, environ["TestPropertyFalse"])
test.isequal("-p", environ["TestPropertyTrue"])
test.isequal("a b", environ["TestListProperty"])
test.isequal("-Sc -Sd", environ["TestListPropertyWithSwitch"])
test.isequal("e,f", environ["TestListPropertySeparator"])
test.isequal("-O1,2", environ["TestListPropertySeparatorWithSwitch"])
test.isequal("S1", environ["TestEnumProperty"])
end