diff options
author | Marek Safar <marek.safar@gmail.com> | 2016-05-25 18:01:34 +0300 |
---|---|---|
committer | Marek Safar <marek.safar@gmail.com> | 2016-05-25 18:03:50 +0300 |
commit | aae26db0c28a0e8e6241d523ac006ae8e9047916 (patch) | |
tree | 0af26ce9b04cd202901843c99a643cccea4221d8 /mcs/class/WindowsBase | |
parent | 07bcf1a3c21a895624fa8a42d5a9051f601b2777 (diff) |
[WindowsBase] Fix for the new .rels file when it's shorter than the old. A fix for #41203
Diffstat (limited to 'mcs/class/WindowsBase')
-rw-r--r-- | mcs/class/WindowsBase/System.IO.Packaging/Package.cs | 2 | ||||
-rw-r--r-- | mcs/class/WindowsBase/Test/System.IO.Packaging/PackageRelationshipTests.cs | 28 |
2 files changed, 30 insertions, 0 deletions
diff --git a/mcs/class/WindowsBase/System.IO.Packaging/Package.cs b/mcs/class/WindowsBase/System.IO.Packaging/Package.cs index 96ea9a5403b..e4b4ae11d2a 100644 --- a/mcs/class/WindowsBase/System.IO.Packaging/Package.cs +++ b/mcs/class/WindowsBase/System.IO.Packaging/Package.cs @@ -457,6 +457,8 @@ namespace System.IO.Packaging { internal static void WriteRelationships (Dictionary <string, PackageRelationship> relationships, Stream stream) { + stream.SetLength(0); + XmlDocument doc = new XmlDocument (); XmlNamespaceManager manager = new XmlNamespaceManager (doc.NameTable); manager.AddNamespace ("rel", RelationshipNamespace); diff --git a/mcs/class/WindowsBase/Test/System.IO.Packaging/PackageRelationshipTests.cs b/mcs/class/WindowsBase/Test/System.IO.Packaging/PackageRelationshipTests.cs index 6ce92d31e57..ade937eea58 100644 --- a/mcs/class/WindowsBase/Test/System.IO.Packaging/PackageRelationshipTests.cs +++ b/mcs/class/WindowsBase/Test/System.IO.Packaging/PackageRelationshipTests.cs @@ -184,5 +184,33 @@ namespace MonoTests.System.IO.Packaging { d.RelationshipType == node.Attributes["Type"].InnerText));
}
}
+
+ [Test]
+ public void CheckRelationshipDeletion ()
+ {
+ AddThreeRelationShips ();
+ package.Flush ();
+
+ foreach (PackageRelationship p in new List<PackageRelationship> (package.GetRelationships ()).Skip(1))
+ package.DeleteRelationship (p.Id);
+
+ PackagePart part = package.GetPart (new Uri ("/_rels/.rels", UriKind.Relative));
+ Assert.IsNotNull (package.GetPart (new Uri ("/_RELS/.RELS", UriKind.Relative)), "#0");
+ package.Flush ();
+ Assert.IsNotNull (part, "#1");
+
+ Stream stream = part.GetStream ();
+ Assert.IsTrue (stream.Length > 0, "#2a");
+
+ XmlDocument doc = new XmlDocument ();
+ XmlNamespaceManager manager = new XmlNamespaceManager (doc.NameTable);
+ manager.AddNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships");
+ doc.Load (new StreamReader (stream));
+
+ Assert.IsNotNull (doc.SelectSingleNode ("/rel:Relationships", manager), "#2b");
+
+ XmlNodeList list = doc.SelectNodes ("/rel:Relationships/*", manager);
+ Assert.AreEqual (1, list.Count);
+ }
}
}
|