[MNG-7804] IT for plugin execution order ()

This commit is contained in:
Guillaume Nodet 2023-10-16 13:29:31 +02:00 committed by GitHub
parent cf71c396dd
commit 121980470a
3 changed files with 122 additions and 0 deletions
its/core-it-suite/src/test
java/org/apache/maven/it
resources/mng-7804-plugin-execution-order

View File

@ -0,0 +1,65 @@
/*
* 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.it;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.maven.shared.verifier.Verifier;
import org.apache.maven.shared.verifier.util.ResourceExtractor;
import org.junit.jupiter.api.Test;
/**
* This is a test set for <a href="https://issues.apache.org/jira/browse/MNG-7804">MNG-7804</a>.
* Verifies that plugin execution can be ordered across different plugins.
*
*/
class MavenITmng7804PluginExecutionOrderTest extends AbstractMavenIntegrationTestCase {
public MavenITmng7804PluginExecutionOrderTest() {
super("[4.0.0-alpha-6,)");
}
/**
* Verify that plugin executions are executed in order
*
* @throws Exception in case of failure
*/
@Test
void testOrder() throws Exception {
File testDir = ResourceExtractor.simpleExtractResources(getClass(), "/mng-7804-plugin-execution-order");
Verifier verifier = newVerifier(testDir.getAbsolutePath());
verifier.addCliArgument("clean");
verifier.execute();
verifier.verifyErrorFreeLog();
List<String> executions = Files.lines(Paths.get(verifier.getBasedir(), verifier.getLogFileName()))
.filter(l -> l.contains(" This should be "))
.collect(Collectors.toList());
assertEquals(4, executions.size());
assertTrue(executions.get(0).contains("100"));
assertTrue(executions.get(1).contains("200"));
assertTrue(executions.get(2).contains("300"));
assertTrue(executions.get(3).contains("400"));
}
}

View File

@ -120,6 +120,7 @@ public class TestSuiteOrdering implements ClassOrderer {
* the tests are to finishing. Newer tests are also more likely to fail, so this is
* a fail fast technique as well.
*/
suite.addTestSuite(MavenITmng7804PluginExecutionOrderTest.class);
suite.addTestSuite(MavenITmng7836AlternativePomSyntaxTest.class);
suite.addTestSuite(MavenITmng7891ConfigurationForExtensionsTest.class);
suite.addTestSuite(MavenITmng6401ProxyPortInterpolationTest.class);

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.1.0 http://maven.apache.org/xsd/maven-4.1.0.xsd">
<groupId>mng7804</groupId>
<artifactId>plugin-execution-order</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>100. This should be first</id>
<goals>
<goal>clean</goal>
</goals>
<phase>clean</phase>
<priority>100</priority>
</execution>
<execution>
<id>300. This should be third</id>
<goals>
<goal>clean</goal>
</goals>
<phase>clean</phase>
<priority>300</priority>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>200. This should be second</id>
<goals>
<goal>run</goal>
</goals>
<phase>clean</phase>
<priority>200</priority>
</execution>
<execution>
<id>400. This should be fourth</id>
<goals>
<goal>run</goal>
</goals>
<phase>clean</phase>
<priority>400</priority>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>