--
-- tests/actions/vstudio/vc2010/test_output_props.lua
-- Validate generation of the output property groups.
-- Copyright (c) 2011-2013 Jason Perkins and the Premake project
--
local p = premake
local suite = test.declare("vstudio_vs2010_output_props")
local vc2010 = p.vstudio.vc2010
--
-- Setup
--
local wks
function suite.setup()
p.action.set("vs2010")
wks, prj = test.createWorkspace()
end
local function prepare()
local cfg = test.getconfig(prj, "Debug")
vc2010.outputProperties(cfg)
end
--
-- Check the structure with the default project values.
--
function suite.structureIsCorrect_onDefaultValues()
prepare()
test.capture [[
true
bin\Debug\
obj\Debug\
MyProject
.exe
]]
end
--
-- This entire block gets skipped for Makefile projects.
--
function suite.omitsBlock_onMakefile()
kind "Makefile"
prepare()
test.isemptycapture()
end
function suite.omitsBlock_onNone()
kind "Makefile"
prepare()
test.isemptycapture()
end
--
-- Static libraries should omit the link incremental element entirely.
--
function suite.omitLinkIncremental_onStaticLib()
kind "StaticLib"
prepare()
test.capture [[
bin\Debug\
]]
end
--
-- Optimized builds should not link incrementally.
--
function suite.noIncrementalLink_onOptimizedBuild()
optimize "On"
prepare()
test.capture [[
false
]]
end
--
-- The target directory is applied, if specified.
--
function suite.outDir_onTargetDir()
targetdir "../bin"
prepare()
test.capture [[
true
..\bin\
]]
end
--
-- The objeccts directory is applied, if specified.
--
function suite.intDir_onTargetDir()
objdir "../tmp"
prepare()
test.capture [[
true
bin\Debug\
..\tmp\Debug\
]]
end
--
-- The target name is applied, if specified.
--
function suite.targetName_onTargetName()
targetname "MyTarget"
prepare()
test.capture [[
true
bin\Debug\
obj\Debug\
MyTarget
]]
end
--
-- If the NoImportLib flag is set, add the IgnoreImportLibrary element.
--
function suite.ignoreImportLib_onNoImportLib()
kind "SharedLib"
flags "NoImportLib"
prepare()
test.capture [[
true
true
]]
end
function suite.omitIgnoreImportLib_onNonSharedLib()
kind "ConsoleApp"
flags "NoImportLib"
prepare()
test.capture [[
true
bin\Debug\
]]
end
--
-- If the NoManifest flag is set, add the GenerateManifest element.
--
function suite.generateManifest_onNoManifest()
flags "NoManifest"
prepare()
test.capture [[
true
bin\Debug\
obj\Debug\
MyProject
.exe
false
]]
end
---
-- The should be split if there is no extension.
---
function suite.splitTargetExt_onNoTargetExtension()
targetextension ""
prepare()
test.capture [[
true
bin\Debug\
obj\Debug\
MyProject
]]
end
--
-- Check the handling of extra cleaning extensions.
--
function suite.extensionsToDeleteOnClean()
cleanextensions { ".temp1", ".temp2" }
prepare()
test.capture [[
true
bin\Debug\
obj\Debug\
MyProject
.exe
*.temp1;*.temp2;$(ExtensionsToDeleteOnClean)
]]
end
--
-- Check the handling of the VC++ Directories.
--
function suite.onSystemIncludeDirs()
sysincludedirs { "$(DXSDK_DIR)/Include" }
prepare()
test.capture [[
true
bin\Debug\
obj\Debug\
MyProject
.exe
$(DXSDK_DIR)\Include;$(IncludePath)
]]
end
function suite.onSystemLibraryDirs()
syslibdirs { "$(DXSDK_DIR)/lib/x86" }
prepare()
test.capture [[
true
bin\Debug\
obj\Debug\
MyProject
.exe
$(DXSDK_DIR)\lib\x86;$(LibraryPath)
]]
end
--
-- Check the handling of the VC++ ExecutablePath.
--
function suite.onBinDirsRelative()
bindirs { "../Include" }
prepare()
test.capture [[
true
bin\Debug\
obj\Debug\
MyProject
.exe
$(ProjectDir)..\Include;$(ExecutablePath)
]]
end
function suite.onBinDirsAbsolute()
bindirs { "C:\\Include" }
prepare()
test.capture [[
true
bin\Debug\
obj\Debug\
MyProject
.exe
C:\Include;$(ExecutablePath)
]]
end