This repository has been archived on 2022-12-23. You can view files and clone it, but cannot push or open issues or pull requests.
fuck-premake-old2/tests/actions/vstudio/vc2010/test_build_events.lua

119 lines
2.2 KiB
Lua

--
-- tests/actions/vstudio/vc2010/test_build_events.lua
-- Check generation of pre- and post-build commands for C++ projects.
-- Copyright (c) 2012-2013 Jason Perkins and the Premake project
--
local suite = test.declare("vstudio_vc2010_build_events")
local vc2010 = premake.vstudio.vc2010
--
-- Setup
--
local sln, prj, cfg
function suite.setup()
premake.escaper(premake.vstudio.vs2010.esc)
sln = test.createsolution()
end
local function prepare(platform)
prj = premake.solution.getproject(sln, 1)
vc2010.buildEvents(prj)
end
--
-- If no build steps are specified, nothing should be written.
--
function suite.noOutput_onNoEvents()
prepare()
test.isemptycapture()
end
--
-- If one command set is used and not the other, only the one should be written.
--
function suite.onlyOne_onPreBuildOnly()
prebuildcommands { "command1" }
prepare()
test.capture [[
<PreBuildEvent>
<Command>command1</Command>
</PreBuildEvent>
]]
end
function suite.onlyOne_onPostBuildOnly()
postbuildcommands { "command1" }
prepare()
test.capture [[
<PostBuildEvent>
<Command>command1</Command>
</PostBuildEvent>
]]
end
function suite.both_onBoth()
prebuildcommands { "command1" }
postbuildcommands { "command2" }
prepare()
test.capture [[
<PreBuildEvent>
<Command>command1</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>command2</Command>
</PostBuildEvent>
]]
end
--
-- Multiple commands should be separated with un-escaped EOLs.
--
function suite.splits_onMultipleCommands()
postbuildcommands { "command1", "command2" }
prepare()
test.capture ("<PostBuildEvent>\n\t<Command>command1\r\ncommand2</Command>\n</PostBuildEvent>\n")
end
--
-- Quotes should not be escaped, other special characters should.
--
function suite.onSpecialChars()
postbuildcommands { '\' " < > &' }
prepare()
test.capture [[
<PostBuildEvent>
<Command>' " &lt; &gt; &amp;</Command>
</PostBuildEvent>
]]
end
--
-- If a message is specified, it should be included.
--
function suite.onMessageProvided()
postbuildcommands { "command1" }
postbuildmessage "Post-building..."
prepare()
test.capture [[
<PostBuildEvent>
<Command>command1</Command>
<Message>Post-building...</Message>
</PostBuildEvent>
]]
end