diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/actions/vstudio/test_vs2010_links.lua | 143 | ||||
-rw-r--r-- | tests/actions/vstudio/test_vs2010_project_kinds.lua | 61 | ||||
-rw-r--r-- | tests/actions/vstudio/vc2010/test_link_settings.lua | 210 | ||||
-rw-r--r-- | tests/actions/vstudio/vc2010/test_links.lua | 8 | ||||
-rw-r--r-- | tests/premake4.lua | 2 |
5 files changed, 245 insertions, 179 deletions
diff --git a/tests/actions/vstudio/test_vs2010_links.lua b/tests/actions/vstudio/test_vs2010_links.lua deleted file mode 100644 index efdab54..0000000 --- a/tests/actions/vstudio/test_vs2010_links.lua +++ /dev/null @@ -1,143 +0,0 @@ - T.vs2010_links = { }
- local vs10_links = T.vs2010_links
- local sln, prj
-
- function vs10_links.setup()
- _ACTION = "vs2010"
-
- sln = solution "MySolution"
- configurations { "Debug" }
- platforms {}
-
- prj = project "MyProject"
- language "C++"
- kind "ConsoleApp"
- uuid "AE61726D-187C-E440-BD07-2556188A6565"
- end
-
- local function get_buffer()
- premake.bake.buildconfigs()
- sln.vstudio_configs = premake.vstudio.buildconfigs(sln)
- prj = premake.solution.getproject(sln, 1)
- premake.vs2010_vcxproj(prj)
- buffer = io.endcapture()
- return buffer
- end
-
- function vs10_links.hasLinkBlock()
- local buffer = get_buffer()
- test.string_contains(buffer,'<Link>.*</Link>')
- end
-
- function vs10_links.additionalDependancies_isInsideLinkBlock()
- configuration("Debug")
- links{"link_test"}
- local buffer = get_buffer()
- test.string_contains(buffer,
- '<Link>.*<AdditionalDependencies>.*%%%(AdditionalDependencies%)</AdditionalDependencies>.*</Link>')
- end
-
- function vs10_links.additionalDependancies_containsLinkTestDotLib()
- configuration("Debug")
- links{"link_test"}
- local buffer = get_buffer()
- test.string_contains(buffer,
- '<AdditionalDependencies>link_test%.lib;%%%(AdditionalDependencies%)</AdditionalDependencies>')
- end
-
- function vs10_links.outPutFile_isEqualToOutDirMyProjectDotExe()
- local buffer = get_buffer()
- test.string_contains(buffer,'<OutputFile>%$%(OutDir%)MyProject.exe</OutputFile>')
- end
-
- function vs10_links.additionalLibraryDirectories_inputNoDirectories_tagsAreEmpty()
- local buffer = get_buffer()
- test.string_contains(buffer,
- '<AdditionalLibraryDirectories>%%%(AdditionalLibraryDirectories%)</AdditionalLibraryDirectories>')
- end
-
- function vs10_links.additionalLibraryDirectories_inputTestPath_tagsContainExspectedValue()
- configuration("Debug")
- libdirs { "test_path" }
- local buffer = get_buffer()
- local exspect = "test_path;"
- test.string_contains(buffer,
- '<AdditionalLibraryDirectories>'..exspect..'%%%(AdditionalLibraryDirectories%)</AdditionalLibraryDirectories>')
- end
-
- function vs10_links.additionalLibraryDirectories_inputTwoPaths_tagsContainExspectedValue()
- configuration("Debug")
- libdirs { "test_path","another_path" }
- local buffer = get_buffer()
- local exspect = "test_path;another_path;"
- test.string_contains(buffer,
- '<AdditionalLibraryDirectories>'..exspect..'%%%(AdditionalLibraryDirectories%)</AdditionalLibraryDirectories>')
- end
-
- function vs10_links.generateDebugInformation_withoutSymbolsFlag_valueInTagsIsFalse()
- local buffer = get_buffer()
- test.string_contains(buffer,'<GenerateDebugInformation>false</GenerateDebugInformation>')
- end
-
- function vs10_links.generateDebugInformation_withSymbolsFlag_valueInTagsIsTrue()
- flags {"Symbols"}
- local buffer = get_buffer()
- test.string_contains(buffer,'<GenerateDebugInformation>true</GenerateDebugInformation>')
- end
-
-
- function vs10_links.noOptimiseFlag_optimizeReferences_isNotInBuffer()
- local buffer = get_buffer()
- test.string_does_not_contain(buffer,'OptimizeReferences')
- end
-
- function vs10_links.noOptimiseFlag_enableCOMDATFolding_isNotInBuffer()
- local buffer = get_buffer()
- test.string_does_not_contain(buffer,'EnableCOMDATFolding')
- end
-
- function vs10_links.optimiseFlag_optimizeReferences_valueInsideTagsIsTrue()
- flags{"Optimize"}
- local buffer = get_buffer()
- test.string_contains(buffer,'<OptimizeReferences>true</OptimizeReferences>')
- end
-
- function vs10_links.noOptimiseFlag_enableCOMDATFolding_valueInsideTagsIsTrue()
- flags{"Optimize"}
- local buffer = get_buffer()
- test.string_contains(buffer,'EnableCOMDATFolding>true</EnableCOMDATFolding')
- end
-
- function vs10_links.entryPointSymbol_noWimMainFlag_valueInTagsIsMainCrtStartUp()
- local buffer = get_buffer()
- test.string_contains(buffer,'<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>')
- end
-
- function vs10_links.entryPointSymbol_noWimMainFlag_valueInTagsIsMainCrtStartUp()
- local buffer = get_buffer()
- test.string_contains(buffer,'<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>')
- end
-
- function vs10_links.entryPointSymbol_winMainFlag_doesNotContainEntryPointSymbol()
- flags{"WinMain"}
- local buffer = get_buffer()
- test.string_does_not_contain(buffer,'<EntryPointSymbol>')
- end
-
- function vs10_links.targetMachine_default_valueInTagsIsMachineX86()
- local buffer = get_buffer()
- test.string_contains(buffer,'<TargetMachine>MachineX86</TargetMachine>')
- end
-
- function vs10_links.targetMachine_x32_valueInTagsIsMachineX64()
- platforms {"x32"}
- local buffer = get_buffer()
- test.string_contains(buffer,'<TargetMachine>MachineX86</TargetMachine>')
- end
-
- function vs10_links.targetMachine_x64_valueInTagsIsMachineX64()
- platforms {"x64"}
- local buffer = get_buffer()
- test.string_contains(buffer,'<TargetMachine>MachineX64</TargetMachine>')
- end
-
\ No newline at end of file diff --git a/tests/actions/vstudio/test_vs2010_project_kinds.lua b/tests/actions/vstudio/test_vs2010_project_kinds.lua index 6117c06..1de75a4 100644 --- a/tests/actions/vstudio/test_vs2010_project_kinds.lua +++ b/tests/actions/vstudio/test_vs2010_project_kinds.lua @@ -8,12 +8,12 @@ sln = solution "MySolution"
configurations { "Debug" }
platforms {}
-
+
prj = project "MyProject"
language "C++"
end
-
- local function get_buffer()
+
+ local function get_buffer(platform)
premake.bake.buildconfigs()
sln.vstudio_configs = premake.vstudio.buildconfigs(sln)
prj = premake.solution.getproject(sln, 1)
@@ -22,7 +22,7 @@ return buffer
end
-
+
function vs10_project_kinds.staticLib_containsLibSection()
kind "StaticLib"
local buffer = get_buffer()
@@ -34,7 +34,7 @@ test.string_contains(buffer,'<Lib>.*<OutputFile>.*MyProject.lib.*</OutputFile>.*</Lib>')
end
-
+
function vs10_project_kinds.staticLib_valueInMinimalRebuildIsTrue()
kind "StaticLib"
flags {"Symbols"}
@@ -64,7 +64,7 @@ local buffer = get_buffer()
test.string_contains(buffer,'<Link>.*<ImportLibrary>.*</ImportLibrary>.*</Link>')
end
-
+
function vs10_project_kinds.sharedLib_bufferContainsImportLibrary()
kind "SharedLib"
local buffer = get_buffer()
@@ -83,58 +83,58 @@ local buffer = get_buffer()
test.string_contains(buffer,'<PropertyGroup>.*<IgnoreImportLibrary.*</IgnoreImportLibrary>.*</PropertyGroup>')
end
-
+
function vs10_project_kinds.sharedLib_withNoImportLibraryFlag_propertyGroupSectionContainsIgnoreImportLibrary()
kind "SharedLib"
flags{"NoImportLib"}
local buffer = get_buffer()
test.string_contains(buffer,'<PropertyGroup>.*<IgnoreImportLibrary.*</IgnoreImportLibrary>.*</PropertyGroup>')
end
-
+
function vs10_project_kinds.sharedLib_withOutNoImportLibraryFlag_ignoreImportLibraryValueIsFalse()
kind "SharedLib"
local buffer = get_buffer()
test.string_contains(buffer,'<PropertyGroup>.*<IgnoreImportLibrary.*false</IgnoreImportLibrary>.*</PropertyGroup>')
end
-
+
function vs10_project_kinds.sharedLib_withNoImportLibraryFlag_ignoreImportLibraryValueIsTrue()
kind "SharedLib"
flags{"NoImportLib"}
local buffer = get_buffer()
test.string_contains(buffer,'<PropertyGroup>.*<IgnoreImportLibrary.*true</IgnoreImportLibrary>.*</PropertyGroup>')
end
-
+
function vs10_project_kinds.staticLib_doesNotContainLinkIncremental()
kind "StaticLib"
local buffer = get_buffer()
test.string_does_not_contain(buffer,'<LinkIncremental.*</LinkIncremental>')
end
-
+
function vs10_project_kinds.sharedLib_withoutOptimisation_linkIncrementalValueIsTrue()
kind "SharedLib"
local buffer = get_buffer()
test.string_contains(buffer,'<LinkIncremental.*true</LinkIncremental>')
end
-
+
function vs10_project_kinds.sharedLib_withOptimisation_linkIncrementalValueIsFalse()
kind "SharedLib"
flags{"Optimize"}
local buffer = get_buffer()
test.string_contains(buffer,'<LinkIncremental.*false</LinkIncremental>')
end
-
+
function vs10_project_kinds.kindDoesNotMatter_noAdditionalDirectoriesSpecified_bufferDoesNotContainAdditionalIncludeDirectories()
kind "SharedLib"
local buffer = get_buffer()
test.string_does_not_contain(buffer,'<ClCompile>.*<AdditionalIncludeDirectories>.*</ClCompile>')
end
-
+
function vs10_project_kinds.configType_configIsWindowedApp_resultComparesEqualToApplication()
local t = { kind = "WindowedApp"}
local result = premake.vstudio.vc2010.config_type(t)
test.isequal('Application',result)
end
-
+
function vs10_project_kinds.linkOptions_staticLib_bufferContainsAdditionalOptionsInSideLibTag()
kind "StaticLib"
linkoptions{'/dummyOption'}
@@ -142,33 +142,33 @@ test.string_contains(get_buffer(),
'<AdditionalOptions>.*%%%(AdditionalOptions%)</AdditionalOptions>.*</Lib>')
end
-
+
function vs10_project_kinds.noLinkOptions_staticLib_bufferDoesNotContainAdditionalOptionsInSideLibTag()
kind "StaticLib"
test.string_does_not_contain(get_buffer(),
'<AdditionalOptions>.*%%%(AdditionalOptions%)</AdditionalOptions>.*</Lib>')
- end
-
+ end
+
function vs10_project_kinds.linkOptions_staticLib_bufferContainsPassedOption()
kind "StaticLib"
linkoptions{'/dummyOption'}
test.string_contains(get_buffer(),
'<AdditionalOptions>/dummyOption %%%(AdditionalOptions%)</AdditionalOptions>.*</Lib>')
- end
-
+ end
+
function vs10_project_kinds.linkOptions_windowedApp_bufferContainsAdditionalOptionsInSideLinkTag()
kind "WindowedApp"
linkoptions{'/dummyOption'}
-
+
test.string_contains(get_buffer(),
'<AdditionalOptions>.* %%%(AdditionalOptions%)</AdditionalOptions>.*</Link>')
- end
+ end
function vs10_project_kinds.linkOptions_consoleApp_bufferContainsAdditionalOptionsInSideLinkTag()
kind "ConsoleApp"
linkoptions{'/dummyOption'}
-
+
test.string_contains(get_buffer(),
'<AdditionalOptions>.* %%%(AdditionalOptions%)</AdditionalOptions>.*</Link>')
end
@@ -176,12 +176,12 @@ function vs10_project_kinds.linkOptions_sharedLib_bufferContainsAdditionalOptionsInSideLinkTag()
kind "SharedLib"
linkoptions{'/dummyOption'}
-
+
test.string_contains(get_buffer(),
'<AdditionalOptions>.* %%%(AdditionalOptions%)</AdditionalOptions>.*</Link>')
- end
-
-
+ end
+
+
function vs10_project_kinds.staticLibX64_TargetMachineSetInLib()
kind "StaticLib"
platforms{'x64'}
@@ -209,10 +209,3 @@ local buffer = get_buffer()
test.string_contains(buffer,'<Lib>.*<TargetMachine>MachineX86</TargetMachine>.*</Lib>')
end
-
- function vs10_project_kinds.staticLibNative_TargetMachineInLibSetToMachineX86()
- kind "StaticLib"
- platforms{'Native'}
- local buffer = get_buffer()
- test.string_contains(buffer,'<Lib>.*<TargetMachine>MachineX86</TargetMachine>.*</Lib>')
- end
\ No newline at end of file diff --git a/tests/actions/vstudio/vc2010/test_link_settings.lua b/tests/actions/vstudio/vc2010/test_link_settings.lua new file mode 100644 index 0000000..46f02b2 --- /dev/null +++ b/tests/actions/vstudio/vc2010/test_link_settings.lua @@ -0,0 +1,210 @@ +-- +-- tests/actions/vstudio/vc2010/test_link_settings.lua +-- Validate linker settings in Visual Studio 2010 C/C++ projects. +-- Copyright (c) 2011 Jason Perkins and the Premake project +-- + + T.vstudio_vs2010_link_settings = { } + local suite = T.vstudio_vs2010_link_settings + local vc2010 = premake.vstudio.vc2010 + + +-- +-- Setup +-- + + local sln, prj, cfg + + function suite.setup() + _ACTION = "vs2010" + sln, prj = test.createsolution() + end + + local function prepare(platform) + premake.bake.buildconfigs() + sln.vstudio_configs = premake.vstudio.buildconfigs(sln) + cfg = premake.getconfig(prj, "Debug", platform) + vc2010.link(cfg) + end + + +-- +-- Check the basic element structure for a console application. +-- + + function suite.writesCorrectSubsystem_onConsoleApp() + kind "ConsoleApp" + prepare() + test.capture [[ + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + <OutputFile>$(OutDir)MyProject.exe</OutputFile> + <EntryPointSymbol>mainCRTStartup</EntryPointSymbol> + </Link> + ]] + end + + +-- +-- Check the basic element structure for a windowed application. +-- + + function suite.writesCorrectSubsystem_onWindowedApp() + kind "WindowedApp" + prepare() + test.capture [[ + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + <OutputFile>$(OutDir)MyProject.exe</OutputFile> + <EntryPointSymbol>mainCRTStartup</EntryPointSymbol> + </Link> + ]] + end + + +-- +-- Check the basic element structure for a shared library. +-- + + function suite.writesCorrectSubsystem_onSharedLib() + kind "SharedLib" + prepare() + test.capture [[ + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + <OutputFile>$(OutDir)MyProject.dll</OutputFile> + <ImportLibrary>MyProject.lib</ImportLibrary> + </Link> + ]] + end + + +-- +-- Check the basic element structure for a static library. +-- + + function suite.writesCorrectSubsystem_onStaticLib() + kind "StaticLib" + prepare() + test.capture [[ + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + </Link> + ]] + end + + +-- +-- Check the structure of the additional library directories element. +-- + + function suite.additionalLibraryDirectories() + libdirs { "include/GL", "include/lua" } + prepare() + test.capture [[ + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + <OutputFile>$(OutDir)MyProject.exe</OutputFile> + <AdditionalLibraryDirectories>include\GL;include\lua;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <EntryPointSymbol>mainCRTStartup</EntryPointSymbol> + </Link> + ]] + end + + +-- +-- Enable debug information if the Symbols flag is specified. +-- + + function suite.generateDebugInformation_onSymbolsFlag() + flags { "Symbols" } + prepare() + test.capture [[ + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <OutputFile>$(OutDir)MyProject.exe</OutputFile> + <EntryPointSymbol>mainCRTStartup</EntryPointSymbol> + </Link> + ]] + end + + +-- +-- Enable reference optimizing if Optimize flag is specified. +-- + + function suite.optimizeReferences_onOptimizeFlag() + flags { "Optimize" } + prepare() + test.capture [[ + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <OutputFile>$(OutDir)MyProject.exe</OutputFile> + <EntryPointSymbol>mainCRTStartup</EntryPointSymbol> + </Link> + ]] + end + + +-- +-- Skip the entry point override if the WinMain flag is specified. +-- + + function suite.noEntryPointElement_onWinMainFlag() + flags { "WinMain" } + prepare() + test.capture [[ + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + <OutputFile>$(OutDir)MyProject.exe</OutputFile> + </Link> + ]] + end + + +-- +-- Use the x86 target for Premake's x32 platform. +-- + + function suite.writesCorrectTarget_onX32Platform() + platforms "x32" + prepare("x32") + test.capture [[ + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + <OutputFile>$(OutDir)MyProject.exe</OutputFile> + <EntryPointSymbol>mainCRTStartup</EntryPointSymbol> + <TargetMachine>MachineX86</TargetMachine> + </Link> + ]] + end + + +-- +-- Use the x64 target for Premake's x64 platform. +-- + + function suite.writesCorrectTarget_onX64Platform() + platforms { "x64" } + prepare("x64") + test.capture [[ + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + <OutputFile>$(OutDir)MyProject.exe</OutputFile> + <EntryPointSymbol>mainCRTStartup</EntryPointSymbol> + <TargetMachine>MachineX64</TargetMachine> + </Link> + ]] + end diff --git a/tests/actions/vstudio/vc2010/test_links.lua b/tests/actions/vstudio/vc2010/test_links.lua index de642f5..9d5c0d2 100644 --- a/tests/actions/vstudio/vc2010/test_links.lua +++ b/tests/actions/vstudio/vc2010/test_links.lua @@ -36,7 +36,7 @@ -- entire project references item group should be skipped. -- - function suite.noSectionWritten_onNoSiblingReferences() + function suite.noProjectReferencesGroup_onNoSiblingReferences() prepare() vc2010.projectReferences(prj2) test.isemptycapture() @@ -75,6 +75,12 @@ test.isemptycapture() end + +-- +-- If a mix of sibling and system links are listed, only the system +-- libraries should appear in the additional dependencies element. +-- + function suite.onlySystemDependencies_OnSiblingProjectLink() links { "MyProject", "kernel32" } prepare() diff --git a/tests/premake4.lua b/tests/premake4.lua index 1154235..acc358d 100644 --- a/tests/premake4.lua +++ b/tests/premake4.lua @@ -75,7 +75,6 @@ dofile("actions/vstudio/test_vs200x_vcproj_linker.lua") dofile("actions/vstudio/test_vs2010_vcxproj.lua") dofile("actions/vstudio/test_vs2010_flags.lua") - dofile("actions/vstudio/test_vs2010_links.lua") dofile("actions/vstudio/test_vs2010_project_kinds.lua") -- Visual Studio 2002-2003 C# projects @@ -106,6 +105,7 @@ dofile("actions/vstudio/vc2010/test_header.lua") dofile("actions/vstudio/vc2010/test_files.lua") dofile("actions/vstudio/vc2010/test_filters.lua") + dofile("actions/vstudio/vc2010/test_link_settings.lua") dofile("actions/vstudio/vc2010/test_links.lua") dofile("actions/vstudio/vc2010/test_pch.lua") |