-- -- 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 [[ True Resources.resx ResXFileCodeGenerator Resources.Designer.cs Designer ]] end function suite.publicResourceDesignerDependency() files { "Resources.resx", "Resources.Designer.cs" } resourcegenerator 'public' prepare() test.capture [[ True Resources.resx PublicResXFileCodeGenerator Resources.Designer.cs Designer ]] end function suite.settingsDesignerDependency() files { "Properties/Settings.settings", "Properties/Settings.Designer.cs" } prepare() test.capture [[ True Settings.settings True SettingsSingleFileGenerator Settings.Designer.cs ]] end function suite.datasetDesignerDependency() files { "DataSet.xsd", "DataSet.Designer.cs" } prepare() test.capture [[ True True DataSet.xsd MSDataSetGenerator DataSet.Designer.cs Designer ]] end function suite.datasetDependencies() files { "DataSet.xsd", "DataSet.xsc", "DataSet.xss" } prepare() test.capture [[ DataSet.xsd DataSet.xsd ]] end function suite.textTemplatingDependency() files { "foobar.tt", "foobar.cs" } prepare() test.capture [[ True True foobar.tt TextTemplatingFileGenerator foobar.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 [[ True True DataSet.xsd MSDataSetGenerator DataSet.Designer.cs Designer ]] 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:Compile Designer MainWindow.xaml Code ]] end function suite.xamlApp_onAppXaml() files { "App.xaml", "App.xaml.cs" } prepare() test.capture [[ MSBuild:Compile Designer App.xaml Code ]] end function suite.xamlApp_onBuildAction() files { "MyApp.xaml", "MyApp.xaml.cs" } filter "files:MyApp.xaml" buildaction "Application" prepare() test.capture [[ MSBuild:Compile Designer MyApp.xaml Code ]] end