Search in sources :

Example 1 with Input.fromFile

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);
}
Also used : XPath(javax.xml.xpath.XPath) HasXPathMatcher.hasXPath(org.xmlunit.matchers.HasXPathMatcher.hasXPath) Diff(org.xmlunit.diff.Diff) JAXPXPathEngine(org.xmlunit.xpath.JAXPXPathEngine) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) Document(org.w3c.dom.Document) Input.fromFile(org.xmlunit.builder.Input.fromFile) File(java.io.File) Test(org.junit.Test)

Example 2 with Input.fromFile

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());
}
Also used : Diff(org.xmlunit.diff.Diff) Document(org.w3c.dom.Document) Input.fromFile(org.xmlunit.builder.Input.fromFile) File(java.io.File) Test(org.junit.Test)

Example 3 with Input.fromFile

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);
}
Also used : XPath(javax.xml.xpath.XPath) HasXPathMatcher.hasXPath(org.xmlunit.matchers.HasXPathMatcher.hasXPath) Diff(org.xmlunit.diff.Diff) JAXPXPathEngine(org.xmlunit.xpath.JAXPXPathEngine) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) Document(org.w3c.dom.Document) Input.fromFile(org.xmlunit.builder.Input.fromFile) File(java.io.File) Test(org.junit.Test)

Example 4 with Input.fromFile

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);
}
Also used : XPath(javax.xml.xpath.XPath) HasXPathMatcher.hasXPath(org.xmlunit.matchers.HasXPathMatcher.hasXPath) Diff(org.xmlunit.diff.Diff) JAXPXPathEngine(org.xmlunit.xpath.JAXPXPathEngine) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) Document(org.w3c.dom.Document) Input.fromFile(org.xmlunit.builder.Input.fromFile) File(java.io.File) Test(org.junit.Test)

Example 5 with Input.fromFile

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());
}
Also used : XPath(javax.xml.xpath.XPath) HasXPathMatcher.hasXPath(org.xmlunit.matchers.HasXPathMatcher.hasXPath) Diff(org.xmlunit.diff.Diff) Node(org.w3c.dom.Node) Document(org.w3c.dom.Document) Input.fromFile(org.xmlunit.builder.Input.fromFile) File(java.io.File) Test(org.junit.Test)

Aggregations

File (java.io.File)5 Test (org.junit.Test)5 Document (org.w3c.dom.Document)5 Input.fromFile (org.xmlunit.builder.Input.fromFile)5 Diff (org.xmlunit.diff.Diff)5 XPath (javax.xml.xpath.XPath)4 Node (org.w3c.dom.Node)4 HasXPathMatcher.hasXPath (org.xmlunit.matchers.HasXPathMatcher.hasXPath)4 NodeList (org.w3c.dom.NodeList)3 JAXPXPathEngine (org.xmlunit.xpath.JAXPXPathEngine)3