Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/premake-4.x-stable.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJason Perkins <starkos@industriousone.com>2011-07-01 23:05:16 +0400
committerJason Perkins <starkos@industriousone.com>2011-07-01 23:05:16 +0400
commit86ad3166a04bec5b1032f89656dd85e2c1587bed (patch)
treede16f961168851bf09517481586865037dea2d4a /tests
parente87f4851c3841159dc4d02d1703da5df55839261 (diff)
Implemented vpaths for VS2010
Diffstat (limited to 'tests')
-rw-r--r--tests/actions/vstudio/test_vs2010_filters.lua293
-rw-r--r--tests/actions/vstudio/test_vs2010_vcxproj.lua68
-rwxr-xr-xtests/actions/vstudio/vc2010/test_debugdir.lua (renamed from tests/actions/vstudio/vc2010/debugdir.lua)2
-rwxr-xr-xtests/actions/vstudio/vc2010/test_files.lua (renamed from tests/actions/vstudio/vc2010/files.lua)2
-rw-r--r--tests/actions/vstudio/vc2010/test_filters.lua336
-rw-r--r--tests/actions/vstudio/vc2010/test_header.lua45
-rw-r--r--tests/premake4.lua7
-rw-r--r--tests/project/test_eachfile.lua3
-rw-r--r--tests/project/test_vpaths.lua22
-rw-r--r--tests/testfx.lua8
10 files changed, 458 insertions, 328 deletions
diff --git a/tests/actions/vstudio/test_vs2010_filters.lua b/tests/actions/vstudio/test_vs2010_filters.lua
deleted file mode 100644
index 9c672bb..0000000
--- a/tests/actions/vstudio/test_vs2010_filters.lua
+++ /dev/null
@@ -1,293 +0,0 @@
- T.vs2010_filters = { }
- local vs10_filters = T.vs2010_filters
- local vc2010 = premake.vstudio.vc2010
-
-
- local sln, prj
- function vs10_filters.setup()
- _ACTION = "vs2010"
- sln = solution "MySolution"
- configurations { "Debug" }
- platforms {}
-
- prj = project "MyProject"
- language "C++"
- kind "ConsoleApp"
- end
-
- local function get_buffer()
- premake.bake.buildconfigs()
- sln.vstudio_configs = premake.vstudio.buildconfigs(sln)
- premake.vs2010_vcxproj_filters(prj)
- buffer = io.endcapture()
- return buffer
- end
-
- function vs10_filters.path_noPath_returnsNil()
- local result = vc2010.file_path("foo.h")
- test.isequal(nil,result)
- end
-
- function vs10_filters.path_hasOneDirectoryPath_returnsIsFoo()
- local path = "foo"
- local result = vc2010.file_path(path .."\\foo.h")
- test.isequal(path,result)
- end
-
- function vs10_filters.path_hasTwoDirectoryPath_returnsIsFooSlashBar()
- local path = "foo\\bar"
- local result = vc2010.file_path(path .."\\foo.h")
- test.isequal(path,result)
- end
-
- function vs10_filters.path_hasTwoDirectoryPath_returnsIsFooSlashBar_Baz()
- local path = "foo\\bar_baz"
- local result = vc2010.file_path(path .."\\foo.h")
- test.isequal(path,result)
- end
-
- function vs10_filters.path_extensionWithHyphen_returnsIsFoo()
- local path = "foo"
- local result = vc2010.file_path(path .."\\foo-bar.h")
- test.isequal(path,result)
- end
-
- function vs10_filters.path_extensionWithNumber_returnsIs2Foo()
- local path = "foo"
- local result = vc2010.file_path(path .."\\2foo.h")
- test.isequal(path,result)
- end
-
- function vs10_filters.path_hasThreeDirectoryPath_returnsIsFooSlashBarSlashBaz()
- local path = "foo\\bar\\baz"
- local result = vc2010.file_path(path .."\\foo.h")
- test.isequal(path,result)
- end
-
- function vs10_filters.path_hasDotDotSlashDirectoryPath_returnsNil()
- local path = ".."
- local result = vc2010.file_path(path .."\\foo.h")
- test.isequal(nil,result)
- end
-
- function vs10_filters.removeRelativePath_noRelativePath_returnsInput()
- local path = "foo.h"
- local result = vc2010.remove_relative_path(path)
- test.isequal("foo.h",result)
- end
-
- function vs10_filters.removeRelativePath_dotDotSlashFoo_returnsFoo()
- local path = "..\\foo"
- local result = vc2010.remove_relative_path(path)
- test.isequal("foo",result)
- end
-
- function vs10_filters.removeRelativePath_dotDotSlashDotDotSlashFoo_returnsFoo()
- local path = "..\\..\\foo"
- local result = vc2010.remove_relative_path(path)
- test.isequal("foo",result)
- end
-
- function vs10_filters.removeRelativePath_DotSlashFoo_returnsFoo()
- local path = ".\\foo"
- local result = vc2010.remove_relative_path(path)
- test.isequal("foo",result)
- end
-
- function vs10_filters.listOfDirectories_oneDirectory_returnsSizeIsOne()
- local result = vc2010.list_of_directories_in_path("foo\\bar.h")
- test.isequal(1,#result)
- end
-
- function vs10_filters.listOfDirectories_oneDirectory_returnsContainsFoo()
- local result = vc2010.list_of_directories_in_path("foo\\bar.h")
- test.contains(result,"foo")
- end
-
- function vs10_filters.listOfDirectories_twoDirectories_returnsSizeIsTwo()
- local result = vc2010.list_of_directories_in_path("foo\\bar\\bar.h")
- test.isequal(2,#result)
- end
-
- function vs10_filters.listOfDirectories_twoDirectories_secondEntryIsFooSlashBar()
- local result = vc2010.list_of_directories_in_path("foo\\bar\\bar.h")
- test.isequal("foo\\bar",result[2])
- end
-
- function vs10_filters.listOfDirectories_dotSlash_returnsIsEmpty()
- local result = vc2010.list_of_directories_in_path(".\\bar.h")
- test.isequal(0,#result)
- end
-
- function vs10_filters.tableOfFileFilters_returnSizeIsTwo()
- local t =
- {
- foo = {'foo\\bar.h'},
- bar = {'foo\\bar.h'},
- baz = {'baz\\bar.h'}
- }
- local result = vc2010.table_of_file_filters(t)
- test.isequal(2,#result)
- end
-
- function vs10_filters.tableOfFileFilters_returnContainsFoo()
- local t =
- {
- foo = {'foo\\bar.h'},
- bar = {'foo\\bar.h'},
- baz = {'baz\\bar.h'}
- }
- local result = vc2010.table_of_file_filters(t)
- --order is not defined
- test.contains(result,'foo')
- end
-
- function vs10_filters.tableOfFileFilters_returnContainsBaz()
- local t =
- {
- foo = {'foo\\bar.h'},
- bar = {'foo\\bar.h'},
- baz = {'baz\\bar.h'}
- }
- local result = vc2010.table_of_file_filters(t)
- --order is not defined
- test.contains(result,'baz')
- end
-
- function vs10_filters.tableOfFileFilters_returnSizeIsFour()
- local t =
- {
- foo = {'foo\\bar.h'},
- bar = {'foo\\bar\\bar.h'},
- baz = {'bar\\bar.h'},
- bazz = {'bar\\foo\\bar.h'}
- }
- local result = vc2010.table_of_file_filters(t)
- --order is not defined
- test.isequal(4,#result)
- end
-
- function vs10_filters.tableOfFileFilters_tableHasSubTableWithTwoEntries_returnSizeIsTwo()
- local t =
- {
- foo = {'foo\\bar.h','foo\\bar\\bar.h'}
- }
- local result = vc2010.table_of_file_filters(t)
- --order is not defined
- test.isequal(2,#result)
- end
-
-
- function vs10_filters.noInputFiles_bufferDoesNotContainTagFilter()
- local buffer = get_buffer()
- test.string_does_not_contain(buffer,"<Filter")
- end
-
- function vs10_filters.noInputFiles_bufferDoesNotContainTagItemGroup()
- local buffer = get_buffer()
- test.string_does_not_contain(buffer,"<ItemGroup>")
- end
-
- function vs10_filters.oneInputFileYetNoDirectory_bufferDoesNotContainTagFilter()
- files
- {
- "dontCare.h"
- }
- local buffer = get_buffer()
- test.string_does_not_contain(buffer,"<Filter")
- end
-
- function vs10_filters.oneInputFileWithDirectory_bufferContainsTagFilter()
- files
- {
- "dontCare\\dontCare.h"
- }
- local buffer = get_buffer()
- test.string_contains(buffer,"<Filter")
- end
-
- function vs10_filters.oneInputFileWithDirectory_bufferContainsTagFilterInsideItemGroupTag()
- files
- {
- "dontCare\\dontCare.h"
- }
- local buffer = get_buffer()
- test.string_contains(buffer,"<ItemGroup>.*<Filter.*</Filter>.*</ItemGroup>")
- end
-
- function vs10_filters.oneInputFileWithDirectory_bufferContainsTagFilterWithIncludeSetToFoo()
- files
- {
- "foo\\dontCare.h"
- }
- local buffer = get_buffer()
- test.string_contains(buffer,'<Filter Include="foo">')
- end
-
- function vs10_filters.clIncludeFilter_oneInputFile_bufferContainsTagClInclude()
- files
- {
- "dontCare.h"
- }
- local buffer = get_buffer()
- test.string_contains(buffer,'<ClInclude')
- end
-
- function vs10_filters.clIncludeFilter_oneInputFileWithoutDirectory_bufferContainsTagClIncludeOnOneLine()
- files
- {
- "foo.h"
- }
- local buffer = get_buffer()
- test.string_contains(buffer,'<ClInclude Include="foo.h" />')
- end
-
- function vs10_filters.clCompileFilter_oneInputFile_bufferContainsTagClCompile()
- files
- {
- "dontCare.cpp"
- }
- local buffer = get_buffer()
- test.string_contains(buffer,'<ClCompile')
- end
-
- function vs10_filters.noneFilter_oneInputFile_bufferContainsTagNone()
- files
- {
- "dontCare.ext"
- }
- local buffer = get_buffer()
- test.string_contains(buffer,'<None')
- end
-
- function vs10_filters.tableOfFileFilters_filterContainsDots_resultsLengthIsThree()
- t =
- {
- foo = {'src\\host\\lua-5.1.4\\foo.h'}
- }
- local result = vc2010.table_of_file_filters(t)
- test.isequal(3,#result)
- end
-
- function vs10_filters.tableOfFileFilters_filterContainsDots_resultContainsTheEntry()
- t =
- {
- foo = {'src\\host\\lua-5.1.4\\foo.h'}
- }
- local result = vc2010.table_of_file_filters(t)
- test.contains(result,'src\\host\\lua-5.1.4')
- end
-
- function vs10_filters.listOfDirectories_filterContainsDots_resultContainsTheEntry()
- local result = vc2010.list_of_directories_in_path('src\\host\\lua.4\\foo.h')
- test.contains(result,'src\\host\\lua.4')
- end
-
- function vs10_filters.resourceCompileFilter_oneInputFile_bufferContainsTagResourceCompile()
- files
- {
- "dontCare.rc"
- }
- local buffer = get_buffer()
- test.string_contains(buffer,'<ResourceCompile')
- end
diff --git a/tests/actions/vstudio/test_vs2010_vcxproj.lua b/tests/actions/vstudio/test_vs2010_vcxproj.lua
index cd4586c..41b9d1c 100644
--- a/tests/actions/vstudio/test_vs2010_vcxproj.lua
+++ b/tests/actions/vstudio/test_vs2010_vcxproj.lua
@@ -55,6 +55,12 @@
return buffer
end
+
+
+--
+-- Tests
+--
+
function vs10_vcxproj.xmlDeclarationPresent()
local buffer = get_buffer()
test.istrue(string.startswith(buffer, '<?xml version=\"1.0\" encoding=\"utf-8\"?>'))
@@ -226,34 +232,6 @@
test.isequal('h', ext)
end
- local function SortAndReturnSortedInputFiles(input)
- return vc2010.sort_input_files(input)
- end
-
- function vs10_vcxproj.sortFile_headerFile_SortedClIncludeEqualToFile()
- local file = {"bar.h"}
- local sorted = SortAndReturnSortedInputFiles(file)
- test.isequal(file, sorted.ClInclude)
- end
-
- function vs10_vcxproj.sortFile_srcFile_SortedClCompileEqualToFile()
- local file = {"b.cxx"}
- local sorted = SortAndReturnSortedInputFiles(file)
- test.isequal(file, sorted.ClCompile)
- end
-
- function vs10_vcxproj.sortFile_notRegistered_SortedNoneEqualToFile()
- local file = {"foo.bar.00h"}
- local sorted = SortAndReturnSortedInputFiles(file)
- test.isequal(file, sorted.None)
- end
-
- function vs10_vcxproj.sortFile_resourceScript_resourceCompileEqualToFile()
- local file = {"foo.rc"}
- local sorted = SortAndReturnSortedInputFiles(file)
- test.isequal(file, sorted.ResourceCompile)
- end
-
function vs10_vcxproj.itemGroupSection_hasResourceCompileSection()
--for some reason this does not work here and it needs to be in
--the project setting at the top ?
@@ -420,3 +398,37 @@
local buffer = get_buffer()
test.string_does_not_contain(buffer,"WholeProgramOptimization")
end
+
+
+
+--
+-- Test file sorting into build categories
+--
+
+ local function SortAndReturnSortedInputFiles(input)
+ return vc2010.sort_input_files(input)
+ end
+
+ function vs10_vcxproj.sortFile_headerFile_SortedClIncludeEqualToFile()
+ local file = {"bar.h"}
+ local sorted = SortAndReturnSortedInputFiles(file)
+ test.isequal(file, sorted.ClInclude)
+ end
+
+ function vs10_vcxproj.sortFile_srcFile_SortedClCompileEqualToFile()
+ local file = {"b.cxx"}
+ local sorted = SortAndReturnSortedInputFiles(file)
+ test.isequal(file, sorted.ClCompile)
+ end
+
+ function vs10_vcxproj.sortFile_notRegistered_SortedNoneEqualToFile()
+ local file = {"foo.bar.00h"}
+ local sorted = SortAndReturnSortedInputFiles(file)
+ test.isequal(file, sorted.None)
+ end
+
+ function vs10_vcxproj.sortFile_resourceScript_resourceCompileEqualToFile()
+ local file = {"foo.rc"}
+ local sorted = SortAndReturnSortedInputFiles(file)
+ test.isequal(file, sorted.ResourceCompile)
+ end
diff --git a/tests/actions/vstudio/vc2010/debugdir.lua b/tests/actions/vstudio/vc2010/test_debugdir.lua
index a7b2818..6aff768 100755
--- a/tests/actions/vstudio/vc2010/debugdir.lua
+++ b/tests/actions/vstudio/vc2010/test_debugdir.lua
@@ -1,5 +1,5 @@
--
--- tests/actions/vstudio/vc2010/debugdir.lua
+-- tests/actions/vstudio/vc2010/test_debugdir.lua
-- Validate handling of the working directory for debugging.
-- Copyright (c) 2011 Jason Perkins and the Premake project
--
diff --git a/tests/actions/vstudio/vc2010/files.lua b/tests/actions/vstudio/vc2010/test_files.lua
index bdd8ad1..937adab 100755
--- a/tests/actions/vstudio/vc2010/files.lua
+++ b/tests/actions/vstudio/vc2010/test_files.lua
@@ -1,5 +1,5 @@
--
--- tests/actions/vstudio/vc2010/files.lua
+-- tests/actions/vstudio/vc2010/test_files.lua
-- Validate generation of files block in Visual Studio 2010 C/C++ projects.
-- Copyright (c) 2011 Jason Perkins and the Premake project
--
diff --git a/tests/actions/vstudio/vc2010/test_filters.lua b/tests/actions/vstudio/vc2010/test_filters.lua
new file mode 100644
index 0000000..b53955c
--- /dev/null
+++ b/tests/actions/vstudio/vc2010/test_filters.lua
@@ -0,0 +1,336 @@
+--
+-- tests/actions/vstudio/vc2010/test_filters.lua
+-- Validate generation of filter blocks in Visual Studio 2010 C/C++ projects.
+-- Copyright (c) 2011 Jason Perkins and the Premake project
+--
+
+ T.vs2010_filters = { }
+ local suite = T.vs2010_filters
+ local vc2010 = premake.vstudio.vc2010
+
+
+--
+-- Setup/teardown
+--
+
+ local sln, prj
+ local os_uuid
+
+ function suite.setup()
+ os_uuid = os.uuid
+ os.uuid = function() return "00112233-4455-6677-8888-99AABBCCDDEE" end
+
+ _ACTION = "vs2010"
+ sln, prj = test.createsolution()
+ end
+
+ function suite.teardown()
+ os.uuid = os_uuid
+ end
+
+ local function get_buffer()
+ premake.bake.buildconfigs()
+ sln.vstudio_configs = premake.vstudio.buildconfigs(sln)
+ vc2010.generate_filters(prj)
+ buffer = io.endcapture()
+ return buffer
+ end
+
+ local function prepare()
+ premake.bake.buildconfigs()
+ sln.vstudio_configs = premake.vstudio.buildconfigs(sln)
+ end
+
+
+--
+-- Tests
+--
+
+ function suite.path_noPath_returnsNil()
+ local result = vc2010.file_path("foo.h")
+ test.isequal(nil,result)
+ end
+
+ function suite.path_hasOneDirectoryPath_returnsIsFoo()
+ local path = "foo"
+ local result = vc2010.file_path(path .."\\foo.h")
+ test.isequal(path,result)
+ end
+
+ function suite.path_hasTwoDirectoryPath_returnsIsFooSlashBar()
+ local path = "foo\\bar"
+ local result = vc2010.file_path(path .."\\foo.h")
+ test.isequal(path,result)
+ end
+
+ function suite.path_hasTwoDirectoryPath_returnsIsFooSlashBar_Baz()
+ local path = "foo\\bar_baz"
+ local result = vc2010.file_path(path .."\\foo.h")
+ test.isequal(path,result)
+ end
+
+ function suite.path_extensionWithHyphen_returnsIsFoo()
+ local path = "foo"
+ local result = vc2010.file_path(path .."\\foo-bar.h")
+ test.isequal(path,result)
+ end
+
+ function suite.path_extensionWithNumber_returnsIs2Foo()
+ local path = "foo"
+ local result = vc2010.file_path(path .."\\2foo.h")
+ test.isequal(path,result)
+ end
+
+ function suite.path_hasThreeDirectoryPath_returnsIsFooSlashBarSlashBaz()
+ local path = "foo\\bar\\baz"
+ local result = vc2010.file_path(path .."\\foo.h")
+ test.isequal(path,result)
+ end
+
+ function suite.path_hasDotDotSlashDirectoryPath_returnsNil()
+ local path = ".."
+ local result = vc2010.file_path(path .."\\foo.h")
+ test.isequal(nil,result)
+ end
+
+ function suite.removeRelativePath_noRelativePath_returnsInput()
+ local path = "foo.h"
+ local result = vc2010.remove_relative_path(path)
+ test.isequal("foo.h",result)
+ end
+
+ function suite.removeRelativePath_dotDotSlashFoo_returnsFoo()
+ local path = "..\\foo"
+ local result = vc2010.remove_relative_path(path)
+ test.isequal("foo",result)
+ end
+
+ function suite.removeRelativePath_dotDotSlashDotDotSlashFoo_returnsFoo()
+ local path = "..\\..\\foo"
+ local result = vc2010.remove_relative_path(path)
+ test.isequal("foo",result)
+ end
+
+ function suite.removeRelativePath_DotSlashFoo_returnsFoo()
+ local path = ".\\foo"
+ local result = vc2010.remove_relative_path(path)
+ test.isequal("foo",result)
+ end
+
+ function suite.clIncludeFilter_oneInputFile_bufferContainsTagClInclude()
+ files
+ {
+ "dontCare.h"
+ }
+ local buffer = get_buffer()
+ test.string_contains(buffer,'<ClInclude')
+ end
+
+ function suite.clIncludeFilter_oneInputFileWithoutDirectory_bufferContainsTagClIncludeOnOneLine()
+ files
+ {
+ "foo.h"
+ }
+ local buffer = get_buffer()
+ test.string_contains(buffer,'<ClInclude Include="foo.h" />')
+ end
+
+ function suite.clCompileFilter_oneInputFile_bufferContainsTagClCompile()
+ files
+ {
+ "dontCare.cpp"
+ }
+ local buffer = get_buffer()
+ test.string_contains(buffer,'<ClCompile')
+ end
+
+ function suite.noneFilter_oneInputFile_bufferContainsTagNone()
+ files
+ {
+ "dontCare.ext"
+ }
+ local buffer = get_buffer()
+ test.string_contains(buffer,'<None')
+ end
+
+ function suite.resourceCompileFilter_oneInputFile_bufferContainsTagResourceCompile()
+ files
+ {
+ "dontCare.rc"
+ }
+ local buffer = get_buffer()
+ test.string_contains(buffer,'<ResourceCompile')
+ end
+
+
+--
+-- Filter identifiers sections
+--
+
+ function suite.UniqueIdentifiers_IsEmpty_OnRootFilesOnly()
+ files { "hello.c", "goodbye.c" }
+ prepare()
+ vc2010.filteridgroup(prj)
+ test.isemptycapture()
+ end
+
+
+ function suite.UniqueIdentifiers_MergeCommonSubfolders()
+ files { "src/hello.c", "src/goodbye.c" }
+ prepare()
+ vc2010.filteridgroup(prj)
+ test.capture [[
+ <ItemGroup>
+ <Filter Include="src">
+ <UniqueIdentifier>{00112233-4455-6677-8888-99AABBCCDDEE}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ ]]
+ end
+
+
+ function suite.UniqueIdentifiers_ListAllSubfolders()
+ files { "src/hello.c", "src/departures/goodbye.c" }
+ prepare()
+ vc2010.filteridgroup(prj)
+ test.capture [[
+ <ItemGroup>
+ <Filter Include="src">
+ <UniqueIdentifier>{00112233-4455-6677-8888-99AABBCCDDEE}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\departures">
+ <UniqueIdentifier>{00112233-4455-6677-8888-99AABBCCDDEE}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ ]]
+ end
+
+
+ function suite.UniqueIdentifiers_ListVpaths()
+ files { "hello.c", "goodbye.c" }
+ vpaths { ["**.c"] = "Source Files" }
+ prepare()
+ vc2010.filteridgroup(prj)
+ test.capture [[
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{00112233-4455-6677-8888-99AABBCCDDEE}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ ]]
+ end
+
+
+ function suite.UniqueIdentifiers_ListRealAndVpaths()
+ files { "hello.h", "goodbye.c" }
+ vpaths { ["*.c"] = "Source Files", ["*.h"] = "Header Files" }
+ prepare()
+ vc2010.filteridgroup(prj)
+ test.capture [[
+ <ItemGroup>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{00112233-4455-6677-8888-99AABBCCDDEE}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{00112233-4455-6677-8888-99AABBCCDDEE}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ ]]
+ end
+
+
+--
+-- File/filter assignment tests
+--
+
+ function suite.FileFilters_NoFilter_OnRootFile()
+ files { "hello.c", "goodbye.c" }
+ prepare()
+ vc2010.filefiltergroup(prj, "ClCompile")
+ test.capture [[
+ <ItemGroup>
+ <ClCompile Include="hello.c" />
+ <ClCompile Include="goodbye.c" />
+ </ItemGroup>
+ ]]
+ end
+
+
+ function suite.FileFilters_NoFilter_OnRealPath()
+ files { "src/hello.c" }
+ prepare()
+ vc2010.filefiltergroup(prj, "ClCompile")
+ test.capture [[
+ <ItemGroup>
+ <ClCompile Include="src\hello.c">
+ <Filter>src</Filter>
+ </ClCompile>
+ </ItemGroup>
+ ]]
+ end
+
+
+ function suite.FileFilters_HasFilter_OnVpath()
+ files { "src/hello.c" }
+ vpaths { ["**.c"] = "Source Files" }
+ prepare()
+ vc2010.filefiltergroup(prj, "ClCompile")
+ test.capture [[
+ <ItemGroup>
+ <ClCompile Include="src\hello.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ ]]
+ end
+
+
+ function suite.FileFilters_OnIncludeSection()
+ files { "hello.c", "hello.h", "hello.rc", "hello.txt" }
+ prepare()
+ vc2010.filefiltergroup(prj, "ClInclude")
+ test.capture [[
+ <ItemGroup>
+ <ClInclude Include="hello.h" />
+ </ItemGroup>
+ ]]
+ end
+
+
+ function suite.FileFilters_OnResourceSection()
+ files { "hello.c", "hello.h", "hello.rc", "hello.txt" }
+ prepare()
+ vc2010.filefiltergroup(prj, "ResourceCompile")
+ test.capture [[
+ <ItemGroup>
+ <ResourceCompile Include="hello.rc" />
+ </ItemGroup>
+ ]]
+ end
+
+
+ function suite.FileFilters_OnNoneSection()
+ files { "hello.c", "hello.h", "hello.rc", "hello.txt" }
+ prepare()
+ vc2010.filefiltergroup(prj, "None")
+ test.capture [[
+ <ItemGroup>
+ <None Include="hello.txt" />
+ </ItemGroup>
+ ]]
+ end
+
+
+ -- one file needs a filter, another doesn't
+
+ -- assigns to real paths
+
+ -- assigns to vpaths
+
+ -- writes none filter
+
+ -- writes include filter
+
+ -- writes resource filter
+ -- anything else?
+ \ No newline at end of file
diff --git a/tests/actions/vstudio/vc2010/test_header.lua b/tests/actions/vstudio/vc2010/test_header.lua
new file mode 100644
index 0000000..6a154b7
--- /dev/null
+++ b/tests/actions/vstudio/vc2010/test_header.lua
@@ -0,0 +1,45 @@
+--
+-- tests/actions/vstudio/vc2010/test_header.lua
+-- Validate generation of the project file header block.
+-- Copyright (c) 2011 Jason Perkins and the Premake project
+--
+
+ T.vstudio_vs2010_header = { }
+ local suite = T.vstudio_vs2010_header
+ local vc2010 = premake.vstudio.vc2010
+
+
+--
+-- Setup
+--
+
+ local sln, prj
+
+ function suite.setup()
+ _ACTION = 'vs2010'
+ sln = test.createsolution()
+ premake.bake.buildconfigs()
+ prj = premake.solution.getproject(sln, 1)
+ sln.vstudio_configs = premake.vstudio.buildconfigs(sln)
+ end
+
+
+--
+-- Tests
+--
+
+ function suite.On2010_WithNoTarget()
+ vc2010.header()
+ test.capture [[
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ ]]
+ end
+
+ function suite.On2010_WithTarget()
+ vc2010.header("Build")
+ test.capture [[
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ ]]
+ end
diff --git a/tests/premake4.lua b/tests/premake4.lua
index 96ca4fa..25fb029 100644
--- a/tests/premake4.lua
+++ b/tests/premake4.lua
@@ -76,7 +76,6 @@
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_filters.lua")
dofile("actions/vstudio/test_vs2010_project_kinds.lua")
-- Visual Studio 2002-2003 C# projects
@@ -102,8 +101,10 @@
dofile("actions/vstudio/vc200x/files.lua")
-- Visual Studio 2010 C/C++ projects
- dofile("actions/vstudio/vc2010/debugdir.lua")
- dofile("actions/vstudio/vc2010/files.lua")
+ dofile("actions/vstudio/vc2010/test_debugdir.lua")
+ dofile("actions/vstudio/vc2010/test_header.lua")
+ dofile("actions/vstudio/vc2010/test_files.lua")
+ dofile("actions/vstudio/vc2010/test_filters.lua")
-- Makefile tests
dofile("actions/make/test_make_escaping.lua")
diff --git a/tests/project/test_eachfile.lua b/tests/project/test_eachfile.lua
index c7bc3e5..8ddf235 100644
--- a/tests/project/test_eachfile.lua
+++ b/tests/project/test_eachfile.lua
@@ -40,8 +40,7 @@
function suite.ReturnedObjectIncludesVpath()
files { "hello.h", "hello.c" }
- vpaths { ["*.h"] = "Headers" }
prepare()
local iter = project.eachfile(prj)
- test.isequal("Headers/hello.h", iter().vpath)
+ test.isequal("hello.h", iter().vpath)
end
diff --git a/tests/project/test_vpaths.lua b/tests/project/test_vpaths.lua
index c7b2e1d..f4832e2 100644
--- a/tests/project/test_vpaths.lua
+++ b/tests/project/test_vpaths.lua
@@ -22,6 +22,7 @@
premake.bake.buildconfigs()
prj = premake.solution.getproject(sln, 1)
end
+
--
-- Test simple replacements
@@ -59,6 +60,7 @@
test.isequal("sources/hello.c", project.getvpath(prj, "src/myproject/hello.c"))
end
+
--
-- Test wildcard patterns
--
@@ -110,3 +112,23 @@
prepare()
test.isequal("Headers/myproject/hello.h", project.getvpath(prj, "src/myproject/hello.h"))
end
+
+
+--
+-- Test directory dot patterns
+--
+
+ function suite.RemovesLeadingDotFolder()
+ prepare()
+ test.isequal("hello.c", project.getvpath(prj, "./hello.c"))
+ end
+
+ function suite.RemovesLeadingDotDotFolder()
+ prepare()
+ test.isequal("hello.c", project.getvpath(prj, "../hello.c"))
+ end
+
+ function suite.RemovesMultipleLeadingDotDotFolders()
+ prepare()
+ test.isequal("src/hello.c", project.getvpath(prj, "../../src/hello.c"))
+ end
diff --git a/tests/testfx.lua b/tests/testfx.lua
index d3cd44a..1182a13 100644
--- a/tests/testfx.lua
+++ b/tests/testfx.lua
@@ -86,6 +86,14 @@
end
end
+
+ function test.isemptycapture()
+ local actual = io.endcapture()
+ if actual ~= "" then
+ test.fail("expected empty capture, but was %s", actual);
+ end
+ end
+
function test.isequal(expected, actual)
if (type(expected) == "table") then