3434import org .junit .jupiter .api .BeforeEach ;
3535import org .junit .jupiter .api .Test ;
3636import org .w3c .dom .Document ;
37+ import org .w3c .dom .Element ;
38+ import org .w3c .dom .NodeList ;
3739
3840class CustomLogFactory implements LoggerContextFactory {
3941 private final org .apache .logging .log4j .spi .LoggerContext ctx ;
@@ -72,12 +74,15 @@ public void removeContext(org.apache.logging.log4j.spi.LoggerContext context) {
7274
7375public class XmlDiffTest {
7476
77+ private static DocumentBuilder docBuilder ;
7578 private XmlMerge xmlMerge ;
7679
7780 @ BeforeAll
7881 public static void setupOnce () throws Exception {
7982 new File ("target/test" ).mkdirs ();
8083 LogManager .setFactory (new CustomLogFactory ());
84+ DocumentBuilderFactory docFactory = DocumentBuilderFactory .newInstance ();
85+ docBuilder = docFactory .newDocumentBuilder ();
8186 }
8287
8388 /**
@@ -95,9 +100,6 @@ public void unordered() throws Exception {
95100 final String diffFilename = "target/test/unordereddiff.xml" ;
96101 XmlDiff .main (new String [] {"src/test/resources/DiffTest1.xml" , "src/test/resources/DiffTest2.xml" , diffFilename , "-u" });
97102
98-
99- DocumentBuilderFactory docFactory = DocumentBuilderFactory .newInstance ();
100- DocumentBuilder docBuilder = docFactory .newDocumentBuilder ();
101103 Document doc = docBuilder .parse (diffFilename );
102104
103105// Expectation:
@@ -127,9 +129,6 @@ public void ordered() throws Exception {
127129 final String diffFilename = "target/test/ordereddiff.xml" ;
128130 XmlDiff .main (new String [] {"src/test/resources/DiffTest1.xml" , "src/test/resources/DiffTest2.xml" , diffFilename });
129131
130-
131- DocumentBuilderFactory docFactory = DocumentBuilderFactory .newInstance ();
132- DocumentBuilder docBuilder = docFactory .newDocumentBuilder ();
133132 Document doc = docBuilder .parse (diffFilename );
134133
135134 assertEquals (3 , doc .getElementsByTagName ("add" ).getLength ());
@@ -160,11 +159,29 @@ public void epDiff() throws Exception {
160159 }
161160 }
162161
163-
164162 @ Test
165163 public void xsdDiff () throws Exception {
166164 final String diffFilename = "target/test/xsddiff.xml" ;
167165 XmlDiff .main (new String [] {"src/test/resources/Enums-new.xsd" , "src/test/resources/Enums-old.xsd" , diffFilename , "-u" });
168166 }
169167
168+ @ Test
169+ public void removeAttribute () throws Exception {
170+ final String mergedFilename = "target/test/Instrument-merged.xml" ;
171+ final String diffFilename = "src/test/resources/Instrument-diff.xml" ;
172+ final String baseFilename = "src/test/resources/Instrument-base.xml" ;
173+
174+ try (
175+ final FileInputStream is1Baseline = new FileInputStream (baseFilename );
176+ final FileInputStream isDiff = new FileInputStream (diffFilename );
177+ final FileOutputStream osMerge = new FileOutputStream (mergedFilename )) {
178+ xmlMerge .merge (is1Baseline , isDiff , osMerge );
179+
180+ Document doc = docBuilder .parse (mergedFilename );
181+ NodeList elements = doc .getElementsByTagName ("fixr:component" );
182+ Element element = (Element ) elements .item (0 );
183+ assertEquals (0 , element .getAttribute ("added" ).length ());
184+ }
185+ }
186+
170187}
0 commit comments