aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitReportTest.java
blob: c5b6feb97ff964b7543f13b1bda17d31f1a686c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 */

package org.apache.tools.ant.taskdefs.optional.junit;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.apache.tools.ant.AntAssert.assertContains;
import static org.junit.Assert.fail;

import java.io.File;
import java.io.FileReader;
import java.io.InputStream;
import java.net.URL;

import org.apache.tools.ant.BuildFileRule;
import org.apache.tools.ant.util.FileUtils;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

/**
 * Small testcase for the junitreporttask.
 * First test added to reproduce an fault, still a lot to improve
 *
 */
public class JUnitReportTest {
	
	@Rule
	public BuildFileRule buildRule = new BuildFileRule();

	@Before
    public void setUp() {
        buildRule.configureProject("src/etc/testcases/taskdefs/optional/junitreport.xml");
    }

    /**
     * Verifies that no empty junit-noframes.html is generated when frames
     * output is selected via the default.
     * Needs reports1 task from junitreport.xml.
     */
	@Test
    public void testNoFileJUnitNoFrames() {
        buildRule.executeTarget("reports1");
        assertFalse("No file junit-noframes.html expected", (new File(System.getProperty("root"), "src/etc/testcases/taskdefs/optional/junitreport/test/html/junit-noframes.html").exists()));
        
    }

    public void assertIndexCreated() {
        if (!new File(buildRule.getProject().getProperty("output"), "html/index.html").exists()) {
            fail("No file index file found");
        }

    }


    @Test
    public void testEmptyFile() throws Exception {
    	buildRule.executeTarget("testEmptyFile");
        assertIndexCreated();
    	assertContains("Required text not found in log", XMLResultAggregator.WARNING_EMPTY_FILE, buildRule.getLog());
    }

    @Test
    public void testIncompleteFile() throws Exception {
        buildRule.executeTarget("testIncompleteFile");
        assertIndexCreated();
    	assertContains("Required text not found in log", XMLResultAggregator.WARNING_IS_POSSIBLY_CORRUPTED, buildRule.getLog());
    }
    
    @Test
    public void testWrongElement() throws Exception {
        buildRule.executeTarget("testWrongElement");
        assertIndexCreated();
    	assertContains("Required text not found in log", XMLResultAggregator.WARNING_INVALID_ROOT_ELEMENT, buildRule.getLog());
    }

    // Bugzilla Report 34963
    @Test
    public void testStackTraceLineBreaks() throws Exception {
        buildRule.executeTarget("testStackTraceLineBreaks");
        assertIndexCreated();
        FileReader r = null;
        try {
            r = new FileReader(new File(buildRule.getOutputDir(), "html/sampleproject/coins/0_CoinTest.html"));
            String report = FileUtils.readFully(r);
            assertContains("output must contain <br>:\n" + report, "junit.framework.AssertionFailedError: DOEG<br>", report);
            assertContains("#51049: output must translate line breaks:\n" + report, "cur['line.separator'] = '\\r\\n';", report);
        } finally {
            FileUtils.close(r);
        }
    }


    // Bugzilla Report 38477
    @Test
    public void testSpecialSignsInSrcPath() throws Exception {
        buildRule.executeTarget("testSpecialSignsInSrcPath");
        File reportFile = new File(buildRule.getOutputDir(), "html/index.html");
        // tests one the file object
        assertTrue("No index.html present. Not generated?", reportFile.exists() );
        assertTrue("Cant read the report file.", reportFile.canRead() );
        assertTrue("File shouldn't be empty.", reportFile.length() > 0 );
        // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report
        URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) );
        InputStream reportStream = reportUrl.openStream();
        assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0);
    }

    @Test
    public void testSpecialSignsInHtmlPath() throws Exception {
        buildRule.executeTarget("testSpecialSignsInHtmlPath");
        File reportFile = new File(buildRule.getOutputDir(), "html# $%\u00A7&-!report/index.html");
        // tests one the file object
        assertTrue("No index.html present. Not generated?", reportFile.exists() );
        assertTrue("Cant read the report file.", reportFile.canRead() );
        assertTrue("File shouldn't be empty.", reportFile.length() > 0 );
        // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report
        URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) );
        InputStream reportStream = reportUrl.openStream();
        assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0);
    }

    //Bugzilla Report 39708
    @Test
    public void testWithStyleFromDir() throws Exception {
        buildRule.executeTarget("testWithStyleFromDir");
        File reportFile = new File(buildRule.getOutputDir(), "html/index.html");
        // tests one the file object
        assertTrue("No index.html present. Not generated?", reportFile.exists() );
        assertTrue("Cant read the report file.", reportFile.canRead() );
        assertTrue("File shouldn't be empty.", reportFile.length() > 0 );
        // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report
        URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) );
        InputStream reportStream = reportUrl.openStream();
        assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0);
    }

    //Bugzilla Report 40021
    @Test
    public void testNoFrames() throws Exception {
        buildRule.executeTarget("testNoFrames");
        File reportFile = new File(buildRule.getOutputDir(), "html/junit-noframes.html");
        // tests one the file object
        assertTrue("No junit-noframes.html present. Not generated?", reportFile.exists() );
        assertTrue("Cant read the report file.", reportFile.canRead() );
        assertTrue("File shouldn't be empty.", reportFile.length() > 0 );
        // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report
        URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) );
        InputStream reportStream = reportUrl.openStream();
        assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0);
    }
    //Bugzilla Report 39708
    @Test
    public void testWithStyleFromDirAndXslImport() throws Exception {
        buildRule.executeTarget("testWithStyleFromDirAndXslImport");
        File reportFile = new File(buildRule.getOutputDir(), "html/index.html");
        // tests one the file object
        assertTrue("No index.html present. Not generated?", reportFile.exists() );
        assertTrue("Cant read the report file.", reportFile.canRead() );
        assertTrue("File shouldn't be empty.", reportFile.length() > 0 );
        // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report
        URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) );
        InputStream reportStream = reportUrl.openStream();
        assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0);
    }

    @Test
    public void testWithStyleFromClasspath() throws Exception {
        buildRule.executeTarget("testWithStyleFromClasspath");
        File reportFile = new File(buildRule.getOutputDir(), "html/index.html");
        // tests one the file object
        assertTrue("No index.html present. Not generated?", reportFile.exists() );
        assertTrue("Cant read the report file.", reportFile.canRead() );
        assertTrue("File shouldn't be empty.", reportFile.length() > 0 );
        // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report
        URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) );
        InputStream reportStream = reportUrl.openStream();
        assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0);
    }

    @Test
    public void testWithParams() throws Exception {
    	buildRule.executeTarget("testWithParams");
    	assertContains("key1=value1,key2=value2", buildRule.getLog());
        File reportFile = new File(buildRule.getOutputDir(), "html/index.html");
        // tests one the file object
        assertTrue("No index.html present. Not generated?", reportFile.exists() );
        assertTrue("Cant read the report file.", reportFile.canRead() );
        assertTrue("File shouldn't be empty.", reportFile.length() > 0 );
        // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report
        URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) );
        InputStream reportStream = reportUrl.openStream();
        assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0);
    }
}