-- -- tests/actions/vstudio/vc200x/test_files.lua -- Validate generation of 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 [[ ]] end -- -- Check the structure of a file contained in a folder. -- function suite.file_inSingleLevelFolder() files { "src/hello.cpp", "so_long.cpp" } prepare() test.capture [[ ]] end -- -- Check the structure of a file contained in multiple folders. -- function suite.file_onMultipleFolderLevels() files { "src/greetings/hello.cpp", "so_long.cpp" } prepare() test.capture [[ ]] end -- -- Check the structure of a file with a virtual path. -- function suite.file_onVpath() files { "src/hello.cpp", "so_long.h" } vpaths { ["Source Files"] = "**.cpp" } prepare() test.capture [[ ]] 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 [[ ]] 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 [[ ]] end -- -- If a custom build rule is supplied, the custom build tool settings should be used. -- function suite.customBuildTool_onBuildRule() files { "hello.x" } configuration "**.x" buildrule { description = "Compiling $(InputFile)", commands = { 'cxc -c "$(InputFile)" -o "$(IntDir)/$(InputName).xo"', 'c2o -c "$(IntDir)/$(InputName).xo" -o "$(IntDir)/$(InputName).obj"' }, outputs = { "$(IntDir)/$(InputName).obj" } } prepare() test.capture [[ ]] end