You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2025/03/21 19:24:23 UTC
(maven-plugin-testing) branch master updated: Upgrade to Maven 4.0.0-rc-3. (#84)
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-plugin-testing.git
The following commit(s) were added to refs/heads/master by this push:
new b66bbfc Upgrade to Maven 4.0.0-rc-3. (#84)
b66bbfc is described below
commit b66bbfcdf0d93584ee663eb563fb6885ab77aacc
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Fri Mar 21 20:24:18 2025 +0100
Upgrade to Maven 4.0.0-rc-3. (#84)
* Add missing `@Override` annotations.
* Upgrade to Maven 4.0.0-rc-3.
* Added private fields and public setter methods for the new methods added in `ProjectStub`.
No setter added for `SessionStub` because the previously existing methods were already returning null or empty collections.
* Add an empty `LookupStub` returned by `Session.getService(Lookup.class)` mock.
It resolves the `NullPointerException` observed during compiler plugin tests.
---
.github/release-drafter.yml | 4 +-
.../maven/api/plugin/testing/MojoExtension.java | 6 +-
.../api/plugin/testing/stubs/ArtifactStub.java | 5 +-
.../maven/api/plugin/testing/stubs/LookupStub.java | 68 ++++++++++++++++++++++
.../api/plugin/testing/stubs/ProjectStub.java | 46 ++++++++++++++-
.../testing/stubs/RepositorySystemSupplier.java | 64 ++++++++++----------
.../api/plugin/testing/stubs/SessionMock.java | 14 +++--
.../api/plugin/testing/stubs/SessionStub.java | 12 ++++
pom.xml | 2 +-
9 files changed, 175 insertions(+), 46 deletions(-)
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
index 245ddc2..f829205 100644
--- a/.github/release-drafter.yml
+++ b/.github/release-drafter.yml
@@ -23,6 +23,6 @@ tag-template: maven-plugin-testing-$RESOLVED_VERSION
include-pre-releases: true
prerelease: true
-header: |
+header: |
> [!WARNING]
- > This plugin is a Maven 4 plugin and requires Maven 4.0.0-rc-2 to run.
+ > This plugin is a Maven 4 plugin and requires Maven 4.0.0-rc-3 to run.
diff --git a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java
index 1c813a3..e300672 100644
--- a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java
+++ b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java
@@ -80,10 +80,10 @@ import org.apache.maven.configuration.internal.EnhancedComponentConfigurator;
import org.apache.maven.di.Injector;
import org.apache.maven.di.Key;
import org.apache.maven.di.impl.DIException;
+import org.apache.maven.impl.InternalSession;
+import org.apache.maven.impl.model.DefaultModelPathTranslator;
+import org.apache.maven.impl.model.DefaultPathTranslator;
import org.apache.maven.internal.impl.DefaultLog;
-import org.apache.maven.internal.impl.InternalSession;
-import org.apache.maven.internal.impl.model.DefaultModelPathTranslator;
-import org.apache.maven.internal.impl.model.DefaultPathTranslator;
import org.apache.maven.internal.xml.XmlNodeImpl;
import org.apache.maven.internal.xml.XmlPlexusConfiguration;
import org.apache.maven.lifecycle.internal.MojoDescriptorCreator;
diff --git a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/ArtifactStub.java b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/ArtifactStub.java
index df9e5c2..b1689d4 100644
--- a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/ArtifactStub.java
+++ b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/ArtifactStub.java
@@ -25,8 +25,8 @@ import org.apache.maven.api.ArtifactCoordinates;
import org.apache.maven.api.Version;
import org.apache.maven.api.VersionConstraint;
import org.apache.maven.api.annotations.Nonnull;
-import org.apache.maven.internal.impl.DefaultModelVersionParser;
-import org.apache.maven.internal.impl.DefaultVersionParser;
+import org.apache.maven.impl.DefaultModelVersionParser;
+import org.apache.maven.impl.DefaultVersionParser;
import org.eclipse.aether.util.version.GenericVersionScheme;
/**
@@ -96,6 +96,7 @@ public class ArtifactStub implements Artifact {
this.version = version;
}
+ @Override
public Version getBaseVersion() {
return getParser().parseVersion(baseVersion != null ? baseVersion : version);
}
diff --git a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/LookupStub.java b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/LookupStub.java
new file mode 100644
index 0000000..15f4e91
--- /dev/null
+++ b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/LookupStub.java
@@ -0,0 +1,68 @@
+/*
+ * 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.api.plugin.testing.stubs;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import org.apache.maven.api.services.Lookup;
+import org.apache.maven.api.services.LookupException;
+
+public class LookupStub implements Lookup {
+ /**
+ * A stub where all methods return an empty value when possible, or throw an exception otherwise.
+ */
+ public static final Lookup EMPTY = new LookupStub();
+
+ /**
+ * For sub-class constructors.
+ */
+ protected LookupStub() {}
+
+ @Override
+ public <T> T lookup(Class<T> type) {
+ throw new LookupException("This is only a stub.");
+ }
+
+ @Override
+ public <T> T lookup(Class<T> type, String string) {
+ throw new LookupException("This is only a stub.");
+ }
+
+ @Override
+ public <T> Optional<T> lookupOptional(Class<T> type) {
+ return Optional.empty();
+ }
+
+ @Override
+ public <T> Optional<T> lookupOptional(Class<T> type, String string) {
+ return Optional.empty();
+ }
+
+ @Override
+ public <T> List<T> lookupList(Class<T> type) {
+ return List.of();
+ }
+
+ @Override
+ public <T> Map<String, T> lookupMap(Class<T> type) {
+ return Map.of();
+ }
+}
diff --git a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/ProjectStub.java b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/ProjectStub.java
index 81b9021..e08d32c 100644
--- a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/ProjectStub.java
+++ b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/ProjectStub.java
@@ -36,6 +36,7 @@ import org.apache.maven.api.Type;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.model.Model;
import org.apache.maven.api.model.PluginContainer;
+import org.apache.maven.api.model.Profile;
/**
* @author Olivier Lamy
@@ -49,8 +50,11 @@ public class ProjectStub implements Project {
private Path pomPath;
private boolean topProject;
private Path rootDirectory;
- private Map<String, String> properties = new HashMap<>();
private ProducedArtifact mainArtifact;
+ private List<Profile> declaredProfiles = List.of();
+ private List<Profile> effectiveProfiles = List.of();
+ private List<Profile> declaredActiveProfiles = List.of();
+ private List<Profile> effectiveActiveProfiles = List.of();
public void setModel(Model model) {
this.model = model;
@@ -254,4 +258,44 @@ public class ProjectStub implements Project {
model = model.withProperties(props);
return this;
}
+
+ @Override
+ @SuppressWarnings("ReturnOfCollectionOrArrayField") // Safe because list is unmodifiable.
+ public List<Profile> getDeclaredProfiles() {
+ return declaredProfiles;
+ }
+
+ public void setDeclaredProfiles(List<Profile> values) {
+ declaredProfiles = List.copyOf(values);
+ }
+
+ @Override
+ @SuppressWarnings("ReturnOfCollectionOrArrayField") // Safe because list is unmodifiable.
+ public List<Profile> getEffectiveProfiles() {
+ return effectiveProfiles;
+ }
+
+ public void setEffectiveProfiles(List<Profile> values) {
+ effectiveProfiles = List.copyOf(values);
+ }
+
+ @Override
+ @SuppressWarnings("ReturnOfCollectionOrArrayField") // Safe because list is unmodifiable.
+ public List<Profile> getDeclaredActiveProfiles() {
+ return declaredActiveProfiles;
+ }
+
+ public void setDeclaredActiveProfiles(List<Profile> values) {
+ declaredActiveProfiles = List.copyOf(values);
+ }
+
+ @Override
+ @SuppressWarnings("ReturnOfCollectionOrArrayField") // Safe because list is unmodifiable.
+ public List<Profile> getEffectiveActiveProfiles() {
+ return effectiveActiveProfiles;
+ }
+
+ public void setEffectiveActiveProfiles(List<Profile> values) {
+ effectiveActiveProfiles = List.copyOf(values);
+ }
}
diff --git a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/RepositorySystemSupplier.java b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/RepositorySystemSupplier.java
index 7f8244b..5f7246d 100644
--- a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/RepositorySystemSupplier.java
+++ b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/RepositorySystemSupplier.java
@@ -26,38 +26,37 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Supplier;
import org.apache.maven.api.services.ModelBuilder;
-import org.apache.maven.internal.impl.DefaultModelUrlNormalizer;
-import org.apache.maven.internal.impl.DefaultModelVersionParser;
-import org.apache.maven.internal.impl.DefaultModelXmlFactory;
-import org.apache.maven.internal.impl.DefaultPluginConfigurationExpander;
-import org.apache.maven.internal.impl.DefaultSuperPomProvider;
-import org.apache.maven.internal.impl.DefaultUrlNormalizer;
-import org.apache.maven.internal.impl.model.DefaultDependencyManagementImporter;
-import org.apache.maven.internal.impl.model.DefaultDependencyManagementInjector;
-import org.apache.maven.internal.impl.model.DefaultInheritanceAssembler;
-import org.apache.maven.internal.impl.model.DefaultInterpolator;
-import org.apache.maven.internal.impl.model.DefaultModelBuilder;
-import org.apache.maven.internal.impl.model.DefaultModelCacheFactory;
-import org.apache.maven.internal.impl.model.DefaultModelInterpolator;
-import org.apache.maven.internal.impl.model.DefaultModelNormalizer;
-import org.apache.maven.internal.impl.model.DefaultModelPathTranslator;
-import org.apache.maven.internal.impl.model.DefaultModelProcessor;
-import org.apache.maven.internal.impl.model.DefaultModelValidator;
-import org.apache.maven.internal.impl.model.DefaultPathTranslator;
-import org.apache.maven.internal.impl.model.DefaultPluginManagementInjector;
-import org.apache.maven.internal.impl.model.DefaultProfileInjector;
-import org.apache.maven.internal.impl.model.DefaultProfileSelector;
-import org.apache.maven.internal.impl.model.rootlocator.DefaultRootLocator;
-import org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader;
-import org.apache.maven.internal.impl.resolver.DefaultModelResolver;
-import org.apache.maven.internal.impl.resolver.DefaultVersionRangeResolver;
-import org.apache.maven.internal.impl.resolver.DefaultVersionResolver;
-import org.apache.maven.internal.impl.resolver.MavenArtifactRelocationSource;
-import org.apache.maven.internal.impl.resolver.PluginsMetadataGeneratorFactory;
-import org.apache.maven.internal.impl.resolver.SnapshotMetadataGeneratorFactory;
-import org.apache.maven.internal.impl.resolver.VersionsMetadataGeneratorFactory;
-import org.apache.maven.internal.impl.resolver.relocation.DistributionManagementArtifactRelocationSource;
-import org.apache.maven.internal.impl.resolver.relocation.UserPropertiesArtifactRelocationSource;
+import org.apache.maven.impl.DefaultModelUrlNormalizer;
+import org.apache.maven.impl.DefaultModelVersionParser;
+import org.apache.maven.impl.DefaultModelXmlFactory;
+import org.apache.maven.impl.DefaultPluginConfigurationExpander;
+import org.apache.maven.impl.DefaultSuperPomProvider;
+import org.apache.maven.impl.DefaultUrlNormalizer;
+import org.apache.maven.impl.model.DefaultDependencyManagementImporter;
+import org.apache.maven.impl.model.DefaultDependencyManagementInjector;
+import org.apache.maven.impl.model.DefaultInheritanceAssembler;
+import org.apache.maven.impl.model.DefaultInterpolator;
+import org.apache.maven.impl.model.DefaultModelBuilder;
+import org.apache.maven.impl.model.DefaultModelInterpolator;
+import org.apache.maven.impl.model.DefaultModelNormalizer;
+import org.apache.maven.impl.model.DefaultModelPathTranslator;
+import org.apache.maven.impl.model.DefaultModelProcessor;
+import org.apache.maven.impl.model.DefaultModelValidator;
+import org.apache.maven.impl.model.DefaultPathTranslator;
+import org.apache.maven.impl.model.DefaultPluginManagementInjector;
+import org.apache.maven.impl.model.DefaultProfileInjector;
+import org.apache.maven.impl.model.DefaultProfileSelector;
+import org.apache.maven.impl.model.rootlocator.DefaultRootLocator;
+import org.apache.maven.impl.resolver.DefaultArtifactDescriptorReader;
+import org.apache.maven.impl.resolver.DefaultModelResolver;
+import org.apache.maven.impl.resolver.DefaultVersionRangeResolver;
+import org.apache.maven.impl.resolver.DefaultVersionResolver;
+import org.apache.maven.impl.resolver.MavenArtifactRelocationSource;
+import org.apache.maven.impl.resolver.PluginsMetadataGeneratorFactory;
+import org.apache.maven.impl.resolver.SnapshotMetadataGeneratorFactory;
+import org.apache.maven.impl.resolver.VersionsMetadataGeneratorFactory;
+import org.apache.maven.impl.resolver.relocation.DistributionManagementArtifactRelocationSource;
+import org.apache.maven.impl.resolver.relocation.UserPropertiesArtifactRelocationSource;
import org.eclipse.aether.RepositoryListener;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
@@ -1076,7 +1075,6 @@ public class RepositorySystemSupplier implements Supplier<RepositorySystem> {
new DefaultPluginConfigurationExpander(),
new DefaultModelVersionParser(getVersionScheme()),
List.of(),
- new DefaultModelCacheFactory(),
new DefaultModelResolver(),
new DefaultInterpolator(),
new DefaultPathTranslator(),
diff --git a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionMock.java b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionMock.java
index 9b99161..77d66d5 100644
--- a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionMock.java
+++ b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionMock.java
@@ -49,6 +49,7 @@ import org.apache.maven.api.services.ArtifactInstaller;
import org.apache.maven.api.services.ArtifactInstallerRequest;
import org.apache.maven.api.services.ArtifactManager;
import org.apache.maven.api.services.LocalRepositoryManager;
+import org.apache.maven.api.services.Lookup;
import org.apache.maven.api.services.ProjectBuilder;
import org.apache.maven.api.services.ProjectBuilderRequest;
import org.apache.maven.api.services.ProjectBuilderResult;
@@ -56,10 +57,10 @@ import org.apache.maven.api.services.ProjectManager;
import org.apache.maven.api.services.RepositoryFactory;
import org.apache.maven.api.services.VersionParser;
import org.apache.maven.api.services.xml.ModelXmlFactory;
-import org.apache.maven.internal.impl.DefaultModelVersionParser;
-import org.apache.maven.internal.impl.DefaultModelXmlFactory;
-import org.apache.maven.internal.impl.DefaultVersionParser;
-import org.apache.maven.internal.impl.InternalSession;
+import org.apache.maven.impl.DefaultModelVersionParser;
+import org.apache.maven.impl.DefaultModelXmlFactory;
+import org.apache.maven.impl.DefaultVersionParser;
+import org.apache.maven.impl.InternalSession;
import org.apache.maven.model.v4.MavenStaxReader;
import org.eclipse.aether.util.version.GenericVersionScheme;
import org.mockito.ArgumentMatchers;
@@ -383,6 +384,11 @@ public class SessionMock {
//
when(session.getService(ModelXmlFactory.class)).thenReturn(new DefaultModelXmlFactory());
+ //
+ // Lookup
+ //
+ when(session.getService(Lookup.class)).thenReturn(LookupStub.EMPTY);
+
//
// Other
//
diff --git a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionStub.java b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionStub.java
index 3190b0e..050fcd9 100644
--- a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionStub.java
+++ b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionStub.java
@@ -54,6 +54,7 @@ import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.annotations.Nullable;
import org.apache.maven.api.model.Repository;
import org.apache.maven.api.settings.Settings;
+import org.apache.maven.api.toolchain.ToolchainModel;
/**
*/
@@ -109,6 +110,7 @@ public class SessionStub implements Session {
}
@Nonnull
+ @Override
public Map<String, String> getEffectiveProperties(@Nullable Project project) {
HashMap<String, String> result = new HashMap<>(getSystemProperties());
if (project != null) {
@@ -443,4 +445,14 @@ public class SessionStub implements Session {
public PathScope requirePathScope(String id) {
return null;
}
+
+ @Override
+ public Optional<Version> resolveHighestVersion(ArtifactCoordinates artifact, List<RemoteRepository> repositories) {
+ return Optional.empty();
+ }
+
+ @Override
+ public Collection<ToolchainModel> getToolchains() {
+ return List.of();
+ }
}
diff --git a/pom.xml b/pom.xml
index adce11c..51e4b9f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,7 +65,7 @@ under the License.
<properties>
<surefire.version>3.5.1</surefire.version>
- <mavenVersion>4.0.0-rc-2</mavenVersion>
+ <mavenVersion>4.0.0-rc-3</mavenVersion>
<maven.site.path>plugin-testing-archives/LATEST</maven.site.path>
<javaVersion>17</javaVersion>
<project.build.outputTimestamp>2025-01-27T19:27:57Z</project.build.outputTimestamp>