diff --git a/jvm/src/test/scala/scala/xml/XMLTest.scala b/jvm/src/test/scala/scala/xml/XMLTest.scala index cc40e998e..5d90054c7 100644 --- a/jvm/src/test/scala/scala/xml/XMLTest.scala +++ b/jvm/src/test/scala/scala/xml/XMLTest.scala @@ -542,4 +542,24 @@ class XMLTestJVM { pp.format(x, sb) assertEquals(expected, sb.toString) } + + @UnitTest + def issue46: Unit = { + // val x = + val x = + // val x = Elem(null, "node", e, sc) + val pp = new xml.PrettyPrinter(80, 2) + // This assertion passed + assertEquals("", x.toString) + // This was the bug, producing + assertEquals("", pp.format(x.copy(minimizeEmpty = true))) + } + + @UnitTest + def issue90: Unit = { + val pp = new xml.PrettyPrinter(80, 2, minimizeEmpty = true) + val x = + assertEquals("\n \n", pp.format(x)) + } + } diff --git a/shared/src/main/scala/scala/xml/PrettyPrinter.scala b/shared/src/main/scala/scala/xml/PrettyPrinter.scala index b3f4f9940..2da75a160 100755 --- a/shared/src/main/scala/scala/xml/PrettyPrinter.scala +++ b/shared/src/main/scala/scala/xml/PrettyPrinter.scala @@ -23,8 +23,11 @@ import Utility.sbToString * @param width the width to fit the output into * @param step indentation */ -class PrettyPrinter(width: Int, step: Int) { +class PrettyPrinter(width: Int, step: Int, minimizeEmpty: Boolean) { + def this(width: Int, step: Int) = this(width, step, minimizeEmpty = false) + + val minimizeMode = if (minimizeEmpty) MinimizeMode.Always else MinimizeMode.Default class BrokenException() extends java.lang.Exception class Item @@ -150,7 +153,7 @@ class PrettyPrinter(width: Int, step: Int) { case _ => val test = { val sb = new StringBuilder() - Utility.serialize(node, pscope, sb, stripComments = false) + Utility.serialize(node, pscope, sb, stripComments = false, minimizeTags = minimizeMode) if (doPreserve(node)) sb.toString else TextBuffer.fromString(sb.toString).toText(0).data } diff --git a/shared/src/test/scala/scala/xml/UtilityTest.scala b/shared/src/test/scala/scala/xml/UtilityTest.scala index f6b3828fa..58aadf780 100644 --- a/shared/src/test/scala/scala/xml/UtilityTest.scala +++ b/shared/src/test/scala/scala/xml/UtilityTest.scala @@ -51,4 +51,10 @@ class UtilityTest { .hashCode // Bug #777 } + @Test + def issue90: Unit = { + val x = + assertEquals("", Utility.serialize(x, minimizeTags = MinimizeMode.Always).toString) + } + }