Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Safar <marek.safar@gmail.com>2016-05-25 18:01:34 +0300
committerMarek Safar <marek.safar@gmail.com>2016-05-25 18:03:50 +0300
commitaae26db0c28a0e8e6241d523ac006ae8e9047916 (patch)
tree0af26ce9b04cd202901843c99a643cccea4221d8 /mcs/class/WindowsBase
parent07bcf1a3c21a895624fa8a42d5a9051f601b2777 (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.cs2
-rw-r--r--mcs/class/WindowsBase/Test/System.IO.Packaging/PackageRelationshipTests.cs28
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);
+ }
}
}