From 1332277827f6c6edaca9a6a92c476e44389cd42e Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Wed, 5 Apr 2023 22:13:06 +0200 Subject: [PATCH] Fix tests The behavior has changed with https://github.com/codehaus-plexus/plexus-utils/issues/216 but plexus-utils contains duplicate merge code in Xpp3Dom and Xpp3DomUtils and the two pieces have divered. This duplication is removed by the PR by switching to the XmlNode implementation in both cases, but we now need to fix the expectations. --- .../codehaus/plexus/util/xml/Xpp3DomTest.java | 10 ++-- .../plexus/util/xml/Xpp3DomUtilsTest.java | 52 +++++++++++++++++++ 2 files changed, 57 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomTest.java b/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomTest.java index db390ef3..ec4f4ee3 100644 --- a/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomTest.java +++ b/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomTest.java @@ -153,7 +153,7 @@ public void testShouldPerformSelfOverrideAtTopLevel() *

testShouldMergeValuesAtTopLevelByDefault.

*/ @Test - public void testShouldMergeValuesAtTopLevelByDefault() + public void testShouldNotMergeValuesAtTopLevelByDefault() { // create the dominant DOM Xpp3Dom t1 = new Xpp3Dom( "top" ); @@ -172,15 +172,15 @@ public void testShouldMergeValuesAtTopLevelByDefault() // this is still 2, since we're not using the merge-control attribute. assertEquals( 2, result.getAttributeNames().length ); - assertEquals( result.getValue(), t2.getValue() ); - assertEquals( "t2top", result.getInputLocation() ); + assertEquals( result.getValue(), t1.getValue() ); + assertEquals( "t1top", result.getInputLocation() ); } /** *

testShouldMergeValuesAtTopLevel.

*/ @Test - public void testShouldMergeValuesAtTopLevel() + public void testShouldNotMergeValues() { // create the dominant DOM Xpp3Dom t1 = new Xpp3Dom( "top" ); @@ -197,7 +197,7 @@ public void testShouldMergeValuesAtTopLevel() Xpp3Dom result = Xpp3Dom.mergeXpp3Dom( t1, t2 ); assertEquals( 3, result.getAttributeNames().length ); - assertEquals( result.getValue(), t2.getValue() ); + assertNull( result.getValue(), t1.getValue() ); } /** diff --git a/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomUtilsTest.java b/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomUtilsTest.java index 9e244f19..74c08baf 100644 --- a/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomUtilsTest.java +++ b/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomUtilsTest.java @@ -17,6 +17,7 @@ */ import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import java.io.IOException; import java.io.StringReader; @@ -150,6 +151,57 @@ public void testIsNotEmptyNegatesIsEmpty() assertEquals( !Xpp3DomUtils.isEmpty( "someValue" ), Xpp3DomUtils.isNotEmpty( "someValue" ) ); } + /** + *

testShouldMergeValuesAtTopLevelByDefault.

+ */ + @Test + public void testShouldNotMergeValuesAtTopLevelByDefault() + { + // create the dominant DOM + Xpp3Dom t1 = new Xpp3Dom( "top" ); + t1.setAttribute( "attr", "value" ); + t1.setInputLocation( "t1top" ); + + // create the recessive DOM + Xpp3Dom t2 = new Xpp3Dom( "top" ); + t2.setAttribute( "attr2", "value2" ); + t2.setValue( "t2Value" ); + t2.setInputLocation( "t2top" ); + + // merge and check results. + Xpp3Dom result = Xpp3DomUtils.mergeXpp3Dom( t1, t2 ); + + // this is still 2, since we're not using the merge-control attribute. + assertEquals( 2, result.getAttributeNames().length ); + + assertEquals( result.getValue(), t1.getValue() ); + assertEquals( "t1top", result.getInputLocation() ); + } + + /** + *

testShouldMergeValuesAtTopLevel.

+ */ + @Test + public void testShouldNotMergeValues() + { + // create the dominant DOM + Xpp3Dom t1 = new Xpp3Dom( "top" ); + t1.setAttribute( "attr", "value" ); + + t1.setAttribute( Xpp3Dom.SELF_COMBINATION_MODE_ATTRIBUTE, Xpp3Dom.SELF_COMBINATION_MERGE ); + + // create the recessive DOM + Xpp3Dom t2 = new Xpp3Dom( "top" ); + t2.setAttribute( "attr2", "value2" ); + t2.setValue( "t2Value" ); + + // merge and check results. + Xpp3Dom result = Xpp3DomUtils.mergeXpp3Dom( t1, t2 ); + + assertEquals( 3, result.getAttributeNames().length ); + assertNull( result.getValue(), t1.getValue() ); + } + private static class FixedInputLocationBuilder implements Xpp3DomBuilder.InputLocationBuilder {