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/vc200x/test_files.lua
2012-02-01 20:00:24 -05:00

192 lines
3.2 KiB
Lua

--
-- tests/actions/vstudio/vc200x/test_files.lua
-- Validate generation of <files/> block in Visual Studio 200x projects.
-- Copyright (c) 2009-2012 Jason Perkins and the Premake project
--
T.vstudio_vs200x_files = { }
local suite = T.vstudio_vs200x_files
local vc200x = premake.vstudio.vc200x
--
-- Setup
--
local sln, prj
function suite.setup()
sln = test.createsolution()
end
local function prepare()
prj = premake.solution.getproject_ng(sln, 1)
vc200x.files_ng(prj)
end
--
-- Check the structure of an individual file element.
--
function suite.file_onDefaults()
files { "hello.cpp" }
prepare()
test.capture [[
<File
RelativePath="hello.cpp"
>
</File>
]]
end
--
-- Check the structure of a file contained in a folder.
--
function suite.file_inSingleLevelFolder()
files { "src/hello.cpp" }
prepare()
test.capture [[
<Filter
Name="src"
Filter=""
>
<File
RelativePath="src\hello.cpp"
>
</File>
</Filter>
]]
end
--
-- Check the structure of a file contained in multiple folders.
--
function suite.file_onMultipleFolderLevels()
files { "src/greetings/hello.cpp" }
prepare()
test.capture [[
<Filter
Name="src"
Filter=""
>
<Filter
Name="greetings"
Filter=""
>
<File
RelativePath="src\greetings\hello.cpp"
>
</File>
</Filter>
</Filter>
]]
end
--
-- Check the structure of a file with a virtual path.
--
function suite.file_onVpath()
files { "src/hello.cpp" }
vpaths { ["Source Files"] = "**.cpp" }
prepare()
test.capture [[
<Filter
Name="Source Files"
Filter=""
>
<File
RelativePath="src\hello.cpp"
>
</File>
</Filter>
]]
end
--
-- Make sure that the special "build a C code" logic only gets triggered
-- by actual C source code files.
--
function suite.file_markedAsNonBuildable_onSupportFiles()
language "C"
files { "hello.lua" }
prepare()
test.capture [[
<File
RelativePath="hello.lua"
>
</File>
]]
end
--
-- When a C code file is listed in a C++ project, it should still be
-- compiled as C (and not C++), and vice versa.
--
function suite.compileAsSet_onCFileInCppProject()
language "C++"
files { "hello.c" }
prepare()
test.capture [[
<File
RelativePath="hello.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1"
]]
end
function suite.compileAsSet_onCppFileInCProject()
language "C"
files { "hello.cpp" }
prepare()
test.capture [[
<File
RelativePath="hello.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="2"
]]
end
--
-- A PCH source file should be marked as such.
--
function suite.usePrecompiledHeadersSet_onPchSource()
files { "afxwin.cpp" }
pchsource "afxwin.cpp"
prepare()
test.capture [[
<File
RelativePath="afxwin.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
]]
end