This is an automated email from the ASF dual-hosted git repository. martinkanters pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-integration-testing.git
The following commit(s) were added to refs/heads/master by this push: new 4db5702 [MNG-7051] Optionally skip non-existing profiles and break on missing required profiles. 4db5702 is described below commit 4db57020f28776e83674e6b7cf505b003dee0e7d Author: Maarten Mulders <mthmuld...@apache.org> AuthorDate: Wed Dec 9 11:49:52 2020 +0100 [MNG-7051] Optionally skip non-existing profiles and break on missing required profiles. --- .../org/apache/maven/it/IntegrationTestSuite.java | 1 + .../MavenITmng2309ProfileInjectionOrderTest.java | 18 ++- ...MavenITmng3641ProfileActivationWarningTest.java | 2 +- .../maven/it/MavenITmng3732ActiveProfilesTest.java | 9 +- ...ng4106InterpolationUsesDominantProfileTest.java | 9 +- ...avenITmng7051OptionalProfileActivationTest.java | 128 +++++++++++++++++++++ .../mng-7051-optional-profile-activation/pom.xml | 37 ++++++ 7 files changed, 196 insertions(+), 8 deletions(-) diff --git a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java index 027587f..337e1a9 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java @@ -106,6 +106,7 @@ public class IntegrationTestSuite // Tests that don't run stable and need to be fixed // ------------------------------------------------------------------------------------------------------------- // suite.addTestSuite( MavenIT0108SnapshotUpdateTest.class ); -- MNG-3137 + suite.addTestSuite( MavenITmng7051OptionalProfileActivationTest.class ); suite.addTestSuite( MavenITmng6957BuildConsumer.class ); suite.addTestSuite( MavenITmng7045DropUselessAndOutdatedCdiApiTest.class ); suite.addTestSuite( MavenITmng6566ExecuteAnnotationShouldNotReExecuteGoalsTest.class ); diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2309ProfileInjectionOrderTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2309ProfileInjectionOrderTest.java index 2f46491..7666aa4 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2309ProfileInjectionOrderTest.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2309ProfileInjectionOrderTest.java @@ -22,7 +22,6 @@ package org.apache.maven.it; import java.io.File; import java.util.Properties; -import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; /** @@ -52,10 +51,19 @@ public class MavenITmng2309ProfileInjectionOrderTest verifier.setAutoclean( false ); verifier.addCliOption( "--settings" ); verifier.addCliOption( "settings.xml" ); - verifier.addCliOption( "-P" - + "pom-a,pom-b,pom-e,pom-c,pom-d" - + ",profiles-a,profiles-b,profiles-e,profiles-c,profiles-d" - + ",settings-a,settings-b,settings-e,settings-c,settings-d" ); + if ( matchesVersionRange( "[4.0.0-alpha-1,)" ) ) + { + verifier.addCliOption( "-P" + + "pom-a,pom-b,pom-e,pom-c,pom-d" + + ",settings-a,settings-b,settings-e,settings-c,settings-d" ); + } + else + { + verifier.addCliOption( "-P" + + "pom-a,pom-b,pom-e,pom-c,pom-d" + + ",profiles-a,profiles-b,profiles-e,profiles-c,profiles-d" + + ",settings-a,settings-b,settings-e,settings-c,settings-d" ); + } verifier.executeGoal( "validate" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3641ProfileActivationWarningTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3641ProfileActivationWarningTest.java index 11fc0ef..778c662 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3641ProfileActivationWarningTest.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3641ProfileActivationWarningTest.java @@ -35,7 +35,7 @@ public class MavenITmng3641ProfileActivationWarningTest public MavenITmng3641ProfileActivationWarningTest() { - super( "[2.0.11,2.1.0-M1),[2.1.0,)" ); // only test in 2.0.11+, 2.1.0+ + super( "[2.0.11,2.1.0-M1),[2.1.0,4.0.0-alpha-1)" ); // only test in 2.0.11+, 2.1.0+ } public void testitMNG3641() diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3732ActiveProfilesTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3732ActiveProfilesTest.java index bdf95f6..b47f300 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3732ActiveProfilesTest.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3732ActiveProfilesTest.java @@ -56,7 +56,14 @@ public class MavenITmng3732ActiveProfilesTest verifier.deleteDirectory( "target" ); verifier.addCliOption( "--settings" ); verifier.addCliOption( "settings.xml" ); - verifier.addCliOption( "-Ppom,profiles,settings" ); + if ( matchesVersionRange( "[4.0.0-alpha-1,)" ) ) + { + verifier.addCliOption( "-Ppom,settings" ); + } + else + { + verifier.addCliOption( "-Ppom,profiles,settings" ); + } verifier.executeGoal( "validate" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4106InterpolationUsesDominantProfileTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4106InterpolationUsesDominantProfileTest.java index 83f45ba..28a4afe 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4106InterpolationUsesDominantProfileTest.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4106InterpolationUsesDominantProfileTest.java @@ -54,7 +54,14 @@ public class MavenITmng4106InterpolationUsesDominantProfileTest verifier.setAutoclean( false ); verifier.addCliOption( "--settings" ); verifier.addCliOption( "settings.xml" ); - verifier.addCliOption( "-Ppom-a,pom-b,profiles-a,profiles-b,settings-a,settings-b" ); + if ( matchesVersionRange( "[4.0.0-alpha-1,)" ) ) + { + verifier.addCliOption( "-Ppom-a,pom-b,settings-a,settings-b" ); + } + else + { + verifier.addCliOption( "-Ppom-a,pom-b,profiles-a,profiles-b,settings-a,settings-b" ); + } verifier.executeGoal( "validate" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng7051OptionalProfileActivationTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng7051OptionalProfileActivationTest.java new file mode 100644 index 0000000..6682ada --- /dev/null +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng7051OptionalProfileActivationTest.java @@ -0,0 +1,128 @@ +package org.apache.maven.it; + +/* + * 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. + */ + +import org.apache.maven.it.util.ResourceExtractor; + +import java.io.File; +import java.io.IOException; + +public class MavenITmng7051OptionalProfileActivationTest + extends AbstractMavenIntegrationTestCase +{ + private static final String PROJECT_PATH = "/mng-7051-optional-profile-activation"; + + public MavenITmng7051OptionalProfileActivationTest() + { + super( "[4.0.0-alpha-1,)" ); + } + + /** + * This test verifies that activating a non-existing profile breaks the build. + */ + public void testActivatingNonExistingProfileBreaks() throws IOException, VerificationException + { + final File projectDir = ResourceExtractor.simpleExtractResources( getClass(), PROJECT_PATH ); + final Verifier verifier = newVerifier( projectDir.getAbsolutePath() ); + + verifier.addCliOption( "-P" ); + verifier.addCliOption( "non-existing-profile" ); + verifier.setLogFileName( "test-breaking.txt" ); + + try + { + verifier.executeGoal( "validate" ); + fail( "Activated a non-existing profile without ? prefix should break the build, but it didn't." ); + } + catch ( VerificationException ve ) + { + // Inspect the reason why the build broke. + verifier.verifyTextInLog( "[ERROR] The requested profiles [non-existing-profile] could not be activated or deactivated because they do not exist." ); + } + } + + /** + * This test verifies that activating a non-existing profile does not break the build when it is prefixed with <strong>?</strong>. + */ + public void testActivatingNonExistingProfileWithQuestionMarkDoesNotBreak() throws IOException, VerificationException + { + final File projectDir = ResourceExtractor.simpleExtractResources( getClass(), PROJECT_PATH ); + final Verifier verifier = newVerifier( projectDir.getAbsolutePath() ); + + verifier.addCliOption( "-P" ); + verifier.addCliOption( "?non-existing-profile" ); + verifier.setLogFileName( "test-non-breaking.txt" ); + + verifier.executeGoal( "validate" ); + verifier.verifyErrorFreeLog(); + verifier.verifyTextInLog( "[WARNING] The requested optional profiles [non-existing-profile] could not be activated or deactivated because they do not exist." ); + } + + /** + * This test verifies that activating both an existing and a non-existing profile does not break the build when it the latter is prefixed with <strong>?</strong>. + */ + public void testActivatingExistingAndNonExistingProfiles() throws IOException, VerificationException + { + final File projectDir = ResourceExtractor.simpleExtractResources( getClass(), PROJECT_PATH ); + final Verifier verifier = newVerifier( projectDir.getAbsolutePath() ); + + verifier.addCliOption( "-P" ); + verifier.addCliOption( "?non-existing-profile,existing" ); + verifier.setLogFileName( "test-non-breaking-mixed.txt" ); + + verifier.executeGoal( "validate" ); + verifier.verifyErrorFreeLog(); + verifier.verifyTextInLog( "[WARNING] The requested optional profiles [non-existing-profile] could not be activated or deactivated because they do not exist." ); + } + + /** + * This test verifies that deactivating a non-existing profile does not break the build when it is prefixed with <strong>?</strong>. + */ + public void testDeactivatingNonExistingProfileWithQuestionMarkDoesNotBreak() throws IOException, VerificationException + { + final File projectDir = ResourceExtractor.simpleExtractResources( getClass(), PROJECT_PATH ); + final Verifier verifier = newVerifier( projectDir.getAbsolutePath() ); + + verifier.addCliOption( "-P" ); + verifier.addCliOption( "!?non-existing-profile" ); + verifier.setLogFileName( "test-deactivating-non-breaking.txt" ); + + verifier.executeGoal( "validate" ); + verifier.verifyErrorFreeLog(); + verifier.verifyTextInLog( "[WARNING] The requested optional profiles [non-existing-profile] could not be activated or deactivated because they do not exist." ); + } + + /** + * This test verifies that deactivating both an existing and a non-existing profile does not break the build when it the latter is prefixed with <strong>?</strong>. + */ + public void testDeactivatingExistingAndNonExistingProfiles() throws IOException, VerificationException + { + final File projectDir = ResourceExtractor.simpleExtractResources( getClass(), PROJECT_PATH ); + final Verifier verifier = newVerifier( projectDir.getAbsolutePath() ); + + verifier.addCliOption( "-P" ); + verifier.addCliOption( "!?non-existing-profile,!existing" ); + verifier.setLogFileName( "test-deactivating-non-breaking-mixed.txt" ); + + verifier.executeGoal( "validate" ); + verifier.verifyErrorFreeLog(); + verifier.verifyTextInLog( "[WARNING] The requested optional profiles [non-existing-profile] could not be activated or deactivated because they do not exist." ); + } +} diff --git a/core-it-suite/src/test/resources/mng-7051-optional-profile-activation/pom.xml b/core-it-suite/src/test/resources/mng-7051-optional-profile-activation/pom.xml new file mode 100644 index 0000000..0963c0b --- /dev/null +++ b/core-it-suite/src/test/resources/mng-7051-optional-profile-activation/pom.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- +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. +--> + +<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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.maven.its.mng7051</groupId> + <artifactId>profile-selection</artifactId> + <version>1.0</version> + + <profiles> + <profile> + <id>existing</id> + </profile> + </profiles> + +</project> \ No newline at end of file