<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>core/behaviour/src/net/sf/cotta/CottaTestCase.java</filename>
    </added>
    <added>
      <filename>core/behaviour/src/net/sf/cotta/acceptance/InputFileChannelTestCase.java</filename>
    </added>
    <added>
      <filename>core/behaviour/src/net/sf/cotta/acceptance/TfsTestCase.java</filename>
    </added>
    <added>
      <filename>core/behaviour/src/net/sf/cotta/physical/PhysicalFileSystemTestCase.java</filename>
    </added>
    <added>
      <filename>ftp/behaviour/src/net/sf/cotta/ftp/FtpTestCase.java</filename>
    </added>
    <added>
      <filename>lib/jsch/jsch-0.1.40.jar</filename>
    </added>
    <added>
      <filename>lib/jsch/jsch-0.1.40.zip</filename>
    </added>
    <added>
      <filename>scp/scp.iml</filename>
    </added>
    <added>
      <filename>testbase/src/net/sf/cotta/test/TestCase.java</filename>
    </added>
    <added>
      <filename>testbase/test/net/sf/cotta/test/TestCaseTest.java</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,6 @@
-import net.sf.cotta.test.TestBase;
+import net.sf.cotta.test.TestCase;
 
-public class CottaTest extends TestBase {
+public class CottaTest extends TestCase {
   public void testReportInfoOnMain() throws Exception {
     Cotta.main(new String[0]);
   }</diff>
      <filename>core/behaviour/src/CottaTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,12 @@
 package net.sf.cotta;
 
 import net.sf.cotta.memory.InMemoryFileSystem;
-import net.sf.cotta.test.TestBase;
+import net.sf.cotta.test.TestCase;
 
 import java.util.ArrayList;
 import java.util.List;
 
-public class AbstractFileVisitorTest extends TestBase {
+public class AbstractFileVisitorTest extends TestCase {
   public void testVisitAllFiles() throws Exception {
     TFileFactory factory = new TFileFactory(new InMemoryFileSystem());
     TDirectory directory = factory.dir(&quot;/one/two&quot;);</diff>
      <filename>core/behaviour/src/net/sf/cotta/AbstractFileVisitorTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,8 @@
 package net.sf.cotta;
 
-import net.sf.cotta.test.TestBase;
+import net.sf.cotta.test.TestCase;
 
-public class ByteArrayIndexOutOfBoundsExceptionTest extends TestBase {
+public class ByteArrayIndexOutOfBoundsExceptionTest extends TestCase {
   public void testProvideProperMessage() throws Exception {
     ByteArrayIndexOutOfBoundsException exception = new ByteArrayIndexOutOfBoundsException(1, 9);
     ensure.that(exception).message().eq(&quot;Position &lt;1&gt; is out of the bound &lt;9&gt;&quot;);</diff>
      <filename>core/behaviour/src/net/sf/cotta/ByteArrayIndexOutOfBoundsExceptionTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ package net.sf.cotta;
 
 import net.sf.cotta.test.assertion.CodeBlock;
 
-public class CatastrophicFileSystemTest extends CottaTestBase {
+public class CatastrophicFileSystemTest extends CottaTestCase {
   public void testThrowExceptionsWhenDiskFull() throws Exception {
     final CatastrophicFileSystem fileSystem = new CatastrophicFileSystem();
     fileSystem.diskFull();</diff>
      <filename>core/behaviour/src/net/sf/cotta/CatastrophicFileSystemTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@ import org.jmock.Mockery;
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 
-public class ControlledFileSystemTest extends CottaTestBase {
+public class ControlledFileSystemTest extends CottaTestCase {
   public void testNotAllowUpdateOnNotPermittedDirectories() throws Exception {
     FileSystem fileSystem = fileSystemForTmp();
     fileSystem.createDir(TPath.parse(&quot;tmp/sub&quot;));</diff>
      <filename>core/behaviour/src/net/sf/cotta/ControlledFileSystemTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,11 @@
 package net.sf.cotta;
 
 import net.sf.cotta.memory.InMemoryFileSystem;
-import net.sf.cotta.test.TestBase;
+import net.sf.cotta.test.TestCase;
 
 // testused to do nothing but boost coverage to deprecated classes
 @SuppressWarnings({&quot;deprecation&quot;})
-public class CoverageOrientedTest extends TestBase {
+public class CoverageOrientedTest extends TestCase {
   public void testHandleClassPath() throws Exception {
     TFileFactory factory = new TFileFactory(new InMemoryFileSystem());
     new net.sf.cotta.utils.ClassPath(factory.file(&quot;one/two.txt&quot;));</diff>
      <filename>core/behaviour/src/net/sf/cotta/CoverageOrientedTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -3,13 +3,13 @@ package net.sf.cotta;
 import net.sf.cotta.io.IoFactory;
 import net.sf.cotta.io.OutputMode;
 import net.sf.cotta.io.StreamFactory;
-import net.sf.cotta.test.TestBase;
+import net.sf.cotta.test.TestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 
 import java.io.*;
 
-public class IoFactoryTest extends TestBase {
+public class IoFactoryTest extends TestCase {
   private Mockery context;
 
   public void beforeMethod() throws Exception {</diff>
      <filename>core/behaviour/src/net/sf/cotta/IoFactoryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ import org.jmock.Mockery;
 
 import java.io.*;
 
-public class IoManagerTest extends CottaTestBase {
+public class IoManagerTest extends CottaTestCase {
   private Mockery context;
 
   public void beforeMethod() throws Exception {</diff>
      <filename>core/behaviour/src/net/sf/cotta/IoManagerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,9 @@
 package net.sf.cotta;
 
 import net.sf.cotta.io.OutputMode;
-import net.sf.cotta.test.TestBase;
+import net.sf.cotta.test.TestCase;
 
-public class OutputModeTest extends TestBase {
+public class OutputModeTest extends TestCase {
   public void testBeAppendingMode() throws Exception {
     ensure.that(OutputMode.APPEND.isAppend()).eq(true);
   }</diff>
      <filename>core/behaviour/src/net/sf/cotta/OutputModeTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ package net.sf.cotta;
 
 import net.sf.cotta.io.IoResource;
 import net.sf.cotta.memory.InMemoryFileSystem;
-import net.sf.cotta.physical.PhysicalFileSystemTestBase;
+import net.sf.cotta.physical.PhysicalFileSystemTestCase;
 import net.sf.cotta.test.assertion.CodeBlock;
 import net.sf.cotta.zip.ZipFileSystem;
 import org.jmock.Expectations;
@@ -11,7 +11,7 @@ import org.jmock.Mockery;
 import java.io.File;
 import java.io.IOException;
 
-public class TDirectoryTest extends PhysicalFileSystemTestBase {
+public class TDirectoryTest extends PhysicalFileSystemTestCase {
   public void testExistAfterCreate() throws Exception {
     //Given
     TFileFactory factory = factory();</diff>
      <filename>core/behaviour/src/net/sf/cotta/TDirectoryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,14 @@
 package net.sf.cotta;
 
 import net.sf.cotta.memory.InMemoryFileSystem;
-import net.sf.cotta.physical.PhysicalFileSystemTestBase;
+import net.sf.cotta.physical.PhysicalFileSystemTestCase;
 import net.sf.cotta.test.assertion.CodeBlock;
 
 import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
 
-public class TFileFactoryTest extends PhysicalFileSystemTestBase {
+public class TFileFactoryTest extends PhysicalFileSystemTestCase {
 
   public void testEncodingForConstructor() {
     TFileFactory factory = new TFileFactory(new InMemoryFileSystem());</diff>
      <filename>core/behaviour/src/net/sf/cotta/TFileFactoryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
 
-public class TFileTest extends CottaTestBase {
+public class TFileTest extends CottaTestCase {
 
   public void testBeCreatedWithCorrectNameAndNotExists() throws Exception {
     TFile file = file(&quot;name.txt&quot;);</diff>
      <filename>core/behaviour/src/net/sf/cotta/TFileTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@ package net.sf.cotta;
 import net.sf.cotta.test.assertion.CodeBlock;
 import net.sf.cotta.test.assertion.ExceptionAssert;
 
-public class TPathTest extends CottaTestBase {
+public class TPathTest extends CottaTestCase {
   public void testNotAllowNullPathString() throws Exception {
     ExceptionAssert actualException = runAndCatch(IllegalArgumentException.class, new CodeBlock() {
       public void execute() throws Exception {</diff>
      <filename>core/behaviour/src/net/sf/cotta/TPathTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@ package net.sf.cotta.acceptance;
 import net.sf.cotta.FileSystem;
 import net.sf.cotta.memory.InMemoryFileSystem;
 
-public class InMemoryInputFileChannelTest extends InputFileChannelTestBase {
+public class InMemoryInputFileChannelTest extends InputFileChannelTestCase {
   protected FileSystem fileSystem() {
     return new InMemoryFileSystem();
   }</diff>
      <filename>core/behaviour/src/net/sf/cotta/acceptance/InMemoryInputFileChannelTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@ package net.sf.cotta.acceptance;
 import net.sf.cotta.FileSystem;
 import net.sf.cotta.memory.InMemoryFileSystem;
 
-public class InMemoryTfsTest extends TfsTestBase {
+public class InMemoryTfsTest extends TfsTestCase {
   protected FileSystem fileSystem() {
     return new InMemoryFileSystem();
   }</diff>
      <filename>core/behaviour/src/net/sf/cotta/acceptance/InMemoryTfsTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@ import java.io.IOException;
 import java.nio.MappedByteBuffer;
 import java.nio.channels.FileChannel;
 
-public class PhysicalInputFileChannelTest extends InputFileChannelTestBase {
+public class PhysicalInputFileChannelTest extends InputFileChannelTestCase {
   protected FileSystem fileSystem() {
     return new PhysicalFileSystem();
   }</diff>
      <filename>core/behaviour/src/net/sf/cotta/acceptance/PhysicalInputFileChannelTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@ package net.sf.cotta.acceptance;
 import net.sf.cotta.*;
 import net.sf.cotta.physical.PhysicalFileSystem;
 
-public class PhysicalTfsTest extends TfsTestBase {
+public class PhysicalTfsTest extends TfsTestCase {
 
   public void beforeMethod() throws Exception {
     super.beforeMethod();</diff>
      <filename>core/behaviour/src/net/sf/cotta/acceptance/PhysicalTfsTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,13 @@
 package net.sf.cotta.io;
 
-import net.sf.cotta.CottaTestBase;
+import net.sf.cotta.CottaTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 
-public class OutputManagerTest extends CottaTestBase {
+public class OutputManagerTest extends CottaTestCase {
   public Mockery context = new Mockery();
 
   public void testDelegateToStreamFactory() throws Exception {</diff>
      <filename>core/behaviour/src/net/sf/cotta/io/OutputManagerTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,11 @@
 package net.sf.cotta.memory;
 
 import net.sf.cotta.ByteArrayIndexOutOfBoundsException;
-import net.sf.cotta.CottaTestBase;
+import net.sf.cotta.CottaTestCase;
 
 import java.nio.ByteBuffer;
 
-public class ByteArrayBufferTest extends CottaTestBase {
+public class ByteArrayBufferTest extends CottaTestCase {
 
   public void testProvideToByteArray() throws Exception {
     ByteArrayBuffer buffer = new ByteArrayBuffer(&quot;test&quot;.getBytes());</diff>
      <filename>core/behaviour/src/net/sf/cotta/memory/ByteArrayBufferTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 package net.sf.cotta.memory;
 
-import net.sf.cotta.CottaTestBase;
+import net.sf.cotta.CottaTestCase;
 import net.sf.cotta.PathSeparator;
 import net.sf.cotta.TDirectory;
 import net.sf.cotta.TDirectoryNotFoundException;
@@ -20,7 +20,7 @@ import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
 
-public class InMemoryFileSystemTest extends CottaTestBase {
+public class InMemoryFileSystemTest extends CottaTestCase {
   public TFileFactory factory;
   public InMemoryFileSystem fileSystem;
 </diff>
      <filename>core/behaviour/src/net/sf/cotta/memory/InMemoryFileSystemTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 package net.sf.cotta.memory;
 
-import net.sf.cotta.CottaTestBase;
+import net.sf.cotta.CottaTestCase;
 import net.sf.cotta.TFile;
 import net.sf.cotta.TFileFactory;
 import net.sf.cotta.TIoException;
@@ -8,7 +8,7 @@ import net.sf.cotta.TIoException;
 import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
 
-public class InMemoryInputFileChannelTest extends CottaTestBase {
+public class InMemoryInputFileChannelTest extends CottaTestCase {
   private InMemoryFileSystem fileSystem;
 
   public void beforeMethod() throws Exception {</diff>
      <filename>core/behaviour/src/net/sf/cotta/memory/InMemoryInputFileChannelTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,10 @@
 package net.sf.cotta.memory;
 
-import net.sf.cotta.CottaTestBase;
+import net.sf.cotta.CottaTestCase;
 
 import java.nio.ByteBuffer;
 
-public class InMemoryOutputFileChannelTest extends CottaTestBase {
+public class InMemoryOutputFileChannelTest extends CottaTestCase {
   public void testWrite() throws Exception {
     InMemoryOutputFileChannel channel = new InMemoryOutputFileChannel(new ByteArrayBuffer());
     ByteBuffer buffer = ByteBuffer.allocate(4);</diff>
      <filename>core/behaviour/src/net/sf/cotta/memory/InMemoryOutputFileChannelTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,13 @@
 package net.sf.cotta.memory;
 
-import net.sf.cotta.CottaTestBase;
+import net.sf.cotta.CottaTestCase;
 import net.sf.cotta.TPath;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-public class ListingOrderTest extends CottaTestBase {
+public class ListingOrderTest extends CottaTestCase {
   public void testHaveNullDoingNothing() throws Exception {
     TPath a = TPath.parse(&quot;/z/a&quot;);
     TPath b = TPath.parse(&quot;/m/b&quot;);</diff>
      <filename>core/behaviour/src/net/sf/cotta/memory/ListingOrderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@ import java.io.File;
 import java.io.OutputStream;
 import java.util.Date;
 
-public class PhysicalFileSystemTest extends PhysicalFileSystemTestBase {
+public class PhysicalFileSystemTest extends PhysicalFileSystemTestCase {
 
   public void testCreateAndDeleteDirectory() throws Exception {
     TPath tmp = TPath.parse(&quot;tmp&quot;);</diff>
      <filename>core/behaviour/src/net/sf/cotta/physical/PhysicalFileSystemTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,9 @@
 package net.sf.cotta.test;
 
 import junit.framework.TestSuite;
-import net.sf.cotta.CottaTestBase;
+import net.sf.cotta.CottaTestCase;
 
-public class TestLoaderTest extends CottaTestBase {
+public class TestLoaderTest extends CottaTestCase {
   public void testLoadingTests() {
     TestLoader loader = new TestLoader(getClass());
     TestSuite suite = loader.loadTests();</diff>
      <filename>core/behaviour/src/net/sf/cotta/test/TestLoaderTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,11 @@
 package net.sf.cotta.utils;
 
-import net.sf.cotta.CottaTestBase;
+import net.sf.cotta.CottaTestCase;
 import net.sf.cotta.TDirectory;
 import net.sf.cotta.TFile;
 import net.sf.cotta.test.assertion.CodeBlock;
 
-public class ClassPathEntryLocatorTest extends CottaTestBase {
+public class ClassPathEntryLocatorTest extends CottaTestCase {
   public void testLocateClassInDirectory() throws Exception {
     TDirectory directory = new ClassPathEntryLocator(ClassPathEntryLocator.class).locateEntry().openAsDirectory();
     TFile file = directory.file(&quot;net/sf/cotta/utils/ClassPathEntryLocator.class&quot;);</diff>
      <filename>core/behaviour/src/net/sf/cotta/utils/ClassPathEntryLocatorTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@ import net.sf.cotta.TDirectory;
 import net.sf.cotta.TFile;
 import net.sf.cotta.TFileFactory;
 import net.sf.cotta.memory.InMemoryFileSystem;
-import net.sf.cotta.test.TestBase;
+import net.sf.cotta.test.TestCase;
 import org.hamcrest.Matchers;
 
 import java.io.File;
@@ -12,7 +12,7 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 
-public class ClassPathEntryTest extends TestBase {
+public class ClassPathEntryTest extends TestCase {
   private TFileFactory factory = new TFileFactory(new InMemoryFileSystem());
 
   public void testTakeDirectoryOnlyAsDirectory() throws Exception {</diff>
      <filename>core/behaviour/src/net/sf/cotta/utils/ClassPathEntryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 package net.sf.cotta.utils;
 
-import net.sf.cotta.CottaTestBase;
+import net.sf.cotta.CottaTestCase;
 import net.sf.cotta.TDirectory;
 import net.sf.cotta.TIoException;
 import net.sf.cotta.test.assertion.CodeBlock;
@@ -8,7 +8,7 @@ import net.sf.cotta.test.assertion.CodeBlock;
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 
-public class ProductInfoTest extends CottaTestBase {
+public class ProductInfoTest extends CottaTestCase {
   public void testLoadWithThePathPointingToClass() throws Exception {
     ProductInfo productInfo = ProductInfo.forClass(ProductInfo.class);
     TDirectory directory = productInfo.loadedPath().openAsDirectory();</diff>
      <filename>core/behaviour/src/net/sf/cotta/utils/ProductInfoTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@ import net.sf.cotta.utils.ClassPathType;
 
 import java.io.*;
 
-public class ZipFileSystemTest extends CottaTestBase {
+public class ZipFileSystemTest extends CottaTestCase {
   private FileSystem zip;
   private File workingZipFile;
   private static final String TEST_TXT_CONTENT = &quot;sub&quot;;</diff>
      <filename>core/behaviour/src/net/sf/cotta/zip/ZipFileSystemTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -6,6 +6,7 @@
       &lt;sourceFolder url=&quot;file://$MODULE_DIR$/behaviour/resources&quot; isTestSource=&quot;true&quot; /&gt;
       &lt;sourceFolder url=&quot;file://$MODULE_DIR$/behaviour/src&quot; isTestSource=&quot;true&quot; /&gt;
       &lt;sourceFolder url=&quot;file://$MODULE_DIR$/src&quot; isTestSource=&quot;false&quot; /&gt;
+      &lt;excludeFolder url=&quot;file://$MODULE_DIR$/bin&quot; /&gt;
       &lt;excludeFolder url=&quot;file://$MODULE_DIR$/build&quot; /&gt;
     &lt;/content&gt;
     &lt;orderEntry type=&quot;inheritedJdk&quot; /&gt;</diff>
      <filename>core/core.iml</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,22 @@
 package net.sf.cotta;
 
 public interface TDirectoryFilter {
-  TDirectoryFilter ALL = new TDirectoryFilter() {
+  public static final TDirectoryFilter ALL = new TDirectoryFilter() {
     public boolean accept(TDirectory directory) {
       return true;
     }
   };
 
+  public static final TDirectoryFilter NULL = ALL;
+
+  /**
+   * A filter that filters all files
+   */
+  public static final TDirectoryFilter NONE = new TDirectoryFilter() {
+    public boolean accept(TDirectory directory) {
+      return false;
+    }
+  };
+
   boolean accept(TDirectory directory);
 }</diff>
      <filename>core/src/net/sf/cotta/TDirectoryFilter.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,29 @@
 package net.sf.cotta;
 
 public interface TFileFilter {
-  TFileFilter ALL = new TFileFilter() {
+  /**
+   * Null value for TFileFilter that accepts all files
+   */
+  public static final TFileFilter NULL = new TFileFilter() {
     public boolean accept(TFile file) {
       return true;
     }
   };
 
+  /**
+   * Accept all files
+   */
+  public static final TFileFilter ALL = NULL;
+  public static final TFileFilter NONE = new TFileFilter() {
+    public boolean accept(TFile file) {
+      return false;
+    }
+  };
+
+  /**
+   * returns true if the file passes the filter
+   * @param file file
+   * @return true if the file passes the filter
+   */
   boolean accept(TFile file);
 }</diff>
      <filename>core/src/net/sf/cotta/TFileFilter.java</filename>
    </modified>
    <modified>
      <diff>@@ -66,6 +66,9 @@
       &lt;entry name=&quot;?*.txt&quot; /&gt;
     &lt;/wildcardResourcePatterns&gt;
   &lt;/component&gt;
+  &lt;component name=&quot;CopyrightManager&quot; default=&quot;&quot;&gt;
+    &lt;module2copyright /&gt;
+  &lt;/component&gt;
   &lt;component name=&quot;DependenciesAnalyzeManager&quot;&gt;
     &lt;option name=&quot;myForwardDirection&quot; value=&quot;false&quot; /&gt;
   &lt;/component&gt;
@@ -295,11 +298,15 @@
     &lt;option name=&quot;projectName&quot; value=&quot;cotta&quot; /&gt;
   &lt;/component&gt;
   &lt;component name=&quot;ProjectFileVersion&quot; converted=&quot;true&quot; /&gt;
+  &lt;component name=&quot;ProjectKey&quot;&gt;
+    &lt;option name=&quot;state&quot; value=&quot;project://D:\Work\cotta\cotta.ipr&quot; /&gt;
+  &lt;/component&gt;
   &lt;component name=&quot;ProjectModuleManager&quot;&gt;
     &lt;modules&gt;
       &lt;module fileurl=&quot;file://$PROJECT_DIR$/core/core.iml&quot; filepath=&quot;$PROJECT_DIR$/core/core.iml&quot; /&gt;
       &lt;module fileurl=&quot;file://$PROJECT_DIR$/ftp/ftp.iml&quot; filepath=&quot;$PROJECT_DIR$/ftp/ftp.iml&quot; /&gt;
       &lt;module fileurl=&quot;file://$PROJECT_DIR$/lib/lib.iml&quot; filepath=&quot;$PROJECT_DIR$/lib/lib.iml&quot; /&gt;
+      &lt;module fileurl=&quot;file://$PROJECT_DIR$/scp/scp.iml&quot; filepath=&quot;$PROJECT_DIR$/scp/scp.iml&quot; /&gt;
       &lt;module fileurl=&quot;file://$PROJECT_DIR$/testbase/testbase.iml&quot; filepath=&quot;$PROJECT_DIR$/testbase/testbase.iml&quot; /&gt;
       &lt;module fileurl=&quot;file://$PROJECT_DIR$/website/website.iml&quot; filepath=&quot;$PROJECT_DIR$/website/website.iml&quot; /&gt;
     &lt;/modules&gt;</diff>
      <filename>cotta.ipr</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 
-public class FtpFileSystemTest extends FtpTestBase {
+public class FtpFileSystemTest extends FtpTestCase {
 
   private FileSystem fileSystem;
 </diff>
      <filename>ftp/behaviour/src/net/sf/cotta/ftp/FtpFileSystemTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@ package net.sf.cotta.ftp;
 import net.sf.cotta.TDirectory;
 import net.sf.cotta.TFileFactory;
 import net.sf.cotta.memory.InMemoryFileSystem;
-import net.sf.cotta.test.TestBase;
+import net.sf.cotta.test.TestCase;
 import net.sf.cotta.test.TestFixture;
 import org.apache.commons.net.ftp.FTPClient;
 
@@ -22,17 +22,17 @@ public class FtpFixture implements TestFixture {
     ftpServer.stop();
   }
 
-  public void beforeMethod(TestBase testBase) throws IOException {
+  public void beforeMethod(TestCase testCase) throws IOException {
     TFileFactory fileFactory = new TFileFactory(new InMemoryFileSystem());
     ftpServer.cleanFileSystem(fileFactory);
     TDirectory rootDir = fileFactory.dir(&quot;/&quot;);
-    testBase.inject(rootDir);
+    testCase.inject(rootDir);
     FTPClient ftpClient = new FTPClient();
     ftpClient.connect(&quot;localhost&quot;, 8021);
     ftpClient.login(&quot;anonymous&quot;, &quot;test@test.com&quot;);
-    testBase.inject(ftpClient);
+    testCase.inject(ftpClient);
   }
 
-  public void afterMethod(TestBase testBase) {
+  public void afterMethod(TestCase testCase) {
   }
 }</diff>
      <filename>ftp/behaviour/src/net/sf/cotta/ftp/FtpFixture.java</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,6 @@ package net.sf.cotta.ftp;
 import net.sf.cotta.TDirectory;
 import net.sf.cotta.TFileFactory;
 import net.sf.cotta.TFileNotFoundException;
-import net.sf.cotta.ftp.client.commonsNet.CommonsNetFtpClient;
 import net.sf.cotta.test.assertion.CodeBlock;
 import net.sf.cotta.io.InputManager;
 import net.sf.cotta.io.InputProcessor;
@@ -14,7 +13,7 @@ import org.apache.commons.net.ftp.FTPClient;
 
 import java.io.*;
 
-public class TestFtpServerFileSystemTest extends FtpTestBase {
+public class TestFtpServerFileSystemTest extends FtpTestCase {
   public void testBeAtRootAndNoFileInitially() throws InterruptedException, IOException {
     String workingDirectory = ftpClient.printWorkingDirectory();
     ensure.string(workingDirectory).eq(&quot;/&quot;);</diff>
      <filename>ftp/behaviour/src/net/sf/cotta/ftp/TestFtpServerFileSystemTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -2,12 +2,12 @@ package net.sf.cotta.ftp.client.commonsNet;
 
 import net.sf.cotta.TFileNotFoundException;
 import net.sf.cotta.TPath;
-import net.sf.cotta.ftp.FtpTestBase;
+import net.sf.cotta.ftp.FtpTestCase;
 import net.sf.cotta.test.assertion.CodeBlock;
 
 import java.io.IOException;
 
-public class CommonsNetFtpClientTest extends FtpTestBase {
+public class CommonsNetFtpClientTest extends FtpTestCase {
   public void testRetrieveInputStream() throws IOException {
     final CommonsNetFtpClient netFtpClient = new CommonsNetFtpClient(ftpClient);
     ensure.code(new CodeBlock() {</diff>
      <filename>ftp/behaviour/src/net/sf/cotta/ftp/client/commonsNet/CommonsNetFtpClientTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -6,6 +6,7 @@
       &lt;sourceFolder url=&quot;file://$MODULE_DIR$/behaviour/resources&quot; isTestSource=&quot;true&quot; /&gt;
       &lt;sourceFolder url=&quot;file://$MODULE_DIR$/behaviour/src&quot; isTestSource=&quot;true&quot; /&gt;
       &lt;sourceFolder url=&quot;file://$MODULE_DIR$/src&quot; isTestSource=&quot;false&quot; /&gt;
+      &lt;excludeFolder url=&quot;file://$MODULE_DIR$/bin&quot; /&gt;
     &lt;/content&gt;
     &lt;orderEntry type=&quot;inheritedJdk&quot; /&gt;
     &lt;orderEntry type=&quot;sourceFolder&quot; forTests=&quot;false&quot; /&gt;</diff>
      <filename>ftp/ftp.iml</filename>
    </modified>
    <modified>
      <diff>@@ -17,8 +17,8 @@ public class FixtureRepository {
     return instance;
   }
 
-  void register(TestBase testBase) {
-    for (Annotation annotation : testBase.getClass().getAnnotations()) {
+  void register(TestCase testCase) {
+    for (Annotation annotation : testCase.getClass().getAnnotations()) {
       Fixture fixtureType = annotation.annotationType().getAnnotation(Fixture.class);
       if (fixtureType != null) {
         String fixtureAnnotationName = annotation.annotationType().getName();
@@ -27,7 +27,7 @@ public class FixtureRepository {
           fixtureWrapper = load(annotation.annotationType().getName() + &quot;Fixture&quot;);
           envFixtureMap.put(fixtureAnnotationName, fixtureWrapper);
         }
-        add(testBase, fixtureWrapper);
+        add(testCase, fixtureWrapper);
       }
     }
   }
@@ -53,8 +53,8 @@ public class FixtureRepository {
     throw new IllegalArgumentException(&quot;fixture class does not implement &quot; + TestFixture.class.getName() + &quot;: &quot; + fixtureClassName);
   }
 
-  private void add(TestBase testBase, FixtureWrapper fixtureWrapper) {
-    String key = testBase.getClass().getName();
+  private void add(TestCase testCase, FixtureWrapper fixtureWrapper) {
+    String key = testCase.getClass().getName();
     Set&lt;FixtureWrapper&gt; fixtureWrapperList = classFixtureMap.get(key);
     if (fixtureWrapperList == null) {
       fixtureWrapperList = new HashSet&lt;FixtureWrapper&gt;();
@@ -64,35 +64,35 @@ public class FixtureRepository {
     fixtureWrapper.increaseCount();
   }
 
-  public void fixtureSetUp(TestBase testBase) throws Exception {
-    for (FixtureWrapper info : loadFixture(testBase)) {
+  public void fixtureSetUp(TestCase testCase) throws Exception {
+    for (FixtureWrapper info : loadFixture(testCase)) {
       info.setUp();
     }
   }
 
-  private Set&lt;FixtureWrapper&gt; loadFixture(TestBase testBase) {
-    Set&lt;FixtureWrapper&gt; infos = classFixtureMap.get(testBase.getClass().getName());
+  private Set&lt;FixtureWrapper&gt; loadFixture(TestCase testCase) {
+    Set&lt;FixtureWrapper&gt; infos = classFixtureMap.get(testCase.getClass().getName());
     if (infos == null) {
       infos = Collections.emptySet();
     }
     return infos;
   }
 
-  public void fixtureTearDown(TestBase testBase) throws Exception {
-    for (FixtureWrapper fixture : loadFixture(testBase)) {
+  public void fixtureTearDown(TestCase testCase) throws Exception {
+    for (FixtureWrapper fixture : loadFixture(testCase)) {
       fixture.tearDown();
     }
   }
 
-  public void beforeMethod(TestBase testBase) throws Exception {
-    for (FixtureWrapper fixture : loadFixture(testBase)) {
-      fixture.beforeMethod(testBase);
+  public void beforeMethod(TestCase testCase) throws Exception {
+    for (FixtureWrapper fixture : loadFixture(testCase)) {
+      fixture.beforeMethod(testCase);
     }
   }
 
-  public void afterMethod(TestBase testBase) throws Exception {
-    for (FixtureWrapper fixture : loadFixture(testBase)) {
-      fixture.afterMethod(testBase);
+  public void afterMethod(TestCase testCase) throws Exception {
+    for (FixtureWrapper fixture : loadFixture(testCase)) {
+      fixture.afterMethod(testCase);
     }
   }
 }</diff>
      <filename>testbase/src/net/sf/cotta/test/FixtureRepository.java</filename>
    </modified>
    <modified>
      <diff>@@ -29,11 +29,11 @@ class FixtureWrapper {
     expectedCalls++;
   }
 
-  public void beforeMethod(TestBase testBase) throws Exception {
-    fixture.beforeMethod(testBase);
+  public void beforeMethod(TestCase testCase) throws Exception {
+    fixture.beforeMethod(testCase);
   }
 
-  public void afterMethod(TestBase testBase) throws Exception {
-    fixture.afterMethod(testBase);
+  public void afterMethod(TestCase testCase) throws Exception {
+    fixture.afterMethod(testCase);
   }
 }</diff>
      <filename>testbase/src/net/sf/cotta/test/FixtureWrapper.java</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@ public interface TestFixture {
 
   void tearDown() throws Exception;
 
-  void beforeMethod(TestBase testBase) throws Exception;
+  void beforeMethod(TestCase testCase) throws Exception;
 
-  void afterMethod(TestBase testBase) throws Exception;
+  void afterMethod(TestCase testCase) throws Exception;
 }</diff>
      <filename>testbase/src/net/sf/cotta/test/TestFixture.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,10 @@
 package net.sf.cotta.test;
 
-import junit.framework.TestCase;
-
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.lang.reflect.InvocationTargetException;
 
-public class AssertionFactoryTest extends TestBase {
+public class AssertionFactoryTest extends TestCase {
   public void testAllMethodsHaveMatchingThatMethod() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
     AssertionFactory factory = new AssertionFactory();
     for (Method method : factory.getClass().getDeclaredMethods()) {</diff>
      <filename>testbase/test/net/sf/cotta/test/AssertionFactoryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,9 @@
 package net.sf.cotta.test;
 
-import junit.framework.TestCase;
-
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
-public class FixtureRepositoryTest extends TestCase {
+public class FixtureRepositoryTest extends junit.framework.TestCase {
   private static AssertionFactory ensure = new AssertionFactory();
   private FixtureRepository repository;
 
@@ -45,7 +43,7 @@ public class FixtureRepositoryTest extends TestCase {
   }
 
   @Sample
-  public static class TestDummy extends TestBase {
+  public static class TestDummy extends TestCase {
 
   }
 
@@ -65,16 +63,16 @@ public class FixtureRepositoryTest extends TestCase {
       count--;
     }
 
-    public void beforeMethod(TestBase testBase) {
+    public void beforeMethod(TestCase testCase) {
     }
 
-    public void afterMethod(TestBase testBase) {
+    public void afterMethod(TestCase testCase) {
     }
 
   }
 
   @FixtureClassNotTestFixture
-  public static class TestWithAnnotationProblem extends TestBase {
+  public static class TestWithAnnotationProblem extends TestCase {
   }
 
   @Retention(RetentionPolicy.RUNTIME)</diff>
      <filename>testbase/test/net/sf/cotta/test/FixtureRepositoryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,8 @@
 package net.sf.cotta.test.assertion;
 
-import net.sf.cotta.test.TestBase;
+import net.sf.cotta.test.TestCase;
 
-public class IntegerAssertTest extends TestBase {
+public class IntegerAssertTest extends TestCase {
   public void testLessThan() {
     new IntegerAssert(5).lessThan(6);
   }</diff>
      <filename>testbase/test/net/sf/cotta/test/assertion/IntegerAssertTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,8 @@
 package net.sf.cotta.test.assertion;
 
-import net.sf.cotta.test.TestBase;
+import net.sf.cotta.test.TestCase;
 
-public class ObjectAssertTest extends TestBase {
+public class ObjectAssertTest extends TestCase {
   public void testDescribeAs() {
     Object instance = new Object();
     final ObjectAssert&lt;Object&gt; assertion = new ObjectAssert&lt;Object&gt;(instance).describedAs(&quot;description&quot;);</diff>
      <filename>testbase/test/net/sf/cotta/test/assertion/ObjectAssertTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -5,6 +5,7 @@
     &lt;content url=&quot;file://$MODULE_DIR$&quot;&gt;
       &lt;sourceFolder url=&quot;file://$MODULE_DIR$/src&quot; isTestSource=&quot;false&quot; /&gt;
       &lt;sourceFolder url=&quot;file://$MODULE_DIR$/test&quot; isTestSource=&quot;true&quot; /&gt;
+      &lt;excludeFolder url=&quot;file://$MODULE_DIR$/bin&quot; /&gt;
     &lt;/content&gt;
     &lt;orderEntry type=&quot;inheritedJdk&quot; /&gt;
     &lt;orderEntry type=&quot;sourceFolder&quot; forTests=&quot;false&quot; /&gt;</diff>
      <filename>testbase/testbase.iml</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>core/behaviour/src/net/sf/cotta/CottaTestBase.java</filename>
    </removed>
    <removed>
      <filename>core/behaviour/src/net/sf/cotta/acceptance/InputFileChannelTestBase.java</filename>
    </removed>
    <removed>
      <filename>core/behaviour/src/net/sf/cotta/acceptance/TfsTestBase.java</filename>
    </removed>
    <removed>
      <filename>core/behaviour/src/net/sf/cotta/physical/PhysicalFileSystemTestBase.java</filename>
    </removed>
    <removed>
      <filename>ftp/behaviour/src/net/sf/cotta/ftp/FtpTestBase.java</filename>
    </removed>
    <removed>
      <filename>testbase/src/net/sf/cotta/test/TestBase.java</filename>
    </removed>
    <removed>
      <filename>testbase/test/net/sf/cotta/test/TestBaseTest.java</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>343a67b975b2147009df20026d41c49af5370172</id>
    </parent>
  </parents>
  <author>
    <name>wolfdancer</name>
    <email>wolfdancer@gmail.com</email>
  </author>
  <url>http://github.com/wolfdancer/cotta/commit/d19e060b984beace86c535e8a4c8e00a716f6ceb</url>
  <id>d19e060b984beace86c535e8a4c8e00a716f6ceb</id>
  <committed-date>2009-01-30T21:24:07-08:00</committed-date>
  <authored-date>2009-01-30T21:24:07-08:00</authored-date>
  <message>use testcase as the name</message>
  <tree>f74343f22f2f9be82a06375fac2fed246c771868</tree>
  <committer>
    <name>wolfdancer</name>
    <email>wolfdancer@gmail.com</email>
  </committer>
</commit>
