--
-- tests/actions/vstudio/cs2005/test_files.lua
-- Validate generation of block in Visual Studio 2005 .csproj
-- Copyright (c) 2009-2014 Jason Perkins and the Premake project
--
local p = premake
local suite = test.declare("vstudio_cs2005_files")
local dn2005 = p.vstudio.dotnetbase
--
-- Setup
--
local wks, prj
function suite.setup()
p.action.set("vs2005")
wks = test.createWorkspace()
end
local function prepare()
prj = test.getproject(wks, 1)
dn2005.files(prj)
end
--
-- Test grouping and nesting
--
function suite.SimpleSourceFile()
files { "Hello.cs" }
prepare()
test.capture [[
]]
end
function suite.NestedSourceFile()
files { "Src/Hello.cs" }
prepare()
test.capture [[
]]
end
function suite.PerConfigFile()
files { "Hello.cs" }
configuration { 'debug' }
files { "HelloTwo.cs" }
prepare()
test.capture [[
]]
end
--
-- Test file dependencies
--
function suite.resourceDesignerDependency()
files { "Resources.resx", "Resources.Designer.cs" }
prepare()
test.capture [[
TrueResources.resxResXFileCodeGeneratorResources.Designer.csDesigner
]]
end
function suite.publicResourceDesignerDependency()
files { "Resources.resx", "Resources.Designer.cs" }
resourcegenerator 'public'
prepare()
test.capture [[
TrueResources.resxPublicResXFileCodeGeneratorResources.Designer.csDesigner
]]
end
function suite.settingsDesignerDependency()
files { "Properties/Settings.settings", "Properties/Settings.Designer.cs" }
prepare()
test.capture [[
TrueSettings.settingsTrueSettingsSingleFileGeneratorSettings.Designer.cs
]]
end
function suite.datasetDesignerDependency()
files { "DataSet.xsd", "DataSet.Designer.cs" }
prepare()
test.capture [[
TrueTrueDataSet.xsdMSDataSetGeneratorDataSet.Designer.csDesigner
]]
end
function suite.datasetDependencies()
files { "DataSet.xsd", "DataSet.xsc", "DataSet.xss" }
prepare()
test.capture [[
DataSet.xsdDataSet.xsd
]]
end
function suite.textTemplatingDependency()
files { "foobar.tt", "foobar.cs" }
prepare()
test.capture [[
TrueTruefoobar.ttTextTemplatingFileGeneratorfoobar.cs
]]
end
--
-- File associations should always be made relative to the file
-- which is doing the associating.
--
function suite.resourceDependency_inSubfolder()
files { "Forms/TreeListView.resx", "Forms/TreeListView.cs" }
prepare()
test.capture [[
TreeListView.cs
]]
end
function suite.datasetDependency_inSubfolder()
files { "DataSets/DataSet.xsd", "DataSets/DataSet.Designer.cs" }
prepare()
test.capture [[
TrueTrueDataSet.xsdMSDataSetGeneratorDataSet.Designer.csDesigner
]]
end
--
-- Test build actions.
--
function suite.copyAction()
files { "Hello.txt" }
filter "files:**.txt"
buildaction "Copy"
prepare()
test.capture [[
PreserveNewest
]]
end
function suite.componentAction()
files { "Hello.cs" }
filter "files:Hello.cs"
buildaction "Component"
prepare()
test.capture [[
Component
]]
end
function suite.embeddedResourceAction()
files { "Hello.ico" }
filter "files:*.ico"
buildaction "Embed"
prepare()
test.capture [[
]]
end
function suite.formAction()
files { "HelloForm.cs" }
filter "files:HelloForm.cs"
buildaction "Form"
prepare()
test.capture [[
Form
]]
end
function suite.userControlAction()
files { "Hello.cs" }
filter "files:Hello.cs"
buildaction "UserControl"
prepare()
test.capture [[
UserControl
]]
end
function suite.resourceAction()
files { "Hello.ico" }
filter "files:*.ico"
buildaction "Resource"
prepare()
test.capture [[
]]
end
--
-- Files that exist outside the project folder should be added as
-- links, with a relative path. Weird but true.
--
function suite.usesLink_onExternalSourceCode()
files { "../Hello.cs" }
prepare()
test.capture [[
Hello.cs
]]
end
function suite.usesLinkInFolder_onExternalSourceCode()
files { "../Src/Hello.cs" }
prepare()
test.capture [[
Src\Hello.cs
]]
end
function suite.usesLinkInFolder_onExternalContent()
files { "../Resources/Hello.txt" }
filter "files:**.txt"
buildaction "Copy"
prepare()
test.capture [[
Resources\Hello.txt
PreserveNewest
]]
end
function suite.usesLinkInFolder_onExternalReference()
files { "../Resources/Hello.txt" }
prepare()
test.capture [[
Resources\Hello.txt
]]
end
--
-- Files that exist outside the project's folder are allowed to be
-- placed into a folder using a virtual path, which is better than
-- dropping them at the root. Files within the project folder cannot
-- use virtual paths, because Visual Studio won't allow it.
--
function suite.usesLinks_onVpath_onLocalSourceFile()
files { "Hello.cs" }
vpaths { ["Sources"] = "**.cs" }
prepare()
test.capture [[
]]
end
function suite.usesLinks_onVpath_onExternalSourceFile()
files { "../Src/Hello.cs" }
vpaths { ["Sources"] = "../**.cs" }
prepare()
test.capture [[
Sources\Hello.cs
]]
end
--
-- Check WPF XAML handling.
--
function suite.associatesFiles_onXamlForm()
files { "MainWindow.xaml", "MainWindow.xaml.cs" }
prepare()
test.capture [[
MSBuild:CompileDesignerMainWindow.xamlCode
]]
end
function suite.xamlApp_onAppXaml()
files { "App.xaml", "App.xaml.cs" }
prepare()
test.capture [[
MSBuild:CompileDesignerApp.xamlCode
]]
end
function suite.xamlApp_onBuildAction()
files { "MyApp.xaml", "MyApp.xaml.cs" }
filter "files:MyApp.xaml"
buildaction "Application"
prepare()
test.capture [[
MSBuild:CompileDesignerMyApp.xamlCode
]]
end