--
-- tests/actions/vstudio/vc2010/test_nmake_props.lua
-- Check makefile project generation.
-- Copyright (c) 2013 Jason Perkins and the Premake project
--
local p = premake
local suite = test.declare("vs2010_nmake_props")
local vc2010 = p.vstudio.vc2010
--
-- Setup
--
local wks, prj
function suite.setup()
p.action.set("vs2010")
wks, prj = test.createWorkspace()
kind "Makefile"
end
local function prepare()
local cfg = test.getconfig(prj, "Debug")
vc2010.nmakeProperties(cfg)
end
--
-- Check the structure with the default project values.
--
function suite.structureIsCorrect_onDefaultValues()
prepare()
test.capture [[
$(OutDir)MyProject
]]
end
--
-- Element should be skipped for non-Makefile projects.
--
function suite.skips_onNonMakefile()
kind "ConsoleApp"
prepare()
test.isemptycapture()
end
--
-- Make sure the target file extension is included.
--
function suite.usesTargetExtension()
targetextension ".exe"
prepare()
test.capture [[
$(OutDir)MyProject.exe
]]
end
--
-- Verify generation of the build commands.
--
function suite.buildCommandLine_onSingleCommand()
buildcommands { "command 1" }
prepare()
test.capture [[
$(OutDir)MyProject
command 1
]]
end
function suite.buildCommandLine_onMultipleCommands()
buildcommands { "command 1", "command 2" }
prepare()
test.capture [[
$(OutDir)MyProject
command 1
command 2
]]
end
function suite.rebuildCommandLine()
rebuildcommands { "command 1" }
prepare()
test.capture [[
$(OutDir)MyProject
command 1
]]
end
function suite.cleanCommandLine()
cleancommands { "command 1" }
prepare()
test.capture [[
$(OutDir)MyProject
command 1
]]
end
function suite.onDefines()
defines { "DEBUG", "_DEBUG" }
prepare()
test.capture [[
$(OutDir)MyProject
DEBUG;_DEBUG;$(NMakePreprocessorDefinitions)
]]
end
function suite.onEscapedDefines()
p.escaper(p.vstudio.vs2010.esc)
defines { "&", "<", ">" }
prepare()
test.capture [[
$(OutDir)MyProject
&;<;>;$(NMakePreprocessorDefinitions)
]]
p.escaper(nil)
end
function suite.onIncludeDirs()
includedirs { "include/lua", "include/zlib" }
prepare()
test.capture [[
$(OutDir)MyProject
include\lua;include\zlib
]]
end
function suite.onBinDirs()
bindirs { "include/lua", "include/zlib" }
prepare()
test.capture [[
$(ProjectDir)include\lua;$(ProjectDir)include\zlib;$(ExecutablePath)
$(OutDir)MyProject
]]
end
function suite.onSysIncludeDirs()
sysincludedirs { "include/lua", "include/zlib" }
prepare()
test.capture [[
include\lua;include\zlib;$(IncludePath)
$(OutDir)MyProject
]]
end
function suite.onSysLibDirs()
syslibdirs { "include/lua", "include/zlib" }
prepare()
test.capture [[
include\lua;include\zlib;$(LibraryPath)
$(OutDir)MyProject
]]
end
--
-- Should not emit include dirs or preprocessor definitions if the project
-- kind is "None", since that project is by definition not buildable.
---
function suite.noIncludeDirsOrPreprocessorDefs_onKindNone()
kind "None"
defines { "DEBUG", "_DEBUG" }
includedirs { "include/lua", "include/zlib" }
prepare()
test.capture [[
$(OutDir)MyProject
]]
end