You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2012/01/05 19:08:01 UTC

svn commit: r1227727 - in /maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its: ./ fixture/

Author: krosenvold
Date: Thu Jan  5 18:08:01 2012
New Revision: 1227727

URL: http://svn.apache.org/viewvc?rev=1227727&view=rev
Log:
o Removed last of the AbstractSurefireIntegrationTestClass usages

Removed:
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractSurefireIntegrationTestClass.java
Modified:
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgVersionsIT.java
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeIT.java
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeTestNGIT.java
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TwoTestCasesIT.java
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/UmlautDirIT.java
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/SurefireLauncher.java
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/SurefireVerifierTestClass2.java
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/TestFile.java

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgVersionsIT.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgVersionsIT.java?rev=1227727&r1=1227726&r2=1227727&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgVersionsIT.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgVersionsIT.java Thu Jan  5 18:08:01 2012
@@ -19,12 +19,8 @@ package org.apache.maven.surefire.its;
  * under the License.
  */
 
-import org.apache.maven.it.Verifier;
-import org.apache.maven.it.util.ResourceExtractor;
-import org.apache.maven.surefire.its.misc.HelperAssertions;
-
-import java.io.File;
-import java.util.List;
+import org.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireVerifierTestClass2;
 
 /**
  * Basic suite test using all known versions of TestNG. Used for regression testing Surefire against old versions.
@@ -34,7 +30,7 @@ import java.util.List;
  * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
  */
 public class CheckTestNgVersionsIT
-    extends AbstractSurefireIntegrationTestClass
+    extends SurefireVerifierTestClass2
 {
 
     public void test47()
@@ -157,17 +153,8 @@ public class CheckTestNgVersionsIT
     public void runTestNgTest( String version )
         throws Exception
     {
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-simple" );
-
-        Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        List<String> arguments = this.getInitialGoals( version );
-        arguments.add( "test" );
-
-        executeGoals( verifier, arguments );
-        verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
-        IntegrationTestSuiteResults suite = HelperAssertions.parseTestResults( testDir );
-        HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, suite );
+        final OutputValidator outputValidator = unpack( "testng-simple" ).resetInitialGoals( version ).executeTest();
+        outputValidator.verifyErrorFreeLog().assertTestSuiteResults( 1, 0, 0, 0 );
     }
 }

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeIT.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeIT.java?rev=1227727&r1=1227726&r2=1227727&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeIT.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeIT.java Thu Jan  5 18:08:01 2012
@@ -19,16 +19,12 @@ package org.apache.maven.surefire.its;
  * under the License.
  */
 
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
-import org.apache.maven.it.util.ResourceExtractor;
-import org.apache.maven.surefire.its.misc.HelperAssertions;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
 import java.io.IOException;
-import java.util.List;
+import org.apache.maven.it.VerificationException;
+import org.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.apache.maven.surefire.its.fixture.SurefireVerifierTestClass2;
+import org.apache.maven.surefire.its.fixture.TestFile;
 
 /**
  * Test forkMode
@@ -36,36 +32,34 @@ import java.util.List;
  * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
  */
 public class ForkModeIT
-    extends AbstractSurefireIntegrationTestClass
+    extends SurefireVerifierTestClass2
 {
     public void testForkModeAlways()
         throws Exception
     {
-        String[] pids = doTest( "always" );
 
+        String[] pids = doTest( unpack( getProject() ).forkAlways());
         assertDifferentPids( pids );
     }
 
     public void testForkModePerTest()
         throws Exception
     {
-        String[] pids = doTest( "pertest" );
-
+        String[] pids = doTest( unpack( getProject() ).forkPerTest());
         assertDifferentPids( pids );
     }
 
     public void testForkModeNever()
         throws Exception
     {
-        String[] pids = doTest( "never" );
-
+        String[] pids = doTest(  unpack( getProject() ).forkNever() );
         assertSamePids( pids );
     }
 
     public void testForkModeNone()
         throws Exception
     {
-        String[] pids = doTest( "none" );
+        String[] pids = doTest( unpack( getProject() ).forkMode( "none" ));
 
         assertSamePids( pids );
     }
@@ -73,7 +67,7 @@ public class ForkModeIT
     public void testForkModeOnce()
         throws Exception
     {
-        String[] pids = doTest( "once" );
+        String[] pids = doTest( unpack( getProject() ).forkOnce());
         // DGF It would be nice to assert that "once" was different
         // from "never" ... but there's no way to check the PID of
         // Maven itself.  No matter, "once" is tested by setting
@@ -105,27 +99,16 @@ public class ForkModeIT
         }
     }
 
-    private String[] doTest( String forkMode )
+    private String[] doTest( SurefireLauncher forkMode )
         throws IOException, VerificationException
     {
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), getProject() );
-
-        Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        List<String> goals = this.getInitialGoals();
-        goals.add( "test" );
-        goals.add( "-DforkMode=" + forkMode );
-        executeGoals( verifier, goals );
-        verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
-
-        HelperAssertions.assertTestSuiteResults( 3, 0, 0, 0, testDir );
-
-        File targetDir = new File( testDir, "target" );
+        final OutputValidator outputValidator = forkMode.executeTest();
+        outputValidator.verifyErrorFreeLog().assertTestSuiteResults( 3, 0, 0, 0 );
         String[] pids = new String[3];
         for ( int i = 1; i <= pids.length; i++ )
         {
-            File pidFile = new File( targetDir, "test" + i + "-pid" );
-            String pid = slurpFile( pidFile );
+            final TestFile targetFile = outputValidator.getTargetFile( "test" + i + "-pid" );
+            String pid = targetFile.slurpFile();
             pids[i - 1] = pid;
         }
         return pids;
@@ -133,19 +116,7 @@ public class ForkModeIT
 
     protected String getProject()
     {
-        return "/fork-mode";
+        return "fork-mode";
     }
 
-    private String slurpFile( File textFile )
-        throws IOException
-    {
-        StringBuffer sb = new StringBuffer();
-        BufferedReader reader = new BufferedReader( new FileReader( textFile ) );
-        for ( String line = reader.readLine(); line != null; line = reader.readLine() )
-        {
-            sb.append( line );
-        }
-        reader.close();
-        return sb.toString();
-    }
 }

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeTestNGIT.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeTestNGIT.java?rev=1227727&r1=1227726&r2=1227727&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeTestNGIT.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeTestNGIT.java Thu Jan  5 18:08:01 2012
@@ -29,6 +29,6 @@ public class ForkModeTestNGIT
 {
     protected String getProject()
     {
-        return "/fork-mode-testng";
+        return "fork-mode-testng";
     }
 }

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TwoTestCasesIT.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TwoTestCasesIT.java?rev=1227727&r1=1227726&r2=1227727&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TwoTestCasesIT.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TwoTestCasesIT.java Thu Jan  5 18:08:01 2012
@@ -23,8 +23,8 @@ import java.io.File;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import org.apache.maven.it.Verifier;
-import org.apache.maven.it.util.ResourceExtractor;
+import org.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireVerifierTestClass2;
 import org.apache.maven.surefire.its.misc.HelperAssertions;
 import org.apache.maven.surefire.its.misc.ReportTestSuite;
 
@@ -34,19 +34,12 @@ import org.apache.maven.surefire.its.mis
  * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
  */
 public class TwoTestCasesIT
-    extends AbstractSurefireIntegrationTestClass
+    extends SurefireVerifierTestClass2
 {
     public void testTwoTestCases()
         throws Exception
     {
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/junit-twoTestCases" );
-
-        Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        this.executeGoal( verifier, "test" );
-        verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
-
-        HelperAssertions.assertTestSuiteResults( 2, 0, 0, 0, testDir );
+        unpack( "junit-twoTestCases" ).executeTest().verifyErrorFreeLog().assertTestSuiteResults( 2, 0, 0, 0 );
     }
 
     /**
@@ -55,13 +48,9 @@ public class TwoTestCasesIT
     public void testTwoTestCaseSuite()
         throws Exception
     {
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/junit-twoTestCaseSuite" );
-
-        Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        this.executeGoal( verifier, "test" );
-        verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
-        List<ReportTestSuite> reports = HelperAssertions.extractReports( ( new File[]{ testDir } ) );
+        final OutputValidator outputValidator = unpack( "junit-twoTestCaseSuite" ).executeTest();
+        outputValidator.verifyErrorFreeLog().assertTestSuiteResults( 2, 0, 0, 0 );
+        List<ReportTestSuite> reports = HelperAssertions.extractReports( ( new File[]{ outputValidator.getBaseDir() } ) );
         Set<String> classNames = extractClassNames( reports );
         assertContains( classNames, "junit.twoTestCaseSuite.BasicTest" );
         assertContains( classNames, "junit.twoTestCaseSuite.TestTwo" );
@@ -92,14 +81,10 @@ public class TwoTestCasesIT
     public void testJunit4Suite()
         throws Exception
     {
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/junit4-twoTestCaseSuite" );
+        final OutputValidator outputValidator = unpack( "junit4-twoTestCaseSuite" ).executeTest();
+        outputValidator.verifyErrorFreeLog().assertTestSuiteResults( 2, 0, 0, 0 );
 
-        Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        this.executeGoal( verifier, "test" );
-        verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
-
-        List<ReportTestSuite> reports = HelperAssertions.extractReports( ( new File[]{ testDir } ) );
+        List<ReportTestSuite> reports = HelperAssertions.extractReports( ( new File[]{ outputValidator.getBaseDir() } ) );
         Set<String> classNames = extractClassNames( reports );
         assertContains( classNames, "twoTestCaseSuite.BasicTest" );
         assertContains( classNames, "twoTestCaseSuite.Junit4TestTwo" );
@@ -111,14 +96,9 @@ public class TwoTestCasesIT
     public void testTestNGSuite()
         throws Exception
     {
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-twoTestCaseSuite" );
-
-        Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        this.executeGoal( verifier, "test" );
-        verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
-
-        List<ReportTestSuite> reports = HelperAssertions.extractReports( ( new File[]{ testDir } ) );
+        final OutputValidator outputValidator = unpack( "testng-twoTestCaseSuite" ).executeTest();
+        outputValidator.verifyErrorFreeLog().assertTestSuiteResults( 2, 0, 0, 0 );
+        List<ReportTestSuite> reports = HelperAssertions.extractReports( ( new File[]{ outputValidator.getBaseDir() } ) );
         Set<String> classNames = extractClassNames( reports );
         assertContains( classNames, "testng.two.TestNGTestTwo" );
         assertContains( classNames, "testng.two.TestNGSuiteTest" );

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/UmlautDirIT.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/UmlautDirIT.java?rev=1227727&r1=1227726&r2=1227727&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/UmlautDirIT.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/UmlautDirIT.java Thu Jan  5 18:08:01 2012
@@ -21,11 +21,11 @@ package org.apache.maven.surefire.its;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.List;
+import org.apache.maven.it.VerificationException;
 import org.apache.maven.it.Verifier;
 import org.apache.maven.it.util.FileUtils;
-import org.apache.maven.it.util.ResourceExtractor;
-import org.apache.maven.surefire.its.misc.HelperAssertions;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.apache.maven.surefire.its.fixture.SurefireVerifierTestClass2;
 
 /**
  * Test a directory with an umlaut
@@ -33,47 +33,28 @@ import org.apache.maven.surefire.its.mis
  * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
  */
 public class UmlautDirIT
-    extends AbstractSurefireIntegrationTestClass
+    extends SurefireVerifierTestClass2
 {
-    File testDir;
-
     public void testUmlaut()
         throws Exception
     {
-        Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        this.executeGoal( verifier, "test" );
-        verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
-
-        HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir );
+        specialUnpack().executeTest().verifyErrorFreeLog().assertTestSuiteResults( 1, 0, 0, 0 );
     }
 
     public void testUmlautIsolatedClassLoader()
         throws Exception
     {
-        Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-        List<String> goals = this.getInitialGoals();
-        goals.add( "test" );
-        goals.add( "-DuseSystemClassLoader=false" );
-        executeGoals( verifier, goals );
-        verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
-
-        HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir );
+        specialUnpack().useSystemClassLoader(false).executeTest().assertTestSuiteResults( 1, 0, 0, 0 );
     }
 
-    public void setUp()
-        throws IOException
+    SurefireLauncher specialUnpack()
+        throws VerificationException, IOException
     {
-        String tempDirPath = System.getProperty( "maven.test.tmpdir", System.getProperty( "java.io.tmpdir" ) );
-        File tempDir = new File( tempDirPath );
-        File targetDir = new File( "target" ).getAbsoluteFile();
-        if ( targetDir.exists() && targetDir.isDirectory() )
-        {
-            tempDir = targetDir;
-        }
-        testDir = new File( tempDir, "/junit-pathWith\u00DCmlaut" );
-        FileUtils.deleteDirectory( testDir );
-        testDir = ResourceExtractor.extractResourcePath( getClass(), "/junit-pathWithUmlaut", testDir, true );
+        final File unpackLocation = unpack( "junit-pathWithUmlaut" ).getUnpackLocation();
+        File dest = new File( unpackLocation.getParentFile().getPath(),"/junit-pathWith\u00DCmlaut");
+        FileUtils.deleteDirectory( dest );
+        unpackLocation.renameTo( dest );
+        return new SurefireLauncher( new Verifier( dest.getAbsolutePath() ) );
     }
+    
 }

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/SurefireLauncher.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/SurefireLauncher.java?rev=1227727&r1=1227726&r2=1227727&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/SurefireLauncher.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/SurefireLauncher.java Thu Jan  5 18:08:01 2012
@@ -71,7 +71,7 @@ public class SurefireLauncher
 
     }
 
-    protected SurefireLauncher( Verifier verifier )
+    public SurefireLauncher( Verifier verifier )
     {
         this.verifier = verifier;
         this.surefireVerifier = new OutputValidator( verifier );
@@ -149,6 +149,36 @@ public class SurefireLauncher
         return goals1;
     }
 
+    // Todo remove duplication between this and getInitialGoals
+    public SurefireLauncher resetInitialGoals( String testNgVersion )
+    {
+        List<String> goals = new ArrayList<String>();
+        goals.add( "-Dsurefire.version=" + surefireVersion );
+
+        if ( testNgVersion != null )
+        {
+            goals.add( "-DtestNgVersion=" + testNgVersion );
+
+            ArtifactVersion v = new DefaultArtifactVersion( testNgVersion );
+            try
+            {
+                if ( VersionRange.createFromVersionSpec( "(,5.12.1)" ).containsVersion( v ) )
+                {
+                    goals.add( "-DtestNgClassifier=jdk15" );
+                }
+            }
+            catch ( InvalidVersionSpecificationException e )
+            {
+                throw new RuntimeException( e.getMessage(), e );
+            }
+        }
+
+        this.goals.clear();
+        this.goals.addAll(  goals );
+        return this;
+    }
+
+
     public void assertPresent( File file )
     {
         verifier.assertFilePresent( file.getAbsolutePath() );
@@ -265,6 +295,10 @@ public class SurefireLauncher
     {
         return forkMode( "always" );
     }
+    public SurefireLauncher forkPerTest()
+    {
+        return forkMode( "pertest" );
+    }
 
     public SurefireLauncher forkMode( String forkMode )
     {
@@ -281,6 +315,11 @@ public class SurefireLauncher
         return addGoal( "-DfailIfNoTests=" + fail );
     }
 
+    public SurefireLauncher useSystemClassLoader( boolean useSystemClassLoader)
+    {
+        return addGoal( "-DuseSystemClassLoader=" + useSystemClassLoader );
+    }
+
     public SurefireLauncher activateProfile( String profile )
     {
         return addGoal( "-P" + profile );
@@ -440,4 +479,8 @@ public class SurefireLauncher
     {
         return failIfNoTests;
     }
+    
+    public File getUnpackLocation(){
+        return new File(verifier.getBasedir());
+    }
 }

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/SurefireVerifierTestClass2.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/SurefireVerifierTestClass2.java?rev=1227727&r1=1227726&r2=1227727&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/SurefireVerifierTestClass2.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/SurefireVerifierTestClass2.java Thu Jan  5 18:08:01 2012
@@ -37,9 +37,9 @@ import junit.framework.TestCase;
 public abstract class SurefireVerifierTestClass2
     extends TestCase
 {
-    public SurefireLauncher unpack( String projectName )
+    public SurefireLauncher unpack( String sourceName )
         throws VerificationException, IOException
     {
-        return new SurefireLauncher( this.getClass(), projectName );
+        return new SurefireLauncher( this.getClass(), sourceName );
     }
 }

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/TestFile.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/TestFile.java?rev=1227727&r1=1227726&r2=1227727&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/TestFile.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/fixture/TestFile.java Thu Jan  5 18:08:01 2012
@@ -19,9 +19,12 @@ package org.apache.maven.surefire.its.fi
  * under the License.
  */
 
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
 
 import static junit.framework.Assert.assertTrue;
 
@@ -66,4 +69,18 @@ public class TestFile {
     {
         return new FileInputStream( file );
     }
+
+    public String slurpFile()
+        throws IOException
+    {
+        StringBuilder sb = new StringBuilder();
+        BufferedReader reader = new BufferedReader( new FileReader( file ) );
+        for ( String line = reader.readLine(); line != null; line = reader.readLine() )
+        {
+            sb.append( line );
+        }
+        reader.close();
+        return sb.toString();
+    }
+
 }