You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@creadur.apache.org by jo...@apache.org on 2009/02/01 22:36:31 UTC
svn commit: r739847 - in /incubator/rat/main/trunk/rat/rat-anttasks/src:
main/java/org/apache/rat/anttasks/ test/java/ test/java/org/
test/java/org/apache/ test/java/org/apache/rat/
test/java/org/apache/rat/anttasks/ test/java/org/example/ test/resourc...
Author: jochen
Date: Sun Feb 1 21:36:30 2009
New Revision: 739847
URL: http://svn.apache.org/viewvc?rev=739847&view=rev
Log:
Adding some tests, which are based on the BuildFileTest, thus easier to debug.
Added:
incubator/rat/main/trunk/rat/rat-anttasks/src/main/java/org/apache/rat/anttasks/LogOutputStream.java
incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/AbstractRatAntTaskTest.java
incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/ReportTest.java
incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/LicenseFamily.java
incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/Matcher.java
incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/report-junit.xml (with props)
incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/target/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/target/anttasks/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/target/anttasks/dest/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/target/anttasks/src/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/target/anttasks/src/org/
incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/target/anttasks/src/org/example/
Modified:
incubator/rat/main/trunk/rat/rat-anttasks/src/main/java/org/apache/rat/anttasks/Report.java
incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/build.xml
Added: incubator/rat/main/trunk/rat/rat-anttasks/src/main/java/org/apache/rat/anttasks/LogOutputStream.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/rat/rat-anttasks/src/main/java/org/apache/rat/anttasks/LogOutputStream.java?rev=739847&view=auto
==============================================================================
--- incubator/rat/main/trunk/rat/rat-anttasks/src/main/java/org/apache/rat/anttasks/LogOutputStream.java (added)
+++ incubator/rat/main/trunk/rat/rat-anttasks/src/main/java/org/apache/rat/anttasks/LogOutputStream.java Sun Feb 1 21:36:30 2009
@@ -0,0 +1,49 @@
+package org.apache.rat.anttasks;
+
+import java.io.IOException;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.ProjectComponent;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.util.LineOrientedOutputStream;
+
+
+public class LogOutputStream extends LineOrientedOutputStream {
+ private ProjectComponent pc;
+ private int level;
+
+ public LogOutputStream(ProjectComponent pPc) {
+ this(pPc, Project.MSG_INFO);
+ }
+
+ public LogOutputStream(Task pTask, int pLevel) {
+ this(((ProjectComponent) (pTask)), pLevel);
+ }
+
+ public LogOutputStream(ProjectComponent pPc, int pLevel) {
+ pc = pPc;
+ level = pLevel;
+ }
+
+ protected void processBuffer() {
+ System.err.println("processBuffer:");
+ try {
+ super.processBuffer();
+ } catch(IOException e) {
+ throw new RuntimeException("Unexpected IOException caught: " + e);
+ }
+ }
+
+ protected void processLine(String pLine) {
+ processLine(pLine, level);
+ }
+
+ protected void processLine(String pLine, int pLevel) {
+ System.err.println("processLine: " + pLevel + ", " + pLine);
+ pc.log(pLine, pLevel);
+ }
+
+ public int getMessageLevel() {
+ return level;
+ }
+}
Modified: incubator/rat/main/trunk/rat/rat-anttasks/src/main/java/org/apache/rat/anttasks/Report.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/rat/rat-anttasks/src/main/java/org/apache/rat/anttasks/Report.java?rev=739847&r1=739846&r2=739847&view=diff
==============================================================================
--- incubator/rat/main/trunk/rat/rat-anttasks/src/main/java/org/apache/rat/anttasks/Report.java (original)
+++ incubator/rat/main/trunk/rat/rat-anttasks/src/main/java/org/apache/rat/anttasks/Report.java Sun Feb 1 21:36:30 2009
@@ -30,7 +30,6 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.LogOutputStream;
import org.apache.tools.ant.types.ResourceCollection;
import org.apache.tools.ant.types.resources.Union;
import org.apache.tools.ant.util.FileUtils;
Added: incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/AbstractRatAntTaskTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/AbstractRatAntTaskTest.java?rev=739847&view=auto
==============================================================================
--- incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/AbstractRatAntTaskTest.java (added)
+++ incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/AbstractRatAntTaskTest.java Sun Feb 1 21:36:30 2009
@@ -0,0 +1,71 @@
+package org.apache.rat.anttasks;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.regex.Pattern;
+
+import junit.framework.Assert;
+
+import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.util.FileUtils;
+
+public abstract class AbstractRatAntTaskTest extends BuildFileTest {
+ private static final File tempDir = new File("target/anttasks");
+
+ protected abstract File getAntFile();
+
+ protected File getTempDir() {
+ return tempDir;
+ }
+
+ public void setUp() {
+ configureProject(getAntFile().getPath());
+ }
+
+ protected void assertLogDoesntMatch(String pPattern) {
+ final String log = super.getLog();
+ Assert.assertFalse("Log matches the pattern: " + pPattern + ", got " + log,
+ isMatching(pPattern, log));
+ }
+
+ protected void assertLogMatches(String pPattern) {
+ final String log = super.getLog();
+ Assert.assertTrue("Log doesn' match string: " + pPattern + ", got " + log,
+ isMatching(pPattern, log));
+ }
+
+ private boolean isMatching(final String pPattern, final String pValue) {
+ return Pattern.compile(pPattern).matcher(pValue).find();
+ }
+
+ private String load(File pFile) throws IOException {
+ FileReader fr = new FileReader(pFile);
+ try {
+ final StringBuffer sb = new StringBuffer();
+ char[] buffer = new char[1024];
+ for (;;) {
+ int res = fr.read(buffer);
+ if (res == -1) {
+ fr.close();
+ fr = null;
+ return sb.toString();
+ }
+ if (res > 0) {
+ sb.append(buffer, 0, res);
+ }
+ }
+ } finally {
+ FileUtils.close(fr);
+ }
+ }
+
+ protected void assertFileMatches(File pFile, String pPattern)
+ throws IOException {
+ final String content = load(pFile);
+ Assert.assertTrue("File " + pFile
+ + " doesn't match the pattern " + pPattern
+ + ", got " + content,
+ isMatching(pPattern, content));
+ }
+}
Added: incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/ReportTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/ReportTest.java?rev=739847&view=auto
==============================================================================
--- incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/ReportTest.java (added)
+++ incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/apache/rat/anttasks/ReportTest.java Sun Feb 1 21:36:30 2009
@@ -0,0 +1,68 @@
+package org.apache.rat.anttasks;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.tools.ant.BuildException;
+
+import junit.framework.Assert;
+
+public class ReportTest extends AbstractRatAntTaskTest {
+ private static final File antFile = new File("src/test/resources/antunit/report-junit.xml").getAbsoluteFile();
+
+ protected File getAntFile() {
+ return antFile;
+ }
+
+ public void testWithReportSentToAnt() throws Exception {
+ executeTarget("testWithReportSentToAnt");
+ assertLogMatches("AL +\\Q" + getAntFile().getPath() + "\\E");
+ }
+
+ public void testWithReportSentToFile() throws Exception {
+ final File reportFile = new File(getTempDir(), "selftest.report");
+ getTempDir().mkdirs();
+ final String alLine = "AL +\\Q" + getAntFile().getPath() + "\\E";
+ if (reportFile.isFile() && !reportFile.delete()) {
+ throw new IOException("Unable to remove report file " + reportFile);
+ }
+ executeTarget("testWithReportSentToFile");
+ assertLogDoesntMatch(alLine);
+ Assert.assertTrue("Expected report file " + reportFile, reportFile.isFile());
+ assertFileMatches(reportFile, alLine);
+ }
+
+ public void testWithASLUnknown() throws Exception {
+ executeTarget("testWithASLUnknown");
+ assertLogDoesntMatch("AL +\\Q" + getAntFile().getPath() + "\\E");
+ assertLogMatches("\\!\\?\\?\\?\\?\\? +\\Q" + getAntFile().getPath() + "\\E");
+ }
+
+ public void testCustomMatcher() throws Exception {
+ executeTarget("testCustomMatcher");
+ assertLogDoesntMatch("AL +\\Q" + getAntFile().getPath() + "\\E");
+ assertLogMatches("EXMPL +\\Q" + getAntFile().getPath() + "\\E");
+ }
+
+ public void testNoResources() throws Exception {
+ try {
+ executeTarget("testNoResources");
+ fail("Expected Exception");
+ } catch (BuildException e) {
+ final String expect = "You must specify at least one file";
+ assertTrue("Expected " + expect + ", got " + e.getMessage(),
+ e.getMessage().indexOf(expect) != -1);
+ }
+ }
+
+ public void testNoLicenseMatchers() throws Exception {
+ try {
+ executeTarget("testNoLicenseMatchers");
+ fail("Expected Exception");
+ } catch (BuildException e) {
+ final String expect = "at least one license";
+ assertTrue("Expected " + expect + ", got " + e.getMessage(),
+ e.getMessage().indexOf(expect) != -1);
+ }
+ }
+}
Added: incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/LicenseFamily.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/LicenseFamily.java?rev=739847&view=auto
==============================================================================
--- incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/LicenseFamily.java (added)
+++ incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/LicenseFamily.java Sun Feb 1 21:36:30 2009
@@ -0,0 +1,10 @@
+package org.example;
+
+import org.apache.rat.license.ILicenseFamily;
+
+
+public class LicenseFamily implements ILicenseFamily {
+ public String getFamilyName() {
+ return "Example License";
+ }
+}
Added: incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/Matcher.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/Matcher.java?rev=739847&view=auto
==============================================================================
--- incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/Matcher.java (added)
+++ incubator/rat/main/trunk/rat/rat-anttasks/src/test/java/org/example/Matcher.java Sun Feb 1 21:36:30 2009
@@ -0,0 +1,19 @@
+package org.example;
+
+import org.apache.rat.analysis.IHeaderMatcher;
+import org.apache.rat.analysis.license.BaseLicense;
+import org.apache.rat.report.claim.IClaimReporter;
+import org.apache.rat.analysis.RatHeaderAnalysisException;
+
+
+public class Matcher extends BaseLicense implements IHeaderMatcher {
+ public Matcher() {
+ super("EXMPL", "Example License", "");
+ }
+ public void reset() {}
+
+ public boolean match(String subject, String line, IClaimReporter reporter) throws RatHeaderAnalysisException {
+ reportOnLicense(subject, reporter);
+ return true;
+ }
+}
Modified: incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/build.xml
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/build.xml?rev=739847&r1=739846&r2=739847&view=diff
==============================================================================
--- incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/build.xml (original)
+++ incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/build.xml Sun Feb 1 21:36:30 2009
@@ -1,52 +1,28 @@
-<project name="antunit" default="all">
- <condition property="skipping">
- <istrue value="${test.skipped}"/>
- </condition>
+<project name="antunit" default="all"
+ xmlns:au="antlib:org.apache.ant.antunit"
+ xmlns:rat="antlib:org.apache.rat.anttasks">
+ <taskdef uri="antlib:org.apache.ant.antunit"
+ resource="org/apache/ant/antunit/antlib.xml"
+ classpath="${test.classpath}"/>
- <condition property="running.windows">
- <os family="windows"/>
- </condition>
+ <taskdef uri="antlib:org.apache.rat.anttasks"
+ resource="org/apache/rat/anttasks/antlib.xml"
+ classpath="${test.classpath}"/>
- <target name="runAntWin" if="running.windows">
- <macrodef name="runAnt">
- <attribute name="buildfile"/>
- <sequential>
- <exec executable="cmd">
- <arg value="/c"/>
- <arg file="${ant.home}/bin/ant.bat"/>
- <arg value="-buildfile"/>
- <arg value="@{buildfile}"/>
- <arg value="-lib"/>
- <arg value="${jar.name}"/>
- <arg value="-lib"/>
- <arg value="${antunit.jar.name}"/>
- <arg value="-Dbasedir"/>
- <arg value="${base.dir}"/>
- </exec>
- </sequential>
- </macrodef>
- </target>
+ <condition property="tests.running">
+ <not><equals arg1="${tests.skipped}" arg2="true"/></not>
+ </condition>
- <target name="runAntNonWin" unless="running.windows">
- <macrodef name="runAnt">
- <attribute name="buildfile"/>
- <sequential>
- <exec executable="ant">
- <arg value="-buildfile"/>
- <arg value="@{buildfile}"/>
- <arg value="-lib"/>
- <arg value="${jar.name}"/>
- <arg value="-Dbasedir"/>
- <arg value="${base.dir}"/>
- <arg value="-lib"/>
- <arg value="${antunit.jar.name}"/>
- </exec>
- </sequential>
- </macrodef>
- </target>
-
- <target name="all" depends="runAntWin,runAntNonWin" unless="skipping">
- <runAnt buildfile="report-bad-configurations.xml"/>
- <runAnt buildfile="report-normal-operation.xml"/>
- </target>
+ <target name="all" if="tests.running">
+ <echo>Invoking antunit on ${antunit.file}</echo>
+ <mkdir dir="${temp.dir}"/>
+ <au:antunit failonerror="true">
+ <file file="${antunit.file}"/>
+ <au:plainlistener sendLogTo="file" toDir="${temp.dir}" logLevel="info"/>
+ <propertyset>
+ <propertyref name="test.classpath"/>
+ <propertyref name="temp.dir"/>
+ </propertyset>
+ </au:antunit>
+ </target>
</project>
Added: incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/report-junit.xml
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/report-junit.xml?rev=739847&view=auto
==============================================================================
--- incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/report-junit.xml (added)
+++ incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/report-junit.xml Sun Feb 1 21:36:30 2009
@@ -0,0 +1,88 @@
+<?xml version='1.0'?>
+<!--
+
+ 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. *
+
+-->
+
+<project default="all"
+ xmlns:au="antlib:org.apache.ant.antunit"
+ xmlns:rat="antlib:org.apache.rat.anttasks">
+ <taskdef uri="antlib:org.apache.ant.antunit"
+ resource="org/apache/ant/antunit/antlib.xml"
+ classpath="${test.classpath}"/>
+
+ <taskdef uri="antlib:org.apache.rat.anttasks"
+ resource="org/apache/rat/anttasks/antlib.xml"
+ classpath="${test.classpath}"/>
+
+ <property name="output.dir" location="target/anttasks"/>
+ <pathconvert dirsep="/" property="file.name">
+ <path>
+ <pathelement location="${ant.file}"/>
+ </path>
+ </pathconvert>
+ <property name="expectedOutput" value="AL ${file.name}"/>
+
+ <target name="testWithReportSentToAnt">
+ <rat:report>
+ <file file="${ant.file}"/>
+ </rat:report>
+ </target>
+
+ <target name="all"/>
+
+ <target name="testWithReportSentToFile">
+ <property name="report.file" location="${output.dir}/selftest.report"/>
+ <rat:report reportFile="${report.file}">
+ <file file="${ant.file}"/>
+ </rat:report>
+ </target>
+
+ <target name="testWithASLUnknown">
+ <rat:report addDefaultLicenseMatchers="false">
+ <file file="${ant.file}"/>
+ <rat:w3c/>
+ </rat:report>
+ </target>
+
+ <target name="testCustomMatcher">
+ <mkdir dir="${output.dir}/dest"/>
+ <mkdir dir="${output.dir}/src/org/example"/>
+ <echo file="/tmp/classpath">Classpath is ${test.classpath}</echo>
+ <typedef name="exmpl" classname="org.example.Matcher"
+ classpath="${test.classpath}"/>
+ <typedef name="exmpl-license" classname="org.example.LicenseFamily"
+ classpath="${test.classpath}"/>
+ <rat:report>
+ <file file="${ant.file}"/>
+ <exmpl/>
+ <exmpl-license/>
+ </rat:report>
+ </target>
+
+ <target name="testNoResources">
+ <rat:report/>
+ </target>
+
+ <target name="testNoLicenseMatchers">
+ <rat:report addDefaultLicenseMatchers="false">
+ <file file="${ant.file}"/>
+ </rat:report>
+ </target>
+</project>
\ No newline at end of file
Propchange: incubator/rat/main/trunk/rat/rat-anttasks/src/test/resources/antunit/report-junit.xml
------------------------------------------------------------------------------
svn:executable = *