001 /* 002 * The Apache Software License, Version 1.1 003 * 004 * Copyright (C) 2006 Mark Doliner 005 * Copyright (C) 2006 John Lewis 006 * 007 * Redistribution and use in source and binary forms, with or without 008 * modification, are permitted provided that the following conditions 009 * are met: 010 * 011 * 1. Redistributions of source code must retain the above copyright 012 * notice, this list of conditions and the following disclaimer. 013 * 014 * 2. Redistributions in binary form must reproduce the above copyright 015 * notice, this list of conditions and the following disclaimer in 016 * the documentation and/or other materials provided with the 017 * distribution. 018 * 019 * 3. The end-user documentation included with the redistribution, if 020 * any, must include the following acknowlegement: 021 * "This product includes software developed by the 022 * Apache Software Foundation (http://www.apache.org/)." 023 * Alternately, this acknowlegement may appear in the software itself, 024 * if and wherever such third-party acknowlegements normally appear. 025 * 026 * 4. The names "Ant" and "Apache Software 027 * Foundation" must not be used to endorse or promote products derived 028 * from this software without prior written permission. For written 029 * permission, please contact apache@apache.org. 030 * 031 * 5. Products derived from this software may not be called "Apache" 032 * nor may "Apache" appear in their names without prior written 033 * permission of the Apache Group. 034 * 035 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 036 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 037 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 038 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 039 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 040 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 041 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 042 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 043 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 044 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 045 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 046 * SUCH DAMAGE. 047 * ==================================================================== 048 * 049 * This software consists of voluntary contributions made by many 050 * individuals on behalf of the Apache Software Foundation. For more 051 * information on the Apache Software Foundation, please see 052 * <http://www.apache.org/>. 053 */ 054 055 package net.sourceforge.cobertura.ant; 056 057 import org.apache.tools.ant.taskdefs.Java; 058 import org.apache.tools.ant.types.Environment.Variable; 059 060 abstract class AntUtil 061 { 062 063 /** 064 * Used to transfer the net.sourceforge.cobertura.datafile property to a JVM 065 * that is about to be forked. 066 * 067 * This is confusing, but it's required by our functional test. 068 * What happens is, we have a JUnit test that runs ant to 069 * instrument some classes. When the instrumentation is running, 070 * we want to get the coverage info that is created by exercising 071 * our instrumentation classes. 072 * 073 * So we pass in two different coverage files: 074 * 1. The coverage data file command line parameter. This tells 075 * the instrument task where to write the new coverage data. 076 * 2. The coverage data system property. This tells the 077 * instrumentation inside the instrumented classes where to 078 * keep track of the line hit counts, etc. 079 * 080 * @param task The Java task that will do the forking. 081 */ 082 static void transferCoberturaDataFileProperty(Java task) 083 { 084 String coberturaProperty = System.getProperty("net.sourceforge.cobertura.datafile"); 085 if (coberturaProperty != null) 086 { 087 Variable sysproperty = new Variable(); 088 sysproperty.setKey("net.sourceforge.cobertura.datafile"); 089 sysproperty.setValue(coberturaProperty); 090 task.addSysproperty(sysproperty); 091 } 092 } 093 094 }