From d91bd35abe08867f04fd748955d14d0dcfc3b268 Mon Sep 17 00:00:00 2001 From: John Dennis Casey Date: Thu, 17 Apr 2008 23:51:52 +0000 Subject: [PATCH] [MNG-3482] Adding an integration test to verify this fix. git-svn-id: https://svn.apache.org/repos/asf/maven/core-integration-testing/trunk@649331 13f79535-47bb-0310-9956-ffa450edef68 --- .../IntegrationTestSuite.java | 1 + ...mng3482DependencyPomInterpolationTest.java | 160 ++++++++++++++++++ .../src/test/resources/mng-3482/pom.xml | 23 +++ .../src/test/resources/mng-3482/readme.txt | 1 + .../mng-3482/repo/test/dep/1/dep-1.pom | 14 ++ .../mng-3482/repo/test/dep2/1/dep2-1.jar | Bin 0 -> 1980 bytes .../mng-3482/repo/test/dep2/1/dep2-1.pom | 7 + .../test/resources/mng-3482/settings.xml.in | 22 +++ .../main/java/tests/mng3482/AppMNG3482.java | 5 + 9 files changed, 233 insertions(+) create mode 100644 its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3482DependencyPomInterpolationTest.java create mode 100644 its/core-integration-tests/src/test/resources/mng-3482/pom.xml create mode 100644 its/core-integration-tests/src/test/resources/mng-3482/readme.txt create mode 100644 its/core-integration-tests/src/test/resources/mng-3482/repo/test/dep/1/dep-1.pom create mode 100644 its/core-integration-tests/src/test/resources/mng-3482/repo/test/dep2/1/dep2-1.jar create mode 100644 its/core-integration-tests/src/test/resources/mng-3482/repo/test/dep2/1/dep2-1.pom create mode 100644 its/core-integration-tests/src/test/resources/mng-3482/settings.xml.in create mode 100644 its/core-integration-tests/src/test/resources/mng-3482/src/main/java/tests/mng3482/AppMNG3482.java diff --git a/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java b/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java index 945ec22fa2..376f1edb04 100644 --- a/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java +++ b/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java @@ -67,6 +67,7 @@ public class IntegrationTestSuite suite.addTestSuite( MavenITmng3498ForkToOtherMojoTest.class ); suite.addTestSuite( MavenITmng3485OverrideWagonExtensionTest.class ); + suite.addTestSuite( MavenITmng3482DependencyPomInterpolationTest.class ); suite.addTestSuite( MavenITmng3473PluginReportCrash.class ); suite.addTestSuite( MavenITmng3428PluginDescriptorArtifactsIncompleteTest.class ); suite.addTestSuite( MavenITmng3426PluginsClasspathOverrideTest.class ); diff --git a/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3482DependencyPomInterpolationTest.java b/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3482DependencyPomInterpolationTest.java new file mode 100644 index 0000000000..96f8cf50fe --- /dev/null +++ b/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3482DependencyPomInterpolationTest.java @@ -0,0 +1,160 @@ +/* + * 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. + */ + +package org.apache.maven.integrationtests; + +import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; +import org.apache.maven.it.Verifier; +import org.apache.maven.it.util.IOUtil; +import org.apache.maven.it.util.ResourceExtractor; +import org.apache.maven.it.util.StringUtils; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.util.ArrayList; +import java.util.List; + +/** + * This is a test set for MNG-3482. + * + * @todo Fill in a better description of what this test verifies! + * + * @author Brian Fox + * @author jdcasey + * + */ +public class MavenITmng3482DependencyPomInterpolationTest + extends AbstractMavenIntegrationTestCase +{ + public MavenITmng3482DependencyPomInterpolationTest() + throws InvalidVersionSpecificationException + { + super( "(2.0.8,)" ); // only test in 2.0.9+ + } + + public void testitMNG3482() + throws Exception + { + // The testdir is computed from the location of this + // file. + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3482" ); + + File settings = writeSettings( testDir ); + + Verifier verifier; + + /* + * We must first make sure that any artifact created + * by this test has been removed from the local + * repository. Failing to do this could cause + * unstable test results. Fortunately, the verifier + * makes it easy to do this. + */ + verifier = new Verifier( testDir.getAbsolutePath() ); + + verifier.deleteArtifact( "org.apache.maven.its.mng3482", "mng-3482", "1", "pom" ); + verifier.deleteArtifact( "org.apache.maven.its.mng3482", "mng-3482", "1", "jar" ); + verifier.deleteArtifact( "test", "dep", "1", "pom" ); + verifier.deleteArtifact( "test", "dep2", "1", "pom" ); + verifier.deleteArtifact( "test", "dep2", "1", "jar" ); + + /* + * The Command Line Options (CLI) are passed to the + * verifier as a list. This is handy for things like + * redefining the local repository if needed. In + * this case, we use the -N flag so that Maven won't + * recurse. We are only installing the parent pom to + * the local repo here. + */ + List cliOptions = new ArrayList(); + + cliOptions.add( "-s" ); + cliOptions.add( settings.getAbsolutePath() ); + cliOptions.add( "-X" ); + + verifier.setCliOptions( cliOptions ); + + verifier.executeGoal( "compile" ); + + /* + * This is the simplest way to check a build + * succeeded. It is also the simplest way to create + * an IT test: make the build pass when the test + * should pass, and make the build fail when the + * test should fail. There are other methods + * supported by the verifier. They can be seen here: + * http://maven.apache.org/shared/maven-verifier/apidocs/index.html + */ + verifier.verifyErrorFreeLog(); + + /* + * Reset the streams before executing the verifier + * again. + */ + verifier.resetStreams(); + } + + private File writeSettings( File testDir ) + throws IOException + { + File settingsIn = new File( testDir, "settings.xml.in" ); + + String settingsContent = null; + Reader reader = null; + try + { + reader = new FileReader( settingsIn ); + settingsContent = IOUtil.toString( reader ); + } + finally + { + IOUtil.close( reader ); + } + + settingsContent = StringUtils.replace( settingsContent, + "@TESTDIR@", + testDir.getAbsolutePath() ); + + File settingsOut = new File( testDir, "settings.xml" ); + + System.out.println( "Writing tets settings to: " + settingsOut ); + + if ( settingsOut.exists() ) + { + settingsOut.delete(); + } + + Writer writer = null; + try + { + writer = new FileWriter( settingsOut ); + IOUtil.copy( settingsContent, writer ); + } + finally + { + IOUtil.close( writer ); + } + + return settingsOut; + } +} diff --git a/its/core-integration-tests/src/test/resources/mng-3482/pom.xml b/its/core-integration-tests/src/test/resources/mng-3482/pom.xml new file mode 100644 index 0000000000..df68b5c196 --- /dev/null +++ b/its/core-integration-tests/src/test/resources/mng-3482/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + org.apache.maven.its.mng3482 + mng-3482 + jar + 1 + + Integration Test Project for MNG-3482 + + This project verifies that MNG-3482 is fixed. It is controlled by a JUnit test called org.apache.maven.integrationtests.MNG3482Test + + + http://jira.codehaus.org/browse/MNG-3482 + + + + test + dep + 1 + pom + + + diff --git a/its/core-integration-tests/src/test/resources/mng-3482/readme.txt b/its/core-integration-tests/src/test/resources/mng-3482/readme.txt new file mode 100644 index 0000000000..978b4748b9 --- /dev/null +++ b/its/core-integration-tests/src/test/resources/mng-3482/readme.txt @@ -0,0 +1 @@ +Fill this in with a description of the scenario this test attempts to check. Also include instructions for running the test manually from the command line. \ No newline at end of file diff --git a/its/core-integration-tests/src/test/resources/mng-3482/repo/test/dep/1/dep-1.pom b/its/core-integration-tests/src/test/resources/mng-3482/repo/test/dep/1/dep-1.pom new file mode 100644 index 0000000000..4748bd0169 --- /dev/null +++ b/its/core-integration-tests/src/test/resources/mng-3482/repo/test/dep/1/dep-1.pom @@ -0,0 +1,14 @@ + + 4.0.0 + test + dep + 1 + + + + test + dep2 + ${project.version} + + + \ No newline at end of file diff --git a/its/core-integration-tests/src/test/resources/mng-3482/repo/test/dep2/1/dep2-1.jar b/its/core-integration-tests/src/test/resources/mng-3482/repo/test/dep2/1/dep2-1.jar new file mode 100644 index 0000000000000000000000000000000000000000..287a4c9859369a8e2ed08badc3c91e2ed4bc6ca9 GIT binary patch literal 1980 zcmWIWW@h1H0D-SFCt83RP=XUk`?`iW>U#RQ=?6fSaWH%VDx14;(!mU%bR7_jAS?5A z^z(Fc4Gz)sb^Gjl=CqHuuHHpnZ(Xf(XU=a9GPq*=;AxSL*SQlq-nvd4>`#`2O%c;R zpi;4OPIr*7cTjN2T&=YtGTcIwje|sMgii;32FiFD7keFe6sdW#^XST{0t-cA*H6ir z@KdeI?PFWoo|ru`3^125fL#W33>>fmStY5(C2+@MDgpT%tRyA1zzD7m;z?scnUz6| z3=E=73=G03>KqFS^pbNDi;HsuPkS*t3amMqEuZJ(<5QFUNRw;VgQLza0**E;qDmhh zWKQCF-BP=8CP&>gIT4#5jCE6PZ02lncy_@xy!?8|`9J?^|0{G0%iPjPxa-7QDlBbg zwlOu~_5nWUhfZxlu|_G;?zU}rN=-y~miF-+y{qz~`^m)bwMklYGY_PaqTqtVP9-kp@f{3iz}YFRODjt+V>J!Cu25sPt+(j>&#TqJ33oopi9BlS)>g>X{`0Nsn7fO> zN%d4itDmdo+8BA;m)sWKba?*r%heew=3@ExEOOAKA%5h9^s<)BhIxgT7UnJ4-0h;zR`?h zn8^RlJkB$8{6C=UC187>E%%%7~ynZ zctgapcT-~WC%-t#v^i;SkkH-7auY^K~a7|YEemMYH@Ix|5O>v10#bC5451gk?9jJ{Zsn7AAC0Idg|&u^wQBf>ErFA z$M`8Yh`VP8&~=PVBFwl;MxYacK!D+`BZ!74OoTS{j#) z1*J5TOFi?T9eJp0E+7Rk08-4Ux + 4.0.0 + test + dep2 + 1 + + \ No newline at end of file diff --git a/its/core-integration-tests/src/test/resources/mng-3482/settings.xml.in b/its/core-integration-tests/src/test/resources/mng-3482/settings.xml.in new file mode 100644 index 0000000000..d09e96fa5f --- /dev/null +++ b/its/core-integration-tests/src/test/resources/mng-3482/settings.xml.in @@ -0,0 +1,22 @@ + + + + remote-repository + + + testing-repo + file://@TESTDIR@/repo + + + + + testing-repo + file://@TESTDIR@/repo + + + + + + remote-repository + + \ No newline at end of file diff --git a/its/core-integration-tests/src/test/resources/mng-3482/src/main/java/tests/mng3482/AppMNG3482.java b/its/core-integration-tests/src/test/resources/mng-3482/src/main/java/tests/mng3482/AppMNG3482.java new file mode 100644 index 0000000000..332698b216 --- /dev/null +++ b/its/core-integration-tests/src/test/resources/mng-3482/src/main/java/tests/mng3482/AppMNG3482.java @@ -0,0 +1,5 @@ +package tests.mng3482; + +import test.dep2.App; + +public class AppMNG3482{} \ No newline at end of file