use of org.xmlunit.builder.Input.fromFile in project pom-manipulation-ext by release-engineering.
the class XMLIOTest method removePartFile.
@Test
public void removePartFile() throws ManipulationException, IOException, XPathExpressionException {
String tomcatPath = "//include[starts-with(.,'org.apache.tomcat')]";
Document doc = xmlIO.parseXML(xmlFile);
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodeList = (NodeList) xPath.evaluate(tomcatPath, doc, XPathConstants.NODESET);
logger.debug("Found node {} with size {} ", nodeList, nodeList.getLength());
assertTrue(nodeList.getLength() == 1);
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
logger.debug("Found node {} with type {} and value {}", node.getNodeName(), node.getNodeType(), node.getTextContent());
node.getParentNode().removeChild(node);
}
File target = tf.newFile();
xmlIO.writeXML(target, doc);
Diff diff = DiffBuilder.compare(fromFile(xmlFile)).withTest(Input.fromFile(target)).build();
assertTrue(diff.toString(), diff.hasDifferences());
String xpathForHamcrest = "/*/*/*/*/*[starts-with(.,'org.apache.tomcat') and local-name() = 'include']";
Iterable<Node> i = new JAXPXPathEngine().selectNodes(xpathForHamcrest, Input.fromFile(target).build());
int count = 0;
for (Node ignored : i) {
count++;
}
assertEquals(0, count);
}
use of org.xmlunit.builder.Input.fromFile in project pom-manipulation-ext by release-engineering.
the class XMLIOTest method writeFile.
@Test
public void writeFile() throws ManipulationException, IOException {
Document doc = xmlIO.parseXML(xmlFile);
File target = tf.newFile();
xmlIO.writeXML(target, doc);
Diff diff = DiffBuilder.compare(fromFile(xmlFile)).withTest(Input.fromFile(target)).build();
assertFalse(diff.toString(), diff.hasDifferences());
}
use of org.xmlunit.builder.Input.fromFile in project pom-manipulation-ext by release-engineering.
the class XMLIOTest method modifyMultiple.
@Test
public void modifyMultiple() throws ManipulationException, IOException, XPathExpressionException {
String updatePath = "/assembly/formats/format";
Document doc = xmlIO.parseXML(xmlFile);
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodeList = (NodeList) xPath.evaluate(updatePath, doc, XPathConstants.NODESET);
logger.debug("Found node {} with size {} ", nodeList, nodeList.getLength());
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
logger.debug("Found node {} with type {} and value {} ", node.getNodeName(), node.getNodeType(), node.getTextContent());
node.setTextContent("NEW-FORMAT-" + i);
}
File target = tf.newFile();
xmlIO.writeXML(target, doc);
Diff diff = DiffBuilder.compare(fromFile(xmlFile)).withTest(Input.fromFile(target)).build();
assertTrue(diff.toString(), diff.hasDifferences());
String xpathForHamcrest = "/*/*/*[starts-with(.,'NEW-FORMAT') and local-name() = '" + updatePath.substring(updatePath.lastIndexOf('/') + 1) + "']";
Iterable<Node> i = new JAXPXPathEngine().selectNodes(xpathForHamcrest, Input.fromFile(target).build());
int count = 0;
for (Node anI : i) {
count++;
assertTrue(anI.getTextContent().startsWith("NEW-FORMAT"));
}
assertEquals(3, count);
}
use of org.xmlunit.builder.Input.fromFile in project pom-manipulation-ext by release-engineering.
the class XMLIOTest method modifyPartialFile.
@Test
public void modifyPartialFile() throws ManipulationException, IOException, XPathExpressionException {
String replacementGA = "com.rebuild:servlet-api";
String tomcatPath = "//include[starts-with(.,'org.apache.tomcat')]";
Document doc = xmlIO.parseXML(xmlFile);
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodeList = (NodeList) xPath.evaluate(tomcatPath, doc, XPathConstants.NODESET);
logger.debug("Found node {} with size {} ", nodeList, nodeList.getLength());
assertTrue(nodeList.getLength() == 1);
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
logger.debug("Found node {} with type {} and value {}", node.getNodeName(), node.getNodeType(), node.getTextContent());
node.setTextContent(replacementGA);
}
File target = tf.newFile();
xmlIO.writeXML(target, doc);
Diff diff = DiffBuilder.compare(fromFile(xmlFile)).withTest(Input.fromFile(target)).build();
assertTrue(diff.toString(), diff.hasDifferences());
String xpathForHamcrest = "/*/*/*/*/*[starts-with(.,'com.rebuild') and local-name() = 'include']";
Iterable<Node> i = new JAXPXPathEngine().selectNodes(xpathForHamcrest, Input.fromFile(target).build());
int count = 0;
for (Node anI : i) {
count++;
assertTrue(anI.getTextContent().startsWith("com.rebuild:servlet-api"));
}
assertEquals(1, count);
}
use of org.xmlunit.builder.Input.fromFile in project pom-manipulation-ext by release-engineering.
the class XMLIOTest method modifyFile.
@Test
public void modifyFile() throws ManipulationException, IOException, XPathExpressionException {
String updatePath = "/assembly/includeBaseDirectory";
String newBaseDirectory = "/home/MYNEWBASEDIR";
Document doc = xmlIO.parseXML(xmlFile);
XPath xPath = XPathFactory.newInstance().newXPath();
Node node = (Node) xPath.evaluate(updatePath, doc, XPathConstants.NODE);
node.setTextContent(newBaseDirectory);
File target = tf.newFile();
xmlIO.writeXML(target, doc);
Diff diff = DiffBuilder.compare(fromFile(xmlFile)).withTest(Input.fromFile(target)).build();
logger.debug("Difference {} ", diff.toString());
String targetXML = FileUtils.readFileToString(target);
// XMLUnit only seems to support XPath 1.0 so modify the expression to find the value.
String xpathForHamcrest = "/*/*[local-name() = '" + updatePath.substring(updatePath.lastIndexOf('/') + 1) + "']";
assertThat(targetXML, hasXPath(xpathForHamcrest));
assertThat(targetXML, EvaluateXPathMatcher.hasXPath(xpathForHamcrest, equalTo(newBaseDirectory)));
assertTrue(diff.toString(), diff.hasDifferences());
}
Aggregations