public void ChangeAttributeToMetadataOnItemDefinition() { var projectContents = @" <Project> <ItemDefinitionGroup> <i1 m1='v1'/> </ItemDefinitionGroup> </Project>"; ProjectRootElement projectElement = ProjectRootElement.Create(XmlReader.Create(new StringReader(projectContents)), ProjectCollection.GlobalProjectCollection, preserveFormatting: true); ProjectItemDefinitionGroupElement itemDefinitionGroup = (ProjectItemDefinitionGroupElement)projectElement.AllChildren.FirstOrDefault(c => c is ProjectItemDefinitionGroupElement); var project = new Project(projectElement); var itemDefinitions = Helpers.MakeList(itemDefinitionGroup.ItemDefinitions); Assert.Single(itemDefinitions); Assert.Single(itemDefinitions[0].Metadata); var metadata = itemDefinitions[0].Metadata.First(); Assert.Equal("m1", metadata.Name); Assert.Equal("v1", metadata.Value); Assert.True(metadata.ExpressedAsAttribute); metadata.ExpressedAsAttribute = false; Assert.False(metadata.ExpressedAsAttribute); Assert.True(project.IsDirty); StringWriter writer = new StringWriter(); project.Save(writer); string expected = @"<?xml version=""1.0"" encoding=""utf-16""?>" + ObjectModelHelpers.CleanupFileContents(@" <Project> <ItemDefinitionGroup> <i1> <m1>v1</m1> </i1> </ItemDefinitionGroup> </Project>"); string actual = writer.ToString(); VerifyAssertLineByLine(expected, actual); }
public void ReadNoChildren() { string content = @" <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003' > <ItemDefinitionGroup> <i/> </ItemDefinitionGroup> </Project> "; ProjectRootElement project = ProjectRootElement.Create(XmlReader.Create(new StringReader(content))); ProjectItemDefinitionGroupElement itemDefinitionGroup = (ProjectItemDefinitionGroupElement)Helpers.GetFirst(project.Children); ProjectItemDefinitionElement itemDefinition = Helpers.GetFirst(itemDefinitionGroup.ItemDefinitions); Assert.AreEqual(0, Helpers.Count(itemDefinition.Metadata)); }
public void ReadNoChildren() { string content = @" <Project> <ItemDefinitionGroup> <i/> </ItemDefinitionGroup> </Project> "; ProjectRootElement project = ProjectRootElement.Create(XmlReader.Create(new StringReader(content))); ProjectItemDefinitionGroupElement itemDefinitionGroup = (ProjectItemDefinitionGroupElement)Helpers.GetFirst(project.Children); ProjectItemDefinitionElement itemDefinition = Helpers.GetFirst(itemDefinitionGroup.ItemDefinitions); Assert.Equal(0, Helpers.Count(itemDefinition.Metadata)); }
public void ReadBasic() { string content = @" <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003' > <ItemDefinitionGroup> <i> <m1>v1</m1> </i> </ItemDefinitionGroup> </Project> "; ProjectRootElement project = ProjectRootElement.Create(XmlReader.Create(new StringReader(content))); ProjectItemDefinitionGroupElement itemDefinitionGroup = (ProjectItemDefinitionGroupElement)Helpers.GetFirst(project.Children); ProjectItemDefinitionElement definition = Helpers.GetFirst(itemDefinitionGroup.ItemDefinitions); Assert.AreEqual("i", definition.ItemType); Assert.AreEqual(1, Helpers.Count(definition.Metadata)); Assert.AreEqual("m1", Helpers.GetFirst(definition.Metadata).Name); Assert.AreEqual("v1", Helpers.GetFirst(definition.Metadata).Value); }
public void ReadBasic() { string content = @" <Project> <ItemDefinitionGroup> <i> <m1>v1</m1> </i> </ItemDefinitionGroup> </Project> "; ProjectRootElement project = ProjectRootElement.Create(XmlReader.Create(new StringReader(content))); ProjectItemDefinitionGroupElement itemDefinitionGroup = (ProjectItemDefinitionGroupElement)Helpers.GetFirst(project.Children); ProjectItemDefinitionElement definition = Helpers.GetFirst(itemDefinitionGroup.ItemDefinitions); Assert.Equal("i", definition.ItemType); Assert.Equal(1, Helpers.Count(definition.Metadata)); Assert.Equal("m1", Helpers.GetFirst(definition.Metadata).Name); Assert.Equal("v1", Helpers.GetFirst(definition.Metadata).Value); }
public void ReadMetadataAsAttributeOnItemDefinitionWithSpecialCharacters() { var project = @" <Project> <ItemDefinitionGroup> <i1 m1='<&>""' /> </ItemDefinitionGroup> </Project> "; ProjectRootElement projectElement = ProjectRootElement.Create(XmlReader.Create(new StringReader(project))); ProjectItemDefinitionGroupElement itemDefinitionGroup = (ProjectItemDefinitionGroupElement)projectElement.AllChildren.FirstOrDefault(c => c is ProjectItemDefinitionGroupElement); var itemDefinitions = Helpers.MakeList(itemDefinitionGroup.ItemDefinitions); Assert.Single(itemDefinitions); Assert.Single(itemDefinitions[0].Metadata); var metadata = itemDefinitions[0].Metadata.First(); Assert.Equal("m1", metadata.Name); Assert.Equal(@"<&>""", metadata.Value); Assert.True(metadata.ExpressedAsAttribute); }
public void AddMetadataAsAttributeToItemDefinitionIllegalName() { string project = @" <Project> <ItemDefinitionGroup> <i1/> </ItemDefinitionGroup> </Project> "; ProjectRootElement projectElement = ProjectRootElement.Create(XmlReader.Create(new StringReader(project))); ProjectItemDefinitionGroupElement itemDefinitionGroup = (ProjectItemDefinitionGroupElement)projectElement.AllChildren.FirstOrDefault(c => c is ProjectItemDefinitionGroupElement); var itemDefinitions = Helpers.MakeList(itemDefinitionGroup.ItemDefinitions); Assert.Single(itemDefinitions); var itemDefinition = itemDefinitions.First(); Assert.Throws <InvalidProjectFileException>(() => { itemDefinition.AddMetadata("Include", "v1", true); }); }
internal static ProjectItemDefinitionElement LookupItemDefinitionElement(this ProjectItemDefinitionGroupElement pidge, string itemType) { return(pidge.Children.OfType <ProjectItemDefinitionElement>().FirstOrDefault(each => each.ItemType == itemType) ?? pidge.AddItemDefinition(itemType)); }