--
-- tests/actions/vstudio/vc2010/test_rule_vars.lua
-- Validate generation of custom rule variables at the project level.
-- Author Jason Perkins
-- Copyright (c) 2014-2015 Jason Perkins and the Premake project
--
local p = premake
local suite = test.declare("vstudio_vs2010_rule_vars")
local vc2010 = p.vstudio.vc2010
--
-- Setup
--
local wks, prj
function suite.setup()
p.action.set("vs2010")
rule "MyRule"
wks, prj = test.createWorkspace()
rules { "MyRule" }
end
local function createVar(def)
rule "MyRule"
propertydefinition(def)
project "MyProject"
end
local function prepare()
local cfg = test.getconfig(prj, "Debug")
vc2010.ruleVars(cfg)
end
--
-- If the configuration has a rule, but does not set any variables,
-- nothing should be written.
--
function suite.noOutput_onNoVars()
prepare()
test.isemptycapture()
end
--
-- Test setting the various property kinds.
--
function suite.onBooleanVar()
createVar { name="MyVar", kind="boolean" }
myRuleVars { MyVar = false }
prepare()
test.capture [[
false
]]
end
function suite.onEnumVar()
createVar {
name = "MyVar",
values = {
[0] = "Win32",
[1] = "Win64",
},
switch = {
[0] = "-m32",
[1] = "-m64",
},
value = 0,
}
myRuleVars { MyVar = "Win32" }
prepare()
test.capture [[
0
]]
end
function suite.onListVar()
createVar { name="MyVar", kind="list" }
myRuleVars { MyVar = { "a", "b", "c" } }
prepare()
test.capture [[
a;b;c
]]
end
function suite.onCustomListSeparator()
createVar { name="MyVar", kind="list", separator="," }
myRuleVars { MyVar = { "a", "b", "c" } }
prepare()
test.capture [[
a;b;c
]]
end
function suite.onPathVar()
createVar { name="MyVar", kind="path" }
myRuleVars { MyVar = "../path/to/file" }
prepare()
test.capture [[
..\path\to\file
]]
end
function suite.onStringVar()
createVar { name="MyVar", kind="string" }
myRuleVars { MyVar = "hello" }
prepare()
test.capture [[
hello
]]
end