diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java
index 7b12a86e5a..23d5fad58f 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java
@@ -23,6 +23,21 @@ import org.apache.maven.it.Verifier;
import org.apache.maven.it.util.ResourceExtractor;
import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.mortbay.jetty.Handler;
+import org.mortbay.jetty.Request;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.AbstractHandler;
/**
* This is a test set for MNG-768.
@@ -33,6 +48,7 @@ import java.io.File;
public class MavenITmng0768OfflineModeTest
extends AbstractMavenIntegrationTestCase
{
+
public MavenITmng0768OfflineModeTest()
{
super( ALL_MAVEN_VERSIONS );
@@ -46,58 +62,116 @@ public class MavenITmng0768OfflineModeTest
{
File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-0768" );
- {
- // phase 1: run build in online mode to fill local repo
- Verifier verifier = new Verifier( testDir.getAbsolutePath() );
- verifier.setAutoclean( false );
- verifier.deleteDirectory( "target" );
- verifier.deleteArtifacts( "org.apache.maven.its.it0069" );
- verifier.setLogFileName( "log1.txt" );
- verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", verifier.newDefaultFilterProperties() );
- verifier.getCliOptions().add( "--settings" );
- verifier.getCliOptions().add( "settings.xml" );
- verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile" );
- verifier.assertFilePresent( "target/compile.txt" );
- verifier.verifyErrorFreeLog();
- verifier.resetStreams();
- }
+ final List requestedUris = Collections.synchronizedList( new ArrayList() );
+ Handler repoHandler = new AbstractHandler()
{
- // phase 2: run build in offline mode to check it still passes
- // NOTE: We don't add the settings here to ensure Maven has no chance to access the required remote repo
- Verifier verifier = new Verifier( testDir.getAbsolutePath() );
- verifier.setAutoclean( false );
- verifier.deleteDirectory( "target" );
- verifier.getCliOptions().add( "-o" );
- verifier.setLogFileName( "log2.txt" );
- verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile" );
- verifier.assertFilePresent( "target/compile.txt" );
- verifier.verifyErrorFreeLog();
- verifier.resetStreams();
- }
-
- {
- // phase 3: delete test artifact and run build in offline mode to check it fails now
- // NOTE: We add the settings again to offer Maven the bad choice of using the remote repo
- Verifier verifier = new Verifier( testDir.getAbsolutePath() );
- verifier.setAutoclean( false );
- verifier.deleteDirectory( "target" );
- verifier.deleteArtifacts( "org.apache.maven.its.it0069" );
- verifier.getCliOptions().add( "-o" );
- verifier.getCliOptions().add( "--settings" );
- verifier.getCliOptions().add( "settings.xml" );
- verifier.setLogFileName( "log3.txt" );
- try
+ public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
+ throws IOException, ServletException
{
+ System.out.println( "Handling " + request.getMethod() + " " + request.getRequestURL() );
+
+ requestedUris.add( request.getRequestURI() );
+
+ PrintWriter writer = response.getWriter();
+
+ response.setStatus( HttpServletResponse.SC_OK );
+
+ if ( request.getRequestURI().endsWith( ".pom" ) )
+ {
+ writer.println( "" );
+ writer.println( " 4.0.0" );
+ writer.println( " org.apache.maven.its.mng0768" );
+ writer.println( " dep" );
+ writer.println( " 0.1" );
+ writer.println( "" );
+ }
+ else if ( request.getRequestURI().endsWith( ".jar" ) )
+ {
+ writer.println( "empty" );
+ }
+ else if ( request.getRequestURI().endsWith( ".md5" ) || request.getRequestURI().endsWith( ".sha1" ) )
+ {
+ response.setStatus( HttpServletResponse.SC_NOT_FOUND );
+ }
+
+ ( (Request) request ).setHandled( true );
+ }
+ };
+
+ Server server = new Server( 0 );
+ server.setHandler( repoHandler );
+ server.start();
+ int port = server.getConnectors()[0].getLocalPort();
+
+ try
+ {
+ {
+ // phase 1: run build in online mode to fill local repo
+ Verifier verifier = new Verifier( testDir.getAbsolutePath() );
+ verifier.setAutoclean( false );
+ verifier.deleteDirectory( "target" );
+ verifier.deleteArtifacts( "org.apache.maven.its.mng0768" );
+ verifier.setLogFileName( "log1.txt" );
+ Properties props = new Properties();
+ props.put( "@port@", Integer.toString( port ) );
+ verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", props );
+ verifier.getCliOptions().add( "--settings" );
+ verifier.getCliOptions().add( "settings.xml" );
verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile" );
+ verifier.assertFilePresent( "target/compile.txt" );
verifier.verifyErrorFreeLog();
- fail( "Build did not fail to resolve missing dependency although Maven ought to work offline!" );
+ verifier.resetStreams();
}
- catch( VerificationException e )
+
+ requestedUris.clear();
+
{
- // expected, should fail
+ // phase 2: run build in offline mode to check it still passes, without network accesses
+ Verifier verifier = new Verifier( testDir.getAbsolutePath() );
+ verifier.setAutoclean( false );
+ verifier.deleteDirectory( "target" );
+ verifier.getCliOptions().add( "-o" );
+ verifier.getCliOptions().add( "--settings" );
+ verifier.getCliOptions().add( "settings.xml" );
+ verifier.setLogFileName( "log2.txt" );
+ verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile" );
+ verifier.assertFilePresent( "target/compile.txt" );
+ verifier.verifyErrorFreeLog();
+ verifier.resetStreams();
}
- verifier.resetStreams();
+
+ assertTrue( requestedUris.toString(), requestedUris.isEmpty() );
+
+ {
+ // phase 3: delete test artifact and run build in offline mode to check it fails now
+ // NOTE: Adding the settings again to offer Maven the bad choice of using the remote repo
+ Verifier verifier = new Verifier( testDir.getAbsolutePath() );
+ verifier.setAutoclean( false );
+ verifier.deleteDirectory( "target" );
+ verifier.deleteArtifacts( "org.apache.maven.its.mng0768" );
+ verifier.getCliOptions().add( "-o" );
+ verifier.getCliOptions().add( "--settings" );
+ verifier.getCliOptions().add( "settings.xml" );
+ verifier.setLogFileName( "log3.txt" );
+ try
+ {
+ verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile" );
+ verifier.verifyErrorFreeLog();
+ fail( "Build did not fail to resolve missing dependency although Maven ought to work offline!" );
+ }
+ catch( VerificationException e )
+ {
+ // expected, should fail
+ }
+ verifier.resetStreams();
+ }
+
+ assertTrue( requestedUris.toString(), requestedUris.isEmpty() );
+ }
+ finally
+ {
+ server.stop();
}
}
diff --git a/its/core-it-suite/src/test/resources/mng-0768/pom.xml b/its/core-it-suite/src/test/resources/mng-0768/pom.xml
index b5801bb8e4..8f5f89127a 100644
--- a/its/core-it-suite/src/test/resources/mng-0768/pom.xml
+++ b/its/core-it-suite/src/test/resources/mng-0768/pom.xml
@@ -31,9 +31,9 @@ under the License.
- org.apache.maven.its.it0069
- it
- 1.0.3
+ org.apache.maven.its.mng0768
+ dep
+ 0.1
diff --git a/its/core-it-suite/src/test/resources/mng-0768/repo/org/apache/maven/its/it0069/it/1.0.3/it-1.0.3.jar b/its/core-it-suite/src/test/resources/mng-0768/repo/org/apache/maven/its/it0069/it/1.0.3/it-1.0.3.jar
deleted file mode 100644
index 227d254909..0000000000
Binary files a/its/core-it-suite/src/test/resources/mng-0768/repo/org/apache/maven/its/it0069/it/1.0.3/it-1.0.3.jar and /dev/null differ
diff --git a/its/core-it-suite/src/test/resources/mng-0768/repo/org/apache/maven/its/it0069/it/1.0.3/it-1.0.3.pom b/its/core-it-suite/src/test/resources/mng-0768/repo/org/apache/maven/its/it0069/it/1.0.3/it-1.0.3.pom
deleted file mode 100644
index f9b9a1cff7..0000000000
--- a/its/core-it-suite/src/test/resources/mng-0768/repo/org/apache/maven/its/it0069/it/1.0.3/it-1.0.3.pom
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
- 4.0.0
-
- org.apache.maven.its.it0069
- it
- 1.0.3
- jar
-
-
-
- it0069
- file:///${basedir}/repo
-
-
-
diff --git a/its/core-it-suite/src/test/resources/mng-0768/repo/org/apache/maven/its/it0069/it/maven-metadata.xml b/its/core-it-suite/src/test/resources/mng-0768/repo/org/apache/maven/its/it0069/it/maven-metadata.xml
deleted file mode 100644
index 562240ab62..0000000000
--- a/its/core-it-suite/src/test/resources/mng-0768/repo/org/apache/maven/its/it0069/it/maven-metadata.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
- org.apache.maven.its.it0069
- it
- 1.0.3
-
-
- 1.0.3
-
- 20080930194953
-
-
\ No newline at end of file
diff --git a/its/core-it-suite/src/test/resources/mng-0768/settings-template.xml b/its/core-it-suite/src/test/resources/mng-0768/settings-template.xml
index c985d1a689..63daa1e7d2 100644
--- a/its/core-it-suite/src/test/resources/mng-0768/settings-template.xml
+++ b/its/core-it-suite/src/test/resources/mng-0768/settings-template.xml
@@ -26,7 +26,7 @@ under the License.
maven-core-it
- @baseurl@/repo
+ http://localhost:@port@/
ignore