public void ValidatesFileIsWritableProgram() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project { AssemblyAttributes = new AssemblyAttributes(), FilePath = new FileInfo("test.cs") }); var copiedProjectFile = Path.Combine("TestFiles", "OtherTestProjects", $"{nameof(ValidatesFileIsWritableProgram)}.readonly"); if (File.Exists(copiedProjectFile)) { File.SetAttributes(copiedProjectFile, FileAttributes.Normal); File.Delete(copiedProjectFile); } File.Copy(Path.Combine("TestFiles", "OtherTestProjects", "readonly.testcsproj"), copiedProjectFile); File.SetAttributes(copiedProjectFile, FileAttributes.ReadOnly); var project = new ProjectReader().Read(copiedProjectFile); var messageNum = 0; var progress = new Progress <string>(x => { if (messageNum++ == 0) { Assert.AreEqual( $@"TestFiles\OtherTestProjects\{nameof(ValidatesFileIsWritableProgram)}.readonly is readonly, please make the file writable first (checkout from source control?).", x); } }); writer.Write(project, false); }
public void ValidatesFileIsWritable() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project { AssemblyAttributes = new AssemblyAttributes(), FilePath = new System.IO.FileInfo("test.cs") }); var copiedProjectFile = $"TestFiles\\OtherTestProjects\\{nameof(ValidatesFileIsWritable)}.readonly"; File.Copy("TestFiles\\OtherTestProjects\\readonly.testcsproj", copiedProjectFile); File.SetAttributes(copiedProjectFile, FileAttributes.ReadOnly); var project = new ProjectReader().Read(copiedProjectFile); var messageNum = 0; var progress = new Progress <string>(x => { if (messageNum++ == 0) { Assert.AreEqual( $@"TestFiles\OtherTestProjects\{nameof(ValidatesFileIsWritable)}.readonly is readonly, please make the file writable first (checkout from source control?).", x); } }); writer.Write(project, false, progress); }
public void SkipDelaySignNull() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project { DelaySign = null }, new System.IO.FileInfo("test.cs")); var delaySign = xmlNode.Element("PropertyGroup").Element("DelaySign"); Assert.IsNull(delaySign); }
public void SkipDelaySignNull() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project { PropertyGroups = new[] { new XElement("PropertyGroup") }, FilePath = new FileInfo("test.cs") }); var delaySign = xmlNode.Elements("PropertyGroup").First().Element("DelaySign"); Assert.IsNull(delaySign); }
public void OutputDelaySignFalse() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project { DelaySign = false, }, new System.IO.FileInfo("test.cs")); var delaySign = xmlNode.Element("PropertyGroup").Element("DelaySign"); Assert.IsNotNull(delaySign); Assert.AreEqual("false", delaySign.Value); }
public void GenerateAssemblyInfoOnNothingSpecifiedTest() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project() { AssemblyAttributes = new AssemblyAttributes() }, new System.IO.FileInfo("test.cs")); var generateAssemblyInfo = xmlNode.Element("PropertyGroup").Element("GenerateAssemblyInfo"); Assert.IsNotNull(generateAssemblyInfo); Assert.AreEqual("false", generateAssemblyInfo.Value); }
public void OutputAppendTargetFrameworkToOutputPathTrue() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project { AppendTargetFrameworkToOutputPath = true, FilePath = new FileInfo("test.cs") }); var appendTargetFrameworkToOutputPath = xmlNode.Element("PropertyGroup").Element("AppendTargetFrameworkToOutputPath"); Assert.IsNull(appendTargetFrameworkToOutputPath); }
public void OutputDelaySignFalse() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project { PropertyGroups = new[] { new XElement("PropertyGroup", new XElement("DelaySign", "false")) }, FilePath = new FileInfo("test.cs") }); var delaySign = xmlNode.Elements("PropertyGroup").First().Element("DelaySign"); Assert.IsNotNull(delaySign); Assert.AreEqual("false", delaySign.Value); }
public void OutputAppendTargetFrameworkToOutputPathFalse() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project { AppendTargetFrameworkToOutputPath = false, FilePath = new FileInfo("test.cs") }); var appendTargetFrameworkToOutputPath = xmlNode.Element("PropertyGroup").Element("AppendTargetFrameworkToOutputPath"); Assert.IsNotNull(appendTargetFrameworkToOutputPath); Assert.AreEqual("false", appendTargetFrameworkToOutputPath.Value); }
public void OutputDelaySignTrue() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project { DelaySign = true, FilePath = new FileInfo("test.cs") }); var delaySign = xmlNode.Element("PropertyGroup").Element("DelaySign"); Assert.IsNotNull(delaySign); Assert.AreEqual("true", delaySign.Value); }
public void GeneratesAssemblyInfoNodesWhenSpecifiedTest() { var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(new Project { AssemblyAttributes = new AssemblyAttributes { Company = "Company" } }, new System.IO.FileInfo("test.cs")); var generateAssemblyInfo = xmlNode.Element("PropertyGroup").Element("GenerateAssemblyInfo"); Assert.IsNull(generateAssemblyInfo); var generateAssemblyCompany = xmlNode.Element("PropertyGroup").Element("GenerateAssemblyCompanyAttribute"); Assert.IsNotNull(generateAssemblyCompany); Assert.AreEqual("false", generateAssemblyCompany.Value); }
public void PreventEmptyAssemblyReferences() { var project = new Project { AssemblyReferences = new List <AssemblyReference> { new AssemblyReference() { Include = "System" } }, FilePath = new FileInfo("test.cs") }; var writer = new ProjectWriter(_ => { }, _ => { }); var xmlNode = writer.CreateXml(project); Assert.IsNull(xmlNode.Element("ItemGroup")); }
public async Task WritesDistinctConfigurations() { const string xml = @" <Project DefaultTargets=""Build"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"" ToolsVersion=""4.0""> <Import Project=""$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props"" Condition=""Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"" /> <PropertyGroup> <VisualStudioVersion Condition=""'$(VisualStudioVersion)' == ''"">15.0</VisualStudioVersion> <OldToolsVersion>14.0</OldToolsVersion> <DslTargetsPath>..\SDK\v15.0\MSBuild\DSLTools</DslTargetsPath> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <MinimumVisualStudioVersion>15.0</MinimumVisualStudioVersion> </PropertyGroup> <PropertyGroup> <Configuration Condition="" '$(Configuration)' == '' "">Debug</Configuration> <Platform Condition="" '$(Platform)' == '' "">AnyCPU</Platform> <ProjectGuid>{87161453-D71B-4ABB-BADB-1D0E621E8EA0}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>Class1</RootNamespace> <AssemblyName>Class1</AssemblyName> <TargetFrameworkVersion>v4.7</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <TargetFrameworkProfile /> </PropertyGroup> <PropertyGroup Condition="" '$(Configuration)|$(Platform)' == 'Debug|x86' ""> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <PlatformTarget>AnyCPU</PlatformTarget> <TreatWarningsAsErrors>false</TreatWarningsAsErrors> <DocumentationFile>bin\Debug\Class1.xml</DocumentationFile> <RunCodeAnalysis>false</RunCodeAnalysis> <CodeAnalysisRuleSet>..\FxCop.Rules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition="" '$(Configuration)|$(Platform)' == 'Debug|x64' ""> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <PlatformTarget>AnyCPU</PlatformTarget> <TreatWarningsAsErrors>false</TreatWarningsAsErrors> <DocumentationFile>bin\Release\Class1.xml</DocumentationFile> <RunCodeAnalysis>true</RunCodeAnalysis> <CodeAnalysisRuleSet>..\FxCop.Rules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=""'$(Configuration)|$(Platform)' == 'Release|x86'""> <OutputPath>bin\Release_CI\</OutputPath> <DefineConstants>TRACE</DefineConstants> <Optimize>true</Optimize> <DebugType>pdbonly</DebugType> <PlatformTarget>AnyCPU</PlatformTarget> <ErrorReport>prompt</ErrorReport> <CodeAnalysisRuleSet>..\FxCop.Rules.ruleset</CodeAnalysisRuleSet> <DocumentationFile>bin\Release_CI\Class1.xml</DocumentationFile> <TreatWarningsAsErrors>true</TreatWarningsAsErrors> <RunCodeAnalysis>true</RunCodeAnalysis> </PropertyGroup> <PropertyGroup Condition=""'$(Configuration)|$(Platform)' == 'Release|x64'""> <OutputPath>bin\Release_CI\</OutputPath> <DefineConstants>TRACE</DefineConstants> <Optimize>true</Optimize> <DebugType>pdbonly</DebugType> <PlatformTarget>AnyCPU</PlatformTarget> <ErrorReport>prompt</ErrorReport> <CodeAnalysisRuleSet>..\FxCop.Rules.ruleset</CodeAnalysisRuleSet> <DocumentationFile>bin\Release_CI\Class1.xml</DocumentationFile> <TreatWarningsAsErrors>true</TreatWarningsAsErrors> <RunCodeAnalysis>true</RunCodeAnalysis> </PropertyGroup> </Project>"; var project = await ParseAndTransform(xml).ConfigureAwait(false); Assert.AreEqual(2, project.Configurations.Count); Assert.AreEqual(1, project.Configurations.Count(x => x == "Debug")); Assert.AreEqual(1, project.Configurations.Count(x => x == "Release")); var writer = new ProjectWriter(); var xmlNode = writer.CreateXml(project); var generatedConfigurations = xmlNode.Element("PropertyGroup").Element("Configurations"); Assert.IsNull(generatedConfigurations); }