This is an automated email from the ASF dual-hosted git repository.

mpochatkin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 25bf47e183e IGNITE-26482 ItApiCompatibilityTest can't find local 
module (#6630)
25bf47e183e is described below

commit 25bf47e183e2416fa3dd7fa7322718b15e6a149e
Author: Vadim Pakhnushev <[email protected]>
AuthorDate: Mon Sep 22 10:56:58 2025 +0300

    IGNITE-26482 ItApiCompatibilityTest can't find local module (#6630)
---
 .../ignite/internal/ItApiCompatibilityTest.java      |  2 --
 .../ignite/internal/CompatibilityTestBase.java       | 20 +++++++++++++++-----
 .../org/apache/ignite/internal/Dependencies.java     |  4 ++--
 .../compatibility/api/ApiCompatibilityTest.java      |  4 ++--
 .../compatibility/api/CompatibilityChecker.java      | 10 ++++++++--
 .../compatibility/api/CompatibilityInput.java        | 12 +++++++++++-
 6 files changed, 38 insertions(+), 14 deletions(-)

diff --git 
a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItApiCompatibilityTest.java
 
b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItApiCompatibilityTest.java
index 93d2af849f2..954a305fa3c 100644
--- 
a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItApiCompatibilityTest.java
+++ 
b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItApiCompatibilityTest.java
@@ -24,8 +24,6 @@ class ItApiCompatibilityTest {
 
     // TODO resolve or explain exclusions 
https://issues.apache.org/jira/browse/IGNITE-26365
     @ApiCompatibilityTest(
-            newVersion = "3.1.0-SNAPSHOT",
-            oldVersions = "3.0.0",
             exclude = ""
                     + "org.apache.ignite.Ignite#clusterNodes();" // deprecated
                     + "org.apache.ignite.Ignite#clusterNodesAsync();" // 
deprecated
diff --git 
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
 
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
index cf261726a63..7c70867fc8b 100644
--- 
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
+++ 
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
@@ -210,11 +210,7 @@ public abstract class CompatibilityTestBase extends 
BaseIgniteAbstractTest {
      * @return A list of base versions for a test.
      */
     public static List<String> baseVersions(int numLatest, String... 
skipVersions) {
-        Set<String> skipSet = 
Arrays.stream(skipVersions).collect(Collectors.toSet());
-        List<String> versions = IgniteVersions.INSTANCE.versions().stream()
-                .map(Version::version)
-                .filter(Predicate.not(skipSet::contains))
-                .collect(Collectors.toList());
+        List<String> versions = baseVersions(skipVersions);
         if (shouldTestAllVersions()) {
             return versions;
         } else {
@@ -224,6 +220,20 @@ public abstract class CompatibilityTestBase extends 
BaseIgniteAbstractTest {
         }
     }
 
+    /**
+     * Returns a list of base versions.
+     *
+     * @param skipVersions Array of strings to skip.
+     * @return A list of base versions for a test.
+     */
+    public static List<String> baseVersions(String... skipVersions) {
+        Set<String> skipSet = 
Arrays.stream(skipVersions).collect(Collectors.toSet());
+        return IgniteVersions.INSTANCE.versions().stream()
+                .map(Version::version)
+                .filter(Predicate.not(skipSet::contains))
+                .collect(Collectors.toList());
+    }
+
     private static boolean shouldTestAllVersions() {
         String value = System.getProperty("testAllVersions");
         if (value != null) {
diff --git 
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/Dependencies.java
 
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/Dependencies.java
index c05192b9285..47c9f289140 100644
--- 
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/Dependencies.java
+++ 
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/Dependencies.java
@@ -41,11 +41,11 @@ public class Dependencies {
     /**
      * Provides the path to the dependency(s). Uses ; to separate jar files.
      */
-    public static String path(String dependencyNotation, boolean transitive) {
+    public static String path(String dependencyNotation, boolean transitive, 
boolean currentVersion) {
         LOG.info("Resolving path for dependency: " + dependencyNotation);
         File projectRoot = getProjectRoot();
 
-        if (dependencyNotation.contains("SNAPSHOT")) {
+        if (currentVersion) {
             String local = path(projectRoot, dependencyNotation);
             if (!local.isEmpty()) {
                 return local;
diff --git 
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/ApiCompatibilityTest.java
 
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/ApiCompatibilityTest.java
index 250c0aa0a53..7d0cedfdb07 100644
--- 
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/ApiCompatibilityTest.java
+++ 
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/ApiCompatibilityTest.java
@@ -52,9 +52,9 @@ public @interface ApiCompatibilityTest {
     String[] oldVersions() default {};
 
     /**
-     * Module new version to check compatibility for.
+     * Module new version to check compatibility for. If empty, current 
version is used.
      */
-    String newVersion();
+    String newVersion() default "";
 
     /**
      * List of modules to check. If empty, all modules are checked.
diff --git 
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityChecker.java
 
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityChecker.java
index 5ee78aeeb0c..f3c4135b0ae 100644
--- 
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityChecker.java
+++ 
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityChecker.java
@@ -51,8 +51,8 @@ class CompatibilityChecker {
      */
     static CompatibilityOutput check(CompatibilityInput input) {
         String[] args = {
-                "--old", Dependencies.path(input.oldVersionNotation(), false),
-                "--new", Dependencies.path(input.newVersionNotation(), false),
+                "--old", Dependencies.path(input.oldVersionNotation(), false, 
false),
+                "--new", Dependencies.path(input.newVersionNotation(), false, 
input.currentVersion()),
                 "--exclude", input.exclude(),
                 "--markdown",
                 "--only-incompatible",
@@ -96,6 +96,12 @@ class CompatibilityChecker {
             xmlOutputGeneratorOptions.setCreateSchemaFile(true);
             
xmlOutputGeneratorOptions.setSemanticVersioningInformation(semverOut.generate());
             XmlOutputGenerator xmlGenerator = new 
XmlOutputGenerator(javaApiClasses, options, xmlOutputGeneratorOptions);
+            try {
+                
Files.createDirectories(Paths.get(options.getXmlOutputFile().get()).getParent());
+            } catch (IOException e) {
+                throw new 
JApiCmpException(JApiCmpException.Reason.IoException, "Could not create 
directories for XML file: "
+                        + e.getMessage(), e);
+            }
             try (XmlOutput xmlOutput = xmlGenerator.generate()) {
                 XmlOutputGenerator.writeToFiles(options, xmlOutput);
             } catch (Exception e) {
diff --git 
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityInput.java
 
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityInput.java
index b15c857b5d9..d2c8f7de1b0 100644
--- 
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityInput.java
+++ 
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityInput.java
@@ -17,17 +17,23 @@
 
 package org.apache.ignite.internal.compatibility.api;
 
+import static org.apache.ignite.internal.util.StringUtils.nullOrEmpty;
+
+import org.apache.ignite.internal.properties.IgniteProperties;
+
 class CompatibilityInput {
     private final String module;
     private final String oldVersion;
     private final String newVersion;
     private final String exclude;
     private final boolean errorOnIncompatibility;
+    private final boolean currentVersion;
 
     CompatibilityInput(String module, String oldVersion, ApiCompatibilityTest 
annotation) {
         this.module = module;
         this.oldVersion = oldVersion;
-        this.newVersion = annotation.newVersion();
+        currentVersion = nullOrEmpty(annotation.newVersion());
+        this.newVersion = currentVersion ? 
IgniteProperties.get(IgniteProperties.VERSION) : annotation.newVersion();
         this.exclude = annotation.exclude();
         this.errorOnIncompatibility = annotation.errorOnIncompatibility();
     }
@@ -59,4 +65,8 @@ class CompatibilityInput {
     boolean errorOnIncompatibility() {
         return errorOnIncompatibility;
     }
+
+    boolean currentVersion() {
+        return currentVersion;
+    }
 }

Reply via email to