public void It_allows_excluded_folders_to_be_overridden() { Action <GetValuesCommand> setup = getValuesCommand => { foreach (string folder in new[] { "bin", "obj", "packages" }) { WriteFile(Path.Combine(getValuesCommand.ProjectRootPath, folder, "source.cs"), $"public class ClassFrom_{folder} {{}}"); } WriteFile(Path.Combine(getValuesCommand.ProjectRootPath, "Code", "Class1.cs"), "public class Class1 {}"); }; Action <XDocument> projectChanges = project => { var ns = project.Root.Name.Namespace; project.Root.Element(ns + "PropertyGroup").Add(new XElement(ns + "EnableDefaultItems", "False")); XElement itemGroup = new XElement(ns + "ItemGroup"); project.Root.Add(itemGroup); itemGroup.Add(new XElement(ns + "Compile", new XAttribute("Include", "**\\*.cs"))); }; var compileItems = GivenThatWeWantToBuildALibrary.GetValuesFromTestLibrary(_testAssetsManager, "Compile", setup, new[] { "/p:DisableDefaultRemoves=true" }, GetValuesCommand.ValueType.Item, projectChanges: projectChanges); RemoveGeneratedCompileItems(compileItems); var expectedItems = new[] { "Helper.cs", @"Code\Class1.cs", @"bin\source.cs", @"obj\source.cs", @"packages\source.cs" } .Select(item => item.Replace('\\', Path.DirectorySeparatorChar)) .ToArray(); compileItems.Should().BeEquivalentTo(expectedItems); }
public void It_allows_files_in_the_obj_folder_to_be_explicitly_included() { Action <GetValuesCommand> setup = getValuesCommand => { WriteFile(Path.Combine(getValuesCommand.ProjectRootPath, "Code", "Class1.cs"), "public class Class1 {}"); WriteFile(Path.Combine(getValuesCommand.ProjectRootPath, "obj", "Class2.cs"), "public class Class2 {}"); WriteFile(Path.Combine(getValuesCommand.ProjectRootPath, "obj", "Excluded.cs"), "!InvalidCSharp!"); }; Action <XDocument> projectChanges = project => { var ns = project.Root.Name.Namespace; XElement itemGroup = new XElement(ns + "ItemGroup"); project.Root.Add(itemGroup); itemGroup.Add(new XElement(ns + "Compile", new XAttribute("Include", "obj\\Class2.cs"))); }; var compileItems = GivenThatWeWantToBuildALibrary.GetValuesFromTestLibrary(Log, _testAssetsManager, "Compile", setup, projectChanges: projectChanges); RemoveGeneratedCompileItems(compileItems); var expectedItems = new[] { "Helper.cs", @"Code\Class1.cs", @"obj\Class2.cs" } .Select(item => item.Replace('\\', Path.DirectorySeparatorChar)) .ToArray(); compileItems.Should().BeEquivalentTo(expectedItems); }
public void It_allows_items_outside_project_root_to_be_included() { Action <GetValuesCommand> setup = getValuesCommand => { string sharedCodePath = Path.Combine(Path.GetDirectoryName(getValuesCommand.ProjectRootPath), "Shared"); WriteFile(Path.Combine(sharedCodePath, "Shared.cs"), "public class SharedClass {}"); WriteFile(Path.Combine(getValuesCommand.ProjectRootPath, "Code", "Class1.cs"), "public class Class1 {}"); }; Action <XDocument> projectChanges = project => { var ns = project.Root.Name.Namespace; XElement itemGroup = new XElement(ns + "ItemGroup"); project.Root.Add(itemGroup); itemGroup.Add(new XElement(ns + "Compile", new XAttribute("Include", "..\\Shared\\**\\*.cs"))); }; var compileItems = GivenThatWeWantToBuildALibrary.GetValuesFromTestLibrary(Log, _testAssetsManager, "Compile", setup, projectChanges: projectChanges); RemoveGeneratedCompileItems(compileItems); var expectedItems = new[] { "Helper.cs", @"Code\Class1.cs", @"..\Shared\Shared.cs", } .Select(item => item.Replace('\\', Path.DirectorySeparatorChar)) .ToArray(); compileItems.Should().BeEquivalentTo(expectedItems); }