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 <martin.desruisse...@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>

Reply via email to