premake/tests/project/test_getconfig.lua
Jason Perkins f4e55da621 Added new filter() to replace configuration(), with required field prefixes
- use like: filter { "configurations:Debug" }
- supported prefixes: action, architecture, configurations, files, kind, language, options, platforms, system
- defaults to "configurations" if no prefix is specified
2014-04-25 11:53:01 -04:00

114 lines
2.4 KiB
Lua
Executable File

--
-- tests/project/test_getconfig.lua
-- Test the project object configuration accessor.
-- Copyright (c) 2011-2014 Jason Perkins and the Premake project
--
local suite = test.declare("project_getconfig")
--
-- Setup and teardown
--
local sln, prj, cfg
function suite.setup()
sln = solution("MySolution")
configurations { "Debug", "Release" }
end
local function prepare(buildcfg, platform)
prj = sln.projects[1]
cfg = test.getconfig(prj, buildcfg or "Debug", platform)
end
--
-- If the target system is not specified, the current operating environment
-- should be used as the default.
--
function suite.usesCurrentOS_onNoSystemSpecified()
_OS = "linux"
project ("MyProject")
filter { "system:linux" }
defines { "correct" }
prepare()
test.isequal("correct", cfg.defines[1])
end
--
-- If the current action specifies a target operating environment (i.e.
-- Visual Studio targets Windows), that should override the current
-- operating environment.
--
function suite.actionOverridesOS()
_OS = "linux"
_ACTION = "vs2005"
project ("MyProject")
filter { "system:windows" }
defines { "correct" }
prepare()
test.isequal("correct", cfg.defines[1])
end
--
-- If a target system is specified in a configuration, it should override
-- the current operating environment, as well as the tool's target OS.
--
function suite.usesCfgSystem()
_OS = "linux"
_ACTION = "vs2005"
project ("MyProject")
system "macosx"
filter { "system:macosx" }
defines { "correct" }
prepare()
test.isequal("correct", cfg.defines[1])
end
--
-- The current action should be taken into account.
--
function suite.appliesActionToFilters()
_ACTION = "vs2005"
project ("MyProject")
filter { "action:vs2005" }
defines { "correct" }
prepare()
test.isequal("correct", cfg.defines[1])
end
--
-- If the platform matches an architecture identifier, and none was set,
-- the configuration's architecture should be set to match.
--
function suite.setsArchitecture_onMatchingPlatform()
platforms { "x32", "x64" }
project ("MyProject")
prepare("Debug", "x32")
test.isequal("x32", cfg.architecture)
end
--
-- If the platform matches an architecture, it should not modify any
-- currently set value.
--
function suite.doesNotOverride_onMatchingPlatform()
platforms { "x32", "x64" }
project ("MyProject")
architecture "x64"
prepare("Debug", "x32")
test.isequal("x64", cfg.architecture)
end