• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hazendaz / httpunit / 656

06 Dec 2025 09:11PM UTC coverage: 80.452% (+0.02%) from 80.435%
656

push

github

hazendaz
[maven-release-plugin] prepare for next development iteration

3213 of 4105 branches covered (78.27%)

Branch coverage included in aggregate %.

8245 of 10137 relevant lines covered (81.34%)

0.81 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

3.23
/src/main/java/com/meterware/httpunit/parsing/JTidyHTMLParser.java
1
/*
2
 * MIT License
3
 *
4
 * Copyright 2011-2025 Russell Gold
5
 *
6
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
7
 * documentation files (the "Software"), to deal in the Software without restriction, including without limitation
8
 * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
9
 * to permit persons to whom the Software is furnished to do so, subject to the following conditions:
10
 *
11
 * The above copyright notice and this permission notice shall be included in all copies or substantial portions
12
 * of the Software.
13
 *
14
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
15
 * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
17
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18
 * DEALINGS IN THE SOFTWARE.
19
 */
20
package com.meterware.httpunit.parsing;
21

22
import com.meterware.httpunit.dom.HTMLDocumentImpl;
23

24
import java.io.ByteArrayInputStream;
25
import java.io.IOException;
26
import java.net.URL;
27
import java.nio.charset.StandardCharsets;
28

29
import org.w3c.dom.Document;
30
import org.w3c.dom.Node;
31
import org.w3c.dom.NodeList;
32
import org.w3c.dom.html.HTMLDocument;
33
import org.w3c.tidy.Tidy;
34
import org.xml.sax.SAXException;
35

36
/**
37
 * The Class JTidyHTMLParser.
38
 */
39
class JTidyHTMLParser implements HTMLParser {
1✔
40

41
    @Override
42
    public void parse(URL pageURL, String pageText, DocumentAdapter adapter) throws IOException, SAXException {
43
        Document jtidyDocument = getParser(pageURL)
×
44
                .parseDOM(new ByteArrayInputStream(pageText.getBytes(StandardCharsets.UTF_8)), null);
×
45
        HTMLDocument htmlDocument = new HTMLDocumentImpl();
×
46
        NodeList nl = jtidyDocument.getChildNodes();
×
47
        for (int i = 0; i < nl.getLength(); i++) {
×
48
            Node importedNode = nl.item(i);
×
49
            if (importedNode.getNodeType() != Node.DOCUMENT_TYPE_NODE) {
×
50
                htmlDocument.appendChild(htmlDocument.importNode(importedNode, true));
×
51
            }
52
        }
53
        adapter.setDocument(htmlDocument);
×
54
    }
×
55

56
    @Override
57
    public String getCleanedText(String string) {
58
        return string == null ? "" : string.replace(NBSP, ' ');
×
59
    }
60

61
    @Override
62
    public boolean supportsPreserveTagCase() {
63
        return false;
×
64
    }
65

66
    @Override
67
    public boolean supportsForceTagCase() {
68
        return false;
×
69
    }
70

71
    @Override
72
    public boolean supportsReturnHTMLDocument() {
73
        return true;
×
74
    }
75

76
    @Override
77
    public boolean supportsParserWarnings() {
78
        return true;
×
79
    }
80

81
    /** The Constant NBSP. */
82
    private static final char NBSP = (char) 160; // non-breaking space, defined by JTidy
83

84
    /**
85
     * get the parser of the given url.
86
     *
87
     * @param url
88
     *            the url
89
     *
90
     * @return the parser
91
     */
92
    private static Tidy getParser(URL url) {
93
        Tidy tidy = new Tidy();
×
94
        // BR 2880636 httpunit 1.7 does not work with latest Tidy release r918
95
        // tidy.setCharEncoding( org.w3c.tidy.Configuration.UTF8 );
96
        tidy.setInputEncoding("UTF8");
×
97
        tidy.setQuiet(true);
×
98
        tidy.setShowWarnings(HTMLParserFactory.isParserWarningsEnabled());
×
99
        if (!HTMLParserFactory.getHTMLParserListeners().isEmpty()) {
×
100
            tidy.setErrout(new JTidyPrintWriter(url));
×
101
        }
102
        return tidy;
×
103
    }
104

105
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc