diff options
author | Jason Perkins <starkos@industriousone.com> | 2011-07-01 23:05:16 +0400 |
---|---|---|
committer | Jason Perkins <starkos@industriousone.com> | 2011-07-01 23:05:16 +0400 |
commit | 86ad3166a04bec5b1032f89656dd85e2c1587bed (patch) | |
tree | de16f961168851bf09517481586865037dea2d4a /tests | |
parent | e87f4851c3841159dc4d02d1703da5df55839261 (diff) |
Implemented vpaths for VS2010
Diffstat (limited to 'tests')
-rw-r--r-- | tests/actions/vstudio/test_vs2010_filters.lua | 293 | ||||
-rw-r--r-- | tests/actions/vstudio/test_vs2010_vcxproj.lua | 68 | ||||
-rwxr-xr-x | tests/actions/vstudio/vc2010/test_debugdir.lua (renamed from tests/actions/vstudio/vc2010/debugdir.lua) | 2 | ||||
-rwxr-xr-x | tests/actions/vstudio/vc2010/test_files.lua (renamed from tests/actions/vstudio/vc2010/files.lua) | 2 | ||||
-rw-r--r-- | tests/actions/vstudio/vc2010/test_filters.lua | 336 | ||||
-rw-r--r-- | tests/actions/vstudio/vc2010/test_header.lua | 45 | ||||
-rw-r--r-- | tests/premake4.lua | 7 | ||||
-rw-r--r-- | tests/project/test_eachfile.lua | 3 | ||||
-rw-r--r-- | tests/project/test_vpaths.lua | 22 | ||||
-rw-r--r-- | tests/testfx.lua | 8 |
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 |