001: /*
002: * @(#)AntTestA.java
003: *
004: * Copyright (C) 2004 Matt Albrecht
005: * groboclown@users.sourceforge.net
006: * http://groboutils.sourceforge.net
007: *
008: * Permission is hereby granted, free of charge, to any person obtaining a
009: * copy of this software and associated documentation files (the "Software"),
010: * to deal in the Software without restriction, including without limitation
011: * the rights to use, copy, modify, merge, publish, distribute, sublicense,
012: * and/or sell copies of the Software, and to permit persons to whom the
013: * Software is furnished to do so, subject to the following conditions:
014: *
015: * The above copyright notice and this permission notice shall be included in
016: * all copies or substantial portions of the Software.
017: *
018: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
019: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
020: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
021: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
022: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
023: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
024: * DEALINGS IN THE SOFTWARE.
025: */
026:
027: package net.sourceforge.groboutils.codecoverage.v2.ant;
028:
029: import java.io.File;
030: import java.io.FileOutputStream;
031: import java.io.IOException;
032: import java.io.InputStream;
033: import java.util.Enumeration;
034: import java.util.Vector;
035:
036: import org.apache.tools.ant.BuildFileTestA;
037:
038: /**
039: * Framework extention to the Ant build file test class.
040: *
041: * @author Matt Albrecht <a href="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
042: * @version $Date: 2004/04/15 05:48:27 $
043: * @since February 25, 2004
044: */
045: public abstract class AntTestA extends BuildFileTestA {
046: private Vector tempFiles = new Vector();
047:
048: public AntTestA(String name) {
049: super (name);
050: }
051:
052: protected void addTempFile(File f) {
053: if (f != null) {
054: this .tempFiles.addElement(f);
055: }
056: }
057:
058: /**
059: *
060: * @exception Exception thrown under any exceptional condition.
061: */
062: protected void tearDown() throws Exception {
063: // tear ourself down
064: Enumeration e = this .tempFiles.elements();
065: while (e.hasMoreElements()) {
066: File f = (File) e.nextElement();
067: if (f.exists()) {
068: f.delete();
069: }
070: }
071:
072: super .tearDown();
073: }
074:
075: /**
076: * Overload the parent. We'll use the resource stream to load the
077: * XML file.
078: */
079: protected void configureProject(String filename, int logLevel) {
080: try {
081: InputStream is = this .getClass().getResourceAsStream(
082: filename);
083: try {
084: File dir = new File(Long.toString(System
085: .currentTimeMillis()));
086: dir.mkdirs();
087: File tmp = new File(dir, filename);
088: FileOutputStream fos = new FileOutputStream(tmp);
089: try {
090: byte[] buff = new byte[4096];
091: int size = is.read(buff);
092: while (size > 0) {
093: fos.write(buff, 0, size);
094: size = is.read(buff);
095: }
096: } finally {
097: fos.close();
098: }
099:
100: super .configureProject(tmp.getAbsolutePath(), logLevel);
101: } catch (IOException ioe) {
102: ioe.printStackTrace();
103: fail(ioe.getMessage());
104: } finally {
105: try {
106: is.close();
107: } catch (IOException ioe) {
108: ioe.printStackTrace();
109: fail(ioe.getMessage());
110: }
111: }
112: } catch (RuntimeException ex) {
113: ex.printStackTrace();
114: throw ex;
115: }
116: }
117: }
|