Author: pgier Date: Wed May 14 13:19:26 2008 New Revision: 656403 URL: http://svn.apache.org/viewvc?rev=656403&view=rev Log: [MNG-3545] Adding test for profile activation and deactivation.
Added: maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3545ProfileDeactivation.java (with props) maven/core-integration-testing/trunk/core-integration-tests/src/test/resources/mng-3545-ProfileDeactivation/ maven/core-integration-testing/trunk/core-integration-tests/src/test/resources/mng-3545-ProfileDeactivation/pom.xml (with props) Modified: maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java Modified: maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java?rev=656403&r1=656402&r2=656403&view=diff ============================================================================== --- maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java (original) +++ maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java Wed May 14 13:19:26 2008 @@ -65,6 +65,7 @@ * a fail fast technique as well. */ + suite.addTestSuite( MavenITmng3545ProfileDeactivation.class ); suite.addTestSuite( MavenITmng3498ForkToOtherMojoTest.class ); suite.addTestSuite( MavenITmng3485OverrideWagonExtensionTest.class ); suite.addTestSuite( MavenITmng3482DependencyPomInterpolationTest.class ); Added: maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3545ProfileDeactivation.java URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3545ProfileDeactivation.java?rev=656403&view=auto ============================================================================== --- maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3545ProfileDeactivation.java (added) +++ maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3545ProfileDeactivation.java Wed May 14 13:19:26 2008 @@ -0,0 +1,196 @@ +package org.apache.maven.integrationtests; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; +import org.apache.maven.it.Verifier; +import org.apache.maven.it.util.ResourceExtractor; + +/** + * Test activation and deactivation of profiles. + * + */ +public class MavenITmng3545ProfileDeactivation + extends AbstractMavenIntegrationTestCase +{ + public MavenITmng3545ProfileDeactivation() + throws InvalidVersionSpecificationException + { + super( "(2.0.9,)" ); + } + + /** + * Test build with two active by default profiles + * + */ + public void testBasicBuildWithDefaultProfiles() + throws Exception + { + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545-ProfileDeactivation" ); + + Verifier verifier; + + verifier = new Verifier( testDir.getAbsolutePath() ); + + List cliOptions = new ArrayList(); + + verifier.setCliOptions( cliOptions ); + verifier.executeGoal( "package" ); + + verifier.verifyErrorFreeLog(); + // profile 1 and 2 are active by default + verifier.assertFilePresent( "target/profile1/touch.txt" ); + verifier.assertFilePresent( "target/profile2/touch.txt" ); + verifier.assertFileNotPresent( "target/profile3/touch.txt" ); + verifier.assertFileNotPresent( "target/profile4/touch.txt" ); + verifier.assertFileNotPresent( "target/profile5/touch.txt" ); + verifier.resetStreams(); + + } + + /** + * Test command line deactivation of active by default profiles. + * + */ + public void testDeactivateDefaultProfiles() + throws Exception + { + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545-ProfileDeactivation" ); + + Verifier verifier; + + verifier = new Verifier( testDir.getAbsolutePath() ); + + List cliOptions = new ArrayList(); + + // Deactivate active by default profiles + cliOptions.add( "-P-profile1" ); + cliOptions.add( "-P -profile2" ); + + verifier.setCliOptions( cliOptions ); + verifier.executeGoal( "package" ); + + verifier.verifyErrorFreeLog(); + verifier.assertFileNotPresent( "target/profile1/touch.txt" ); + verifier.assertFileNotPresent( "target/profile2/touch.txt" ); + verifier.resetStreams(); + + } + + /** + * Test command line deactivation of a profile that was activated + * by a property + * + */ + public void testDeactivateActivatedByProp() + throws Exception + { + + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545-ProfileDeactivation" ); + + Verifier verifier; + + verifier = new Verifier( testDir.getAbsolutePath() ); + + List cliOptions = new ArrayList(); + + // Activate with a prop, then deactivate + cliOptions.add( "-Dprofile3-active-by-property=true" ); + cliOptions.add( "-P-profile3" ); + + verifier.setCliOptions( cliOptions ); + verifier.executeGoal( "package" ); + + verifier.verifyErrorFreeLog(); + verifier.assertFilePresent( "target/profile1/touch.txt" ); + verifier.assertFilePresent( "target/profile2/touch.txt" ); + verifier.assertFileNotPresent( "target/profile3/touch.txt" ); + verifier.assertFileNotPresent( "target/profile4/touch.txt" ); + verifier.assertFileNotPresent( "target/profile5/touch.txt" ); + verifier.resetStreams(); + } + + /** + * Test that deactivating from the command line takes priority over + * activating from the command line. + * + */ + public void testActivateThenDeactivate() + throws Exception + { + + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545-ProfileDeactivation" ); + + Verifier verifier; + + verifier = new Verifier( testDir.getAbsolutePath() ); + + List cliOptions = new ArrayList(); + + // Activate then deactivate + cliOptions.add( "-Pprofile4" ); + cliOptions.add( "-P-profile4" ); + + verifier.setCliOptions( cliOptions ); + verifier.executeGoal( "package" ); + + verifier.verifyErrorFreeLog(); + verifier.assertFilePresent( "target/profile1/touch.txt" ); + verifier.assertFilePresent( "target/profile2/touch.txt" ); + verifier.assertFileNotPresent( "target/profile3/touch.txt" ); + verifier.assertFileNotPresent( "target/profile4/touch.txt" ); + verifier.assertFileNotPresent( "target/profile5/touch.txt" ); + verifier.resetStreams(); + } + + /** + * Test that default profiles are deactivated when another profile is + * activated. + * + */ + public void testDefaultProfileAutoDeactivation() + throws Exception + { + + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545-ProfileDeactivation" ); + + Verifier verifier; + + verifier = new Verifier( testDir.getAbsolutePath() ); + + List cliOptions = new ArrayList(); + + // Activate + cliOptions.add( "-Pprofile4" ); + + verifier.setCliOptions( cliOptions ); + verifier.executeGoal( "package" ); + + verifier.verifyErrorFreeLog(); + verifier.assertFileNotPresent( "target/profile1/touch.txt" ); + verifier.assertFileNotPresent( "target/profile2/touch.txt" ); + verifier.assertFileNotPresent( "target/profile3/touch.txt" ); + verifier.assertFilePresent( "target/profile4/touch.txt" ); + verifier.assertFileNotPresent( "target/profile5/touch.txt" ); + verifier.resetStreams(); + } + + /** + * remove the target dir after each test run + */ + public void tearDown() + throws IOException + { + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545-ProfileDeactivation" ); + + File targetDir = new File( testDir, "target" ); + if ( targetDir.exists() ) + { + targetDir.delete(); + } + } + +} Propchange: maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3545ProfileDeactivation.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3545ProfileDeactivation.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Added: maven/core-integration-testing/trunk/core-integration-tests/src/test/resources/mng-3545-ProfileDeactivation/pom.xml URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-integration-tests/src/test/resources/mng-3545-ProfileDeactivation/pom.xml?rev=656403&view=auto ============================================================================== --- maven/core-integration-testing/trunk/core-integration-tests/src/test/resources/mng-3545-ProfileDeactivation/pom.xml (added) +++ maven/core-integration-testing/trunk/core-integration-tests/src/test/resources/mng-3545-ProfileDeactivation/pom.xml Wed May 14 13:19:26 2008 @@ -0,0 +1,154 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven.its.mng3545</groupId> + <artifactId>test-artifact</artifactId> + <version>1.0-SNAPSHOT</version> + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.its.plugins</groupId> + <artifactId>maven-it-plugin-touch</artifactId> + <version>2.1-SNAPSHOT</version> + </plugin> + </plugins> + </pluginManagement> + </build> + <profiles> + <profile> + <id>profile1</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.its.plugins</groupId> + <artifactId>maven-it-plugin-touch</artifactId> + <executions> + <execution> + <id>profile1-touch</id> + <goals> + <goal>touch</goal> + </goals> + <configuration> + <outputDirectory>${project.build.directory}/profile1</outputDirectory> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>profile2</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.its.plugins</groupId> + <artifactId>maven-it-plugin-touch</artifactId> + <executions> + <execution> + <id>profile2-touch</id> + <goals> + <goal>touch</goal> + </goals> + <configuration> + <outputDirectory>${project.build.directory}/profile2</outputDirectory> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>profile3</id> + <activation> + <property> + <name>profile3-activation-property</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.its.plugins</groupId> + <artifactId>maven-it-plugin-touch</artifactId> + <executions> + <execution> + <id>profile3-touch</id> + <goals> + <goal>touch</goal> + </goals> + <configuration> + <outputDirectory>${project.build.directory}/profile3</outputDirectory> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>profile4</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.its.plugins</groupId> + <artifactId>maven-it-plugin-touch</artifactId> + <executions> + <execution> + <id>profile4-touch</id> + <goals> + <goal>touch</goal> + </goals> + <configuration> + <outputDirectory>${project.build.directory}/profile4</outputDirectory> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>profile5</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.its.plugins</groupId> + <artifactId>maven-it-plugin-touch</artifactId> + <executions> + <execution> + <id>profile5-touch</id> + <goals> + <goal>touch</goal> + </goals> + <configuration> + <outputDirectory>${project.build.directory}/profile5</outputDirectory> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <!--remove when the IT plugins are actually release--> + <pluginRepositories> + <pluginRepository> + <id>apache.snapshots</id> + <url>http://people.apache.org/repo/m2-snapshot-repository</url> + <snapshots> + <enabled>true</enabled> + </snapshots> + <releases> + <enabled>false</enabled> + </releases> + </pluginRepository> + </pluginRepositories> +</project> Propchange: maven/core-integration-testing/trunk/core-integration-tests/src/test/resources/mng-3545-ProfileDeactivation/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/core-integration-testing/trunk/core-integration-tests/src/test/resources/mng-3545-ProfileDeactivation/pom.xml ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision