-- -- 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