-- -- tests/project/test_getconfig.lua -- Test the project object configuration accessor. -- Copyright (c) 2011-2014 Jason Perkins and the Premake project -- local p = premake local suite = test.declare("project_getconfig") -- -- Setup and teardown -- local wks, prj, cfg function suite.setup() wks = workspace("MyWorkspace") configurations { "Debug", "Release" } end local function prepare(buildcfg, platform) prj = wks.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() _TARGET_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() _TARGET_OS = "linux" p.action.set("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() _TARGET_OS = "linux" p.action.set("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() p.action.set("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 { "x86", "x86_64" } project ("MyProject") prepare("Debug", "x86") test.isequal("x86", cfg.architecture) end -- -- If the platform matches an architecture, it should not modify any -- currently set value. -- function suite.doesNotOverride_onMatchingPlatform() platforms { "x86", "x64" } project ("MyProject") architecture "x86_64" prepare("Debug", "x86") test.isequal("x86_64", cfg.architecture) end