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 package org.w3c.tidy.ant;
55
56 import java.io.File;
57 import java.io.FileReader;
58 import java.io.IOException;
59 import java.io.Reader;
60
61 import junit.framework.TestCase;
62
63 import org.apache.tools.ant.BuildException;
64 import org.apache.tools.ant.Project;
65 import org.apache.tools.ant.types.FileSet;
66 import org.apache.tools.ant.types.Parameter;
67 import org.apache.tools.ant.util.FileUtils;
68
69
70 /***
71 * @author Fabrizio Giustina
72 * @version $Revision: 1.3 $ ($Author: fgiust $)
73 */
74 public class JTidyTaskTest extends TestCase
75 {
76
77 /***
78 * test instance.
79 */
80 private JTidyTask task;
81
82 /***
83 * Temp dir used for output.
84 */
85 private String tempDir;
86
87 /***
88 * Test dir.
89 */
90 private String testDir;
91
92 /***
93 * @see junit.framework.TestCase#setUp()
94 */
95 protected void setUp() throws Exception
96 {
97 super.setUp();
98 task = new JTidyTask();
99 Project p = new Project();
100 task.setProject(p);
101 task.init();
102 tempDir = System.getProperty("java.io.tmpdir");
103 testDir = new File(getClass().getClassLoader().getResource("test.dir").getPath()).getParent();
104 }
105
106 /***
107 * Test with invalid parameters.
108 */
109 public void testExceptionMissingParameters()
110 {
111 try
112 {
113 task.execute();
114 fail("Invalid parameters not detected");
115 }
116 catch (BuildException e)
117 {
118
119 }
120 }
121
122 /***
123 * Test with invalid parameters.
124 */
125 public void testExceptionBothSrcfileAndFilesets()
126 {
127 try
128 {
129 task.setSrcfile(new File("."));
130 task.addFileset(new FileSet());
131 task.validateParameters();
132 fail("Invalid parameters not detected");
133 }
134 catch (BuildException e)
135 {
136
137 }
138 }
139
140 /***
141 * Test with invalid parameters.
142 */
143 public void testDestFileAndDestDirNull()
144 {
145 try
146 {
147 task.setSrcfile(new File("."));
148 task.validateParameters();
149 fail("Invalid parameters not detected");
150 }
151 catch (BuildException e)
152 {
153
154 }
155 }
156
157 /***
158 * Test with invalid parameters.
159 */
160 public void testDestFileAndFilesets()
161 {
162 try
163 {
164 task.addFileset(new FileSet());
165 task.setDestfile(new File("."));
166 task.validateParameters();
167 fail("Invalid parameters not detected");
168 }
169 catch (BuildException e)
170 {
171
172 }
173 }
174
175 /***
176 * Test with invalid parameters.
177 */
178 public void testScrFileIsADir()
179 {
180 try
181 {
182 task.setSrcfile(new File("/"));
183 task.setDestfile(new File("test.out"));
184 task.validateParameters();
185 fail("Invalid parameters not detected");
186 }
187 catch (BuildException e)
188 {
189
190 }
191 }
192
193 /***
194 * Test with invalid parameters.
195 */
196 public void testScrFileDoesntExist()
197 {
198
199 task.setSrcfile(new File("xyz.123"));
200 task.setDestfile(new File("test.out"));
201 task.validateParameters();
202 try
203 {
204 task.execute();
205 fail("Missing source file not detected");
206 }
207 catch (BuildException e)
208 {
209
210 }
211 }
212
213 /***
214 * Test with invalid parameters.
215 */
216 public void testInvalidProperties()
217 {
218 try
219 {
220 task.setSrcfile(new File("test.in"));
221 task.setDestfile(new File("test.out"));
222 task.setProperties(new File("x2ui34"));
223 task.validateParameters();
224 fail("Invalid parameters not detected");
225 }
226 catch (BuildException e)
227 {
228
229 }
230 }
231
232 /***
233 * Test with a fileset.
234 */
235 public void testFileset()
236 {
237 FileSet fileset = new FileSet();
238 fileset.setDir(new File(testDir, "ant"));
239
240 task.addFileset(fileset);
241 task.setDestdir(new File(tempDir));
242
243 task.execute();
244
245 assertTrue("Expected output file not created", new File(tempDir, "file1.html").exists());
246 assertTrue("Expected output file not created", new File(tempDir, "file2.html").exists());
247
248 new File(tempDir, "file1.html").delete();
249 new File(tempDir, "file2.html").delete();
250 }
251
252 /***
253 * Test with a fileset.
254 */
255 public void testFilesetWithDirStructure()
256 {
257 FileSet fileset = new FileSet();
258 fileset.setDir(new File(testDir));
259 fileset.setIncludes("ant/*.html");
260
261 task.addFileset(fileset);
262 task.setDestdir(new File(tempDir));
263
264 task.execute();
265
266 assertTrue("Expected output file not created", new File(tempDir, "ant/file1.html").exists());
267 assertTrue("Expected output file not created", new File(tempDir, "ant/file2.html").exists());
268
269 new File(tempDir, "ant/file1.html").delete();
270 new File(tempDir, "ant/file2.html").delete();
271 new File(tempDir, "ant").delete();
272 }
273
274 /***
275 * Test with a fileset.
276 */
277 public void testFilesetWithDirStructureFlatten()
278 {
279 FileSet fileset = new FileSet();
280 fileset.setDir(new File(testDir));
281 fileset.setIncludes("ant/*.html");
282
283 task.addFileset(fileset);
284 task.setDestdir(new File(tempDir));
285 task.setFlatten(true);
286
287 task.execute();
288
289 assertTrue("Expected output file not created", new File(tempDir, "file1.html").exists());
290 assertTrue("Expected output file not created", new File(tempDir, "file2.html").exists());
291
292 new File(tempDir, "file1.html").delete();
293 new File(tempDir, "file2.html").delete();
294 }
295
296 /***
297 * Test nested parameter element.
298 */
299 public void testWithParameters()
300 {
301 FileSet fileset = new FileSet();
302 fileset.setDir(new File(testDir));
303 fileset.setIncludes("ant/*1.html");
304
305 task.addFileset(fileset);
306 task.setDestdir(new File(tempDir));
307 task.setFlatten(true);
308 Parameter parameter = new Parameter();
309 parameter.setName("tidy-mark");
310 parameter.setValue("false");
311 task.addConfiguredParameter(parameter);
312 task.execute();
313
314 assertTrue("Expected output file not created", new File(tempDir, "file1.html").exists());
315
316 try
317 {
318 Reader reader = new FileReader(new File(tempDir, "file1.html"));
319 String output = FileUtils.readFully(reader);
320 reader.close();
321
322
323 assertTrue("Configured parameter doesn't have effect on output.", output.indexOf("generator") == -1);
324 }
325 catch (IOException e)
326 {
327 fail("Unable to read generated file.");
328 }
329
330 new File(tempDir, "file1.html").delete();
331 }
332
333 /***
334 * Test with a properties file.
335 */
336 public void testWithProperties()
337 {
338 FileSet fileset = new FileSet();
339 fileset.setDir(new File(testDir));
340 fileset.setIncludes("ant/*1.html");
341
342 task.addFileset(fileset);
343 task.setDestdir(new File(tempDir));
344 task.setFlatten(true);
345 task.setProperties(new File(testDir, "default.cfg"));
346
347 task.execute();
348
349 assertTrue("Expected output file not created", new File(tempDir, "file1.html").exists());
350
351 try
352 {
353 Reader reader = new FileReader(new File(tempDir, "file1.html"));
354 String output = FileUtils.readFully(reader);
355 reader.close();
356
357
358 assertTrue("Configured parameter doesn't have effect on output.", output.indexOf("generator") == -1);
359 }
360 catch (IOException e)
361 {
362 fail("Unable to read generated file.");
363 }
364
365 new File(tempDir, "file1.html").delete();
366 }
367
368 /***
369 * Test with a fileset.
370 */
371 public void testFailonerrorFalse()
372 {
373 task.setSrcfile(new File(testDir, "ant/file3.html"));
374 task.setDestdir(new File(tempDir));
375 task.setFailonerror(false);
376
377 task.execute();
378
379
380 }
381
382 /***
383 * Test with a fileset.
384 */
385 public void testFailonerrorTrue()
386 {
387 task.setSrcfile(new File(testDir, "ant/file3.html"));
388 task.setDestdir(new File(tempDir));
389 task.setFailonerror(true);
390
391 try
392 {
393 task.execute();
394 fail("Expected BuildException not thrown.");
395 }
396 catch (BuildException e)
397 {
398
399 }
400 }
401
402 /***
403 * Test with srcfile/destdir.
404 */
405 public void testSrcfileDestDir()
406 {
407 task.setSrcfile(new File(testDir, "ant/file1.html"));
408 task.setDestdir(new File(tempDir));
409 task.setFailonerror(true);
410
411 task.execute();
412
413 assertTrue("Expected output file not created", new File(tempDir, "file1.html").exists());
414
415 new File(tempDir, "file1.html").delete();
416 }
417
418 /***
419 * Test with srcfile/destfile.
420 */
421 public void testSrcfileDestFile()
422 {
423 task.setSrcfile(new File(testDir, "ant/file1.html"));
424 task.setDestfile(new File(tempDir, "newfile.html"));
425 task.setFailonerror(true);
426
427 task.execute();
428
429 assertTrue("Expected output file not created", new File(tempDir, "newfile.html").exists());
430 assertFalse("Expected output file is a dir!", new File(tempDir, "newfile.html").isDirectory());
431
432 new File(tempDir, "newfile.html").delete();
433 }
434
435 }