-- -- 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