Login | Register
My pages Projects Community openCollabNet

Discussions > cvs > subclipse commit: rev 18 - in trunk/svnant/src/testcases: . org org/apache org/apache/tools org/apache/tools/ant org/tigris org/tigris/subversion org/tigris/subversion/svnant

subclipse
Discussion topic

Back to topic list

subclipse commit: rev 18 - in trunk/svnant/src/testcases: . org org/apache org/apache/tools org/apache/tools/ant org/tigris org/tigris/subversion org/tigris/subversion/svnant

Author cchab
Full name chabanois cédric
Date 2003-06-22 12:04:19 PDT
Message Author: cchab
Date: Sun Jun 22 14:04:18 2003
New Revision: 18

Added:
   trunk/svnant/src/testcases/
   trunk/svnant/src/testcases/org/
   trunk/svnant/src/tes​tcases/org/apache/
   trunk/svnant/src/tes​tcases/org/apache/to​ols/
   trunk/svnant/src/tes​tcases/org/apache/to​ols/ant/
   trunk/svnant/src/tes​tcases/org/apache/to​ols/ant/BuildFileTes​t.java
   trunk/svnant/src/tes​tcases/org/tigris/
   trunk/svnant/src/tes​tcases/org/tigris/su​bversion/
   trunk/svnant/src/tes​tcases/org/tigris/su​bversion/svnant/
   trunk/svnant/src/tes​tcases/org/tigris/su​bversion/svnant/SvnT​est.java
Log:
testcases added

Added: trunk/svnant/src/tes​tcases/org/apache/to​ols/ant/BuildFileTes​t.java
====================​====================​====================​==================
--- (empty file)
+++ trunk/svnant/src/tes​tcases/org/apache/to​ols/ant/BuildFileTes​t.java Sun Jun 22 14:04:18 2003
@@ -0,0 +1,482 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant" and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache at apache dot org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================​====================​====================​========
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.tools.ant;
+
+import junit.framework.*;
+import org.apache.tools.ant.*;
+import java.io.*;
+import java.net.URL;
+
+/**
+ * A BuildFileTest is a TestCase which executes targets from an Ant buildfile
+ * for testing.
+ *
+ * This class provides a number of utility methods for particular build file
+ * tests which extend this class.
+ *
+ * @author Nico Seessle <nico at seessle dot de>
+ * @author Conor MacNeill
+ */
+public abstract class BuildFileTest extends TestCase {
+
+ protected Project project;
+
+ private StringBuffer logBuffer;
+ private StringBuffer fullLogBuffer;
+ private StringBuffer outBuffer;
+ private StringBuffer errBuffer;
+ private BuildException buildException;
+
+ /**
+ * Constructor for the BuildFileTest object
+ *
+ *@param name string to pass up to TestCase constructor
+ */
+ public BuildFileTest(String name) {
+ super(name);
+ }
+
+ /**
+ * run a target, expect for any build exception
+ *
+ *@param target target to run
+ *@param cause information string to reader of report
+ */
+ protected void expectBuildException(String target, String cause) {
+ expectSpecificBuildE​xception(target, cause, null);
+ }
+
+ /**
+ * Assert that only the given message has been logged with a
+ * priority &gt;= INFO when running the given target.
+ */
+ protected void expectLog(String target, String log) {
+ executeTarget(target);
+ String realLog = getLog();
+ assertEquals(log, realLog);
+ }
+
+ /**
+ * Assert that the given message has been logged with a priority
+ * &gt;= INFO when running the given target.
+ */
+ protected void expectLogContaining(String target, String log) {
+ executeTarget(target);
+ String realLog = getLog();
+ assertTrue("expecting log to contain \""+log+"\" log was \""
+ + realLog + "\"",
+ realLog.indexOf(log) >= 0);
+ }
+
+ /**
+ * Gets the log the BuildFileTest object.
+ * only valid if configureProject() has
+ * been called.
+ * @pre logBuffer!=null
+ * @return The log value
+ */
+ protected String getLog() {
+ return logBuffer.toString();
+ }
+
+ /**
+ * Assert that the given message has been logged with a priority
+ * &gt;= DEBUG when running the given target.
+ */
+ protected void expectDebuglog(String target, String log) {
+ executeTarget(target);
+ String realLog = getFullLog();
+ assertEquals(log, realLog);
+ }
+
+ /**
+ * Gets the log the BuildFileTest object.
+ * only valid if configureProject() has
+ * been called.
+ * @pre fullLogBuffer!=null
+ * @return The log value
+ */
+ protected String getFullLog() {
+ return fullLogBuffer.toString();
+ }
+
+ /**
+ * execute the target, verify output matches expectations
+ *
+ *@param target target to execute
+ *@param output output to look for
+ */
+
+ protected void expectOutput(String target, String output) {
+ executeTarget(target);
+ String realOutput = getOutput();
+ assertEquals(output, realOutput);
+ }
+
+ /**
+ * execute the target, verify output matches expectations
+ * and that we got the named error at the end
+ *@param target target to execute
+ *@param output output to look for
+ *@param error Description of Parameter
+ */
+
+ protected void expectOutputAndError(String target, String output, String error) {
+ executeTarget(target);
+ String realOutput = getOutput();
+ assertEquals(output, realOutput);
+ String realError = getError();
+ assertEquals(error, realError);
+ }
+
+ protected String getOutput() {
+ return cleanBuffer(outBuffer);
+ }
+
+ protected String getError() {
+ return cleanBuffer(errBuffer);
+ }
+
+ protected BuildException getBuildException() {
+ return buildException;
+ }
+
+ private String cleanBuffer(StringBuffer buffer) {
+ StringBuffer cleanedBuffer = new StringBuffer();
+ boolean cr = false;
+ for (int i = 0; i < buffer.length(); i++) {
+ char ch = buffer.charAt(i);
+ if (ch == '\r') {
+ cr = true;
+ continue;
+ }
+
+ if (!cr) {
+ cleanedBuffer.append(ch);
+ } else {
+ if (ch == '\n') {
+ cleanedBuffer.append(ch);
+ } else {
+ cleanedBuffer.append​('\r').append(ch);
+ }
+ }
+ }
+ return cleanedBuffer.toString();
+ }
+
+ /**
+ * set up to run the named project
+ *
+ * @param filename name of project file to run
+ */
+ protected void configureProject(String filename) throws BuildException {
+ logBuffer = new StringBuffer();
+ fullLogBuffer = new StringBuffer();
+ project = new Project();
+ project.init();
+ project.setUserProperty( "ant.file" , new File(filename).getAb​solutePath() );
+ project.addBuildListener(new AntTestListener());
+ ProjectHelper.config​ureProject(project, new File(filename));
+ }
+
+ /**
+ * execute a target we have set up
+ * @pre configureProject has been called
+ * @param targetName target to run
+ */
+ protected void executeTarget(String targetName) {
+ PrintStream sysOut = System.out;
+ PrintStream sysErr = System.err;
+ try {
+ sysOut.flush();
+ sysErr.flush();
+ outBuffer = new StringBuffer();
+ PrintStream out = new PrintStream(new AntOutputStream());
+ System.setOut(out);
+ errBuffer = new StringBuffer();
+ PrintStream err = new PrintStream(new AntOutputStream());
+ System.setErr(err);
+ logBuffer = new StringBuffer();
+ fullLogBuffer = new StringBuffer();
+ buildException = null;
+ project.executeTarge​t(targetName);
+ } finally {
+ System.setOut(sysOut);
+ System.setErr(sysErr);
+ }
+
+ }
+
+ /**
+ * Get the project which has been configured for a test.
+ *
+ * @return the Project instance for this test.
+ */
+ protected Project getProject() {
+ return project;
+ }
+
+ /**
+ * get the directory of the project
+ * @return the base dir of the project
+ */
+ protected File getProjectDir() {
+ return project.getBaseDir();
+ }
+
+ /**
+ * run a target, wait for a build exception
+ *
+ *@param target target to run
+ *@param cause information string to reader of report
+ *@param msg the message value of the build exception we are waiting for
+ set to null for any build exception to be valid
+ */
+ protected void expectSpecificBuildE​xception(String target, String cause, String msg) {
+ try {
+ executeTarget(target);
+ } catch (org.apache.tools.an​t.BuildException ex) {
+ buildException = ex;
+ if ((null != msg) && (!ex.getMessage().equals(msg))) {
+ fail("Should throw BuildException because '" + cause
+ + "' with message '" + msg
+ + "' (actual message '" + ex.getMessage() + "' instead)");
+ }
+ return;
+ }
+ fail("Should throw BuildException because: " + cause);
+ }
+
+ /**
+ * run a target, expect an exception string
+ * containing the substring we look for (case sensitive match)
+ *
+ *@param target target to run
+ *@param cause information string to reader of report
+ *@param msg the message value of the build exception we are waiting for
+ *@param contains substring of the build exception to look for
+ */
+ protected void expectBuildException​Containing(String target, String cause, String contains) {
+ try {
+ executeTarget(target);
+ } catch (org.apache.tools.an​t.BuildException ex) {
+ buildException = ex;
+ if ((null != contains) && (ex.getMessage().ind​exOf(contains) == -1)) {
+ fail("Should throw BuildException because '" + cause + "' with message containing '" + contains + "' (actual message '" + ex.getMessage() + "' instead)");
+ }
+ return;
+ }
+ fail("Should throw BuildException because: " + cause);
+ }
+
+
+ /**
+ * call a target, verify property is as expected
+ *
+ * @param target build file target
+ * @param property property name
+ * @param value expected value
+ */
+
+ protected void expectPropertySet(String target, String property, String value) {
+ executeTarget(target);
+ assertPropertyEquals(property, value);
+ }
+
+ /**
+ * assert that a property equals a value; comparison is case sensitive.
+ * @param property property name
+ * @param value expected value
+ */
+ protected void assertPropertyEquals(String property, String value) {
+ String result = project.getProperty(property);
+ assertEquals("property " + property,value,result);
+ }
+
+ /**
+ * assert that a property equals &quot;true&quot;
+ * @param property property name
+ */
+ protected void assertPropertySet(String property) {
+ assertPropertyEquals(property, "true");
+ }
+
+ /**
+ * assert that a property is null
+ * @param property property name
+ */
+ protected void assertPropertyUnset(String property) {
+ assertPropertyEquals(property, null);
+ }
+
+
+ /**
+ * call a target, verify named property is "true".
+ *
+ * @param target build file target
+ * @param property property name
+ */
+ protected void expectPropertySet(String target, String property) {
+ expectPropertySet(target, property, "true");
+ }
+
+
+ /**
+ * call a target, verify property is null
+ * @param target build file target
+ * @param property property name
+ */
+ protected void expectPropertyUnset(String target, String property) {
+ expectPropertySet(target, property, null);
+ }
+
+ /**
+ * Retrieve a resource from the caller classloader to avoid
+ * assuming a vm working directory. The resource path must be
+ * relative to the package name or absolute from the root path.
+ * @param resource the resource to retrieve its url.
+ * @throws AssertionFailureException if resource is not found.
+ */
+ protected URL getResource(String resource){
+ URL url = getClass().getResour​ce(resource);
+ assertNotNull("Could not find resource :" + resource, url);
+ return url;
+ }
+
+ /**
+ * an output stream which saves stuff to our buffer.
+ */
+ private class AntOutputStream extends java.io.OutputStream {
+ public void write(int b) {
+ outBuffer.append((char)b);
+ }
+ }
+
+ /**
+ * our own personal build listener
+ */
+ private class AntTestListener implements BuildListener {
+ /**
+ * Fired before any targets are started.
+ */
+ public void buildStarted(BuildEvent event) {
+ }
+
+ /**
+ * Fired after the last target has finished. This event
+ * will still be thrown if an error occured during the build.
+ *
+ * @see BuildEvent#getException()
+ */
+ public void buildFinished(BuildEvent event) {
+ }
+
+ /**
+ * Fired when a target is started.
+ *
+ * @see BuildEvent#getTarget()
+ */
+ public void targetStarted(BuildEvent event) {
+ //System.out.println​("targetStarted " + event.getTarget().getName());
+ }
+
+ /**
+ * Fired when a target has finished. This event will
+ * still be thrown if an error occured during the build.
+ *
+ * @see BuildEvent#getException()
+ */
+ public void targetFinished(BuildEvent event) {
+ //System.out.println​("targetFinished " + event.getTarget().getName());
+ }
+
+ /**
+ * Fired when a task is started.
+ *
+ * @see BuildEvent#getTask()
+ */
+ public void taskStarted(BuildEvent event) {
+ //System.out.println​("taskStarted " + event.getTask().getTaskName());
+ }
+
+ /**
+ * Fired when a task has finished. This event will still
+ * be throw if an error occured during the build.
+ *
+ * @see BuildEvent#getException()
+ */
+ public void taskFinished(BuildEvent event) {
+ //System.out.println​("taskFinished " + event.getTask().getTaskName());
+ }
+
+ /**
+ * Fired whenever a message is logged.
+ *
+ * @see BuildEvent#getMessage()
+ * @see BuildEvent#getPriority()
+ */
+ public void messageLogged(BuildEvent event) {
+ if (event.getPriority() == Project.MSG_INFO ||
+ event.getPriority() == Project.MSG_WARN ||
+ event.getPriority() == Project.MSG_ERR) {
+ logBuffer.append('\​n'+event.getMessage(​));
+ }
+ fullLogBuffer.append​('\n'+event.getMess​age());
+
+ }
+ }
+
+
+}

Added: trunk/svnant/src/tes​tcases/org/tigris/su​bversion/svnant/SvnT​est.java
====================​====================​====================​==================
--- (empty file)
+++ trunk/svnant/src/tes​tcases/org/tigris/su​bversion/svnant/SvnT​est.java Sun Jun 22 14:04:18 2003
@@ -0,0 +1,144 @@
+/*
+ * Created on 10 mars 2003
+ *
+ */
+package org.tigris.subversion.svnant;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.apache.tools.ant​.BuildFileTest;
+import org.tigris.subversio​n.svnclientadapter.S​VNClientAdapter;
+
+import com.qintsoft.jsvn.jn​i.ClientException;
+import com.qintsoft.jsvn.jni.DirEntry;
+import com.qintsoft.jsvn.jn​i.LogMessage;
+import com.qintsoft.jsvn.jn​i.PropertyData;
+import com.qintsoft.jsvn.jni.Revision;
+
+/**
+ * Edit test/build.properties and change urlRepos before running these tests
+ * @author Cédric Chabanois
+ * <a href="mailto:cchaban​ois at ifrance dot com">​cchabanois@ifrance.c​om</a>
+ *
+ */
+public class SvnTest extends BuildFileTest {
+private SVNClientAdapter svnClient;
+
+ public SvnTest(String name) {
+ super(name);
+ }
+
+ public void setUp() {
+ configureProject("te​st/build.xml");
+ svnClient = new SVNClientAdapter();
+ }
+
+ public void tearDown()
+ {
+ System.out.print(getLog());
+ }
+
+
+ public void testCheckout() {
+ executeTarget("testCheckout");
+ try {
+ assertEquals(1,svnCl​ient.getStatus(new File("test/coHEAD/RE​ADME.txt")).getLastC​hangedRevision());
+ } catch (ClientException e) {
+ fail("an exception occured");
+ }
+ }
+
+ public void testList() {
+ try {
+ String urlRepos = getProject().getProp​erty("urlRepos");
+ DirEntry[] list = svnClient.getList(new URL(urlRepos),Revisi​on.HEAD,false);
+ assertTrue(list.length > 0);
+ } catch (ClientException e) {
+ fail("an exception occured");
+ } catch (MalformedURLException e) { }
+ }
+
+ public void testLog() {
+ try {
+ String urlRepos = getProject().getProp​erty("urlRepos");
+ LogMessage[] messages = svnClient.getLogMessages(new File("test/my_repos/​README.txt"),new Revision.Number(0),R​evision.HEAD);
+ assertEquals("initial import",messages[0].​getMessage());
+ } catch (ClientException e) {
+ fail("an exception occured");
+ }
+ }
+
+
+ public void testAddCommit() {
+ executeTarget("testAddCommit");
+ try {
+ assertTrue(svnClient​.getStatus(new File("test/my_repos/​toAdd/file0.add")).g​etLastChangedRevisio​n() > 0);
+ } catch (ClientException e) {
+ fail("an exception occured");
+ }
+ }
+
+ public void testCopy() {
+ executeTarget("testCopy");
+ try {
+ assertTrue(svnClient​.getStatus(new File("test/my_repos/​copyTest/copy1")).ge​tLastChangedRevision​() > 0);
+ } catch (ClientException e) {
+ fail("an exception occured");
+ }
+ }
+
+ public void testDelete() {
+ executeTarget("testDelete");
+ assertFalse(new File("test/my_repos/​deleteTest/deleteFro​mWorkingCopy/file0.d​el").exists());
+ assertTrue(new File("test/my_repos/​deleteTest/deleteFro​mWorkingCopy/donotde​l.txt").exists());
+ }
+
+ public void testExport() {
+ executeTarget("testExport");
+ }
+
+ public void testImport() {
+ executeTarget("testImport");
+ }
+
+ public void testMkdir() {
+ executeTarget("testMkdir");
+ try {
+ assertTrue(svnClient​.getStatus(new File("test/my_repos/​testMkdir2")).getLas​tChangedRevision() > 0);
+ } catch (ClientException e) {
+ fail("an exception occured");
+ }
+ }
+
+ public void testMove() {
+ executeTarget("testMove");
+ try {
+ assertTrue(svnClient​.getStatus(new File("test/my_repos/​moveTest/dir1Renamed​")).getLastChangedRe​vision() > 0);
+ } catch (ClientException e) {
+ fail("an exception occured");
+ }
+ }
+
+ public void testProp() {
+ executeTarget("testProp");
+ try {
+ PropertyData propData = svnClient.propertyGet(new File("test/my_repos/​propTest/file.png"),​"svn:mime-type");
+ assertTrue(propData != null);
+ assertEquals("image/​png",propData.getVal​ue());
+ propData = svnClient.propertyGet(new File("test/my_repos/​propTest/file.png"),​"myPicture");
+ assertTrue(propData != null);
+ assertEquals(170,pro​pData.getData().leng​th);
+ } catch (ClientException e) {
+ fail("an exception occured");
+ }
+ }
+
+ public static void main(String[] args) {
+ String[] testCaseName = { SvnTest.class.getName()};
+ junit.textui.TestRun​ner.main(testCaseNam​e);
+ // junit.ui.TestRunner.​main(testCaseName);
+ }
+
+}

--------------------​--------------------​--------------------​---------
To unsubscribe, e-mail: cvs-unsubscribe@subc​lipse.tigris.org
For additional commands, e-mail: cvs-help at subclipse dot tigris dot org

« Previous message in topic | 1 of 1 | Next message in topic »

Messages

Show all messages in topic

subclipse commit: rev 18 - in trunk/svnant/src/testcases: . org org/apache org/apache/tools org/apache/tools/ant org/tigris org/tigris/subversion org/tigris/subversion/svnant cchab chabanois cédric 2003-06-22 12:04:19 PDT
Messages per page: