--- -- codelite/tests/test_codelite_config.lua -- Automated test suite for CodeLite project generation. -- Copyright (c) 2015 Manu Evans and the Premake project --- local suite = test.declare("codelite_cproj_config") local p = premake local codelite = p.modules.codelite --------------------------------------------------------------------------- -- Setup/Teardown --------------------------------------------------------------------------- local wks, prj, cfg function suite.setup() p.action.set("codelite") p.escaper(codelite.esc) p.indent(" ") wks = test.createWorkspace() end local function prepare() prj = test.getproject(wks,1) cfg = test.getconfig(prj, "Debug") end function suite.OnProjectCfg_Compiler() prepare() codelite.project.compiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_Flags() optimize "Debug" exceptionhandling "Off" rtti "Off" pic "On" symbols "On" language "C++" cppdialect "C++11" flags { "NoBufferSecurityCheck" } forceincludes { "forced_include1.h", "forced_include2.h" } buildoptions { "-opt1", "-opt2" } prepare() codelite.project.compiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_Includes() includedirs { "dir/", "dir2" } prepare() codelite.project.compiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_SysIncludes() sysincludedirs { "sysdir", "sysdir2/"} prepare() codelite.project.compiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_Defines() defines { "TEST", "DEF", "VAL=1", "ESCAPE=\"WITH SPACE\"" } prepare() codelite.project.compiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_Pch() pchheader "pch.h" prepare() codelite.project.compiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_Linker() prepare() codelite.project.linker(cfg) test.capture [[ ]] end function suite.OnProjectCfg_LibPath() libdirs { "test/", "test2" } prepare() codelite.project.linker(cfg) test.capture [[ ]] end function suite.OnProjectCfg_Libs() links { "a", "b" } prepare() codelite.project.linker(cfg) test.capture [[ ]] end -- TODO: test sibling lib project links function suite.OnProjectCfg_ResCompiler() prepare() codelite.project.resourceCompiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_ResInclude() files { "x.rc" } resincludedirs { "dir/" } prepare() codelite.project.resourceCompiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_ResRegularInclude() files { "x.rc" } includedirs { "regulardir/" } prepare() codelite.project.resourceCompiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_ResSysInclude() files { "x.rc" } sysincludedirs { "sysdir/" } prepare() codelite.project.resourceCompiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_General() system "Windows" prepare() codelite.project.general(cfg) test.capture [[ ]] end function suite.OnProjectCfg_Environment() debugenvs { "ENV_ONE=1", "ENV_TWO=2" } prepare() codelite.project.environment(cfg) test.capture( ' \n' .. ' \n' .. ' ' ) end function suite.OnProjectCfg_EnvironmentEscaping() debugenvs { "\"ENV\"=<&>" } prepare() codelite.project.environment(cfg) test.capture( ' \n' .. ' ]]>\n' .. ' ' ) end function suite.OnProjectCfg_Debugger() prepare() codelite.project.debugger(cfg) test.capture [[ ]] end function suite.OnProjectCfg_DebuggerOpts() debugremotehost "localhost" debugport(2345) debugextendedprotocol(true) debugsearchpaths { "search/", "path" } debugconnectcommands { "connectcmd1", "cmd2" } debugstartupcommands { "startcmd1", "cmd2" } prepare() codelite.project.debugger(cfg) test.capture [[ search path connectcmd1 cmd2 startcmd1 cmd2 ]] end function suite.OnProjectCfg_DebuggerOptsEscaping() debugremotehost "localhost" debugport(2345) debugextendedprotocol(true) debugsearchpaths { "\"search\" && " } debugconnectcommands { "\"connect\" && " } debugstartupcommands { "\"start\" && " } prepare() codelite.project.debugger(cfg) test.capture [[ "search" && <path> "connect" && <cmd> "start" && <cmd> ]] end function suite.OnProjectCfg_PreBuild() prebuildcommands { "cmd0", "cmd1" } prepare() codelite.project.preBuild(prj) test.capture [[ cmd0 cmd1 ]] end function suite.OnProjectCfg_PreBuild_Escaped() prebuildcommands { "touch \"./build/copyright\" && echo OK", "cat \"./lib/copyright\" >> \"./build/copyright\"" } prepare() codelite.project.preBuild(prj) test.capture [[ touch "./build/copyright" && echo OK cat "./lib/copyright" >> "./build/copyright" ]] end function suite.OnProjectCfg_PostBuild() postbuildcommands { "cmd0", "cmd1" } prepare() codelite.project.postBuild(prj) test.capture [[ cmd0 cmd1 ]] end function suite.OnProjectCfg_PostBuild_Escaped() postbuildcommands { "touch \"./build/copyright\" && echo OK", "cat \"./lib/copyright\" >> \"./build/copyright\"" } prepare() codelite.project.postBuild(prj) test.capture [[ touch "./build/copyright" && echo OK cat "./lib/copyright" >> "./build/copyright" ]] end -- TODO: test custom build function suite.OnProjectCfg_AdditionalRules() prepare() codelite.project.additionalRules(prj) test.capture [[ ]] end function suite.OnProjectCfg_Completion() language "C++" cppdialect "C++11" prepare() codelite.project.completion(prj) test.capture [[ ]] end function suite.OnProjectCfg_UnsignedCharOn() unsignedchar "On" prepare() codelite.project.compiler(cfg) test.capture [[ ]] end function suite.OnProjectCfg_UnsignedCharOff() unsignedchar "Off" prepare() codelite.project.compiler(cfg) test.capture [[ ]] end