123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- --
- -- tests/project/test_eachconfig.lua
- -- Test the project object configuration iterator function.
- -- Copyright (c) 2011-2015 Jason Perkins and the Premake project
- --
- local p = premake
- local suite = test.declare("project_eachconfig")
- --
- -- Setup and teardown
- --
- local wks, prj
- function suite.setup()
- wks = workspace("MyWorkspace")
- end
- local function prepare(buildcfgs)
- project("MyProject")
- if buildcfgs then
- configurations ( buildcfgs )
- end
- prj = test.getproject(wks, 1)
- for cfg in p.project.eachconfig(prj) do
- _p(2,'%s:%s', cfg.buildcfg or "", cfg.platform or "")
- end
- end
- --
- -- If no configurations have been defined, the iterator
- -- should not return any values.
- --
- function suite.returnsNoValues_onNoConfigurationsAndNoPlatforms()
- prepare()
- test.isemptycapture()
- end
- --
- -- If platforms have been defined, but no configurations, the
- -- iterator should still not return any values.
- --
- function suite.returnsNoValues_onNoConfigurationsButPlatforms()
- platforms { "x86", "x86_64" }
- prepare()
- test.isemptycapture()
- end
- --
- -- Configurations should be iterated in the order in which they
- -- appear in the script.
- --
- function suite.iteratesConfigsInOrder()
- configurations { "Debug", "Profile", "Release", "Deploy" }
- prepare()
- test.capture [[
- Debug:
- Profile:
- Release:
- Deploy:
- ]]
- end
- --
- -- If platforms are supplied, they should be paired with build
- -- configurations, with the order of both maintained.
- --
- function suite.pairsConfigsAndPlatformsInOrder()
- configurations { "Debug", "Release" }
- platforms { "x86", "x86_64" }
- prepare()
- test.capture [[
- Debug:x86
- Debug:x86_64
- Release:x86
- Release:x86_64
- ]]
- end
- --
- -- Test the mapping of a build configuration from workspace to project.
- --
- function suite.mapsBuildCfg_toBuildCfg()
- configurations { "Debug", "Release" }
- configmap { ["Debug"] = "ProjectDebug" }
- prepare()
- test.capture [[
- ProjectDebug:
- Release:
- ]]
- end
- --
- -- Test mapping a platform from workspace to project.
- --
- function suite.mapsPlatform_toPlatform()
- configurations { "Debug", "Release" }
- platforms { "Win32" }
- configmap { ["Win32"] = "x86_64" }
- prepare()
- test.capture [[
- Debug:x86_64
- Release:x86_64
- ]]
- end
- --
- -- Test mapping a build configuration to a build config/platform pair.
- -- This will cause a second platform to appear in the project, alongside
- -- the one defined by the workspace.
- --
- function suite.mapsBuildCfg_toBuildCfgAndPlatform()
- configurations { "Debug", "Release" }
- platforms { "Win32" }
- configmap { ["Debug"] = { "ProjectDebug", "x86_64" } }
- prepare()
- test.capture [[
- ProjectDebug:x86_64
- ProjectDebug:Win32
- Release:x86_64
- Release:Win32
- ]]
- end
- --
- -- Any duplicate configurations created by the mapping should be removed.
- --
- function suite.removesDups_onConfigMapping()
- configurations { "Debug", "Development", "Release" }
- configmap { ["Development"] = "Debug" }
- prepare()
- test.capture [[
- Debug:
- Release:
- ]]
- end
- --
- -- If there is overlap in the workspace and project configuration lists,
- -- the ordering at the project level should be maintained to avoid
- -- unnecessarily dirtying the project file.
- --
- function suite.maintainsProjectOrdering_onWorkspaceOverlap()
- configurations { "Debug", "Release" }
- prepare { "Debug", "Development", "Profile", "Release" }
- test.capture [[
- Debug:
- Development:
- Profile:
- Release:
- ]]
- end
|