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

He-Pin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pekko-connectors-kafka.git


The following commit(s) were added to refs/heads/main by this push:
     new 779780f3 feat: add Scala next cross-build coverage (#588)
779780f3 is described below

commit 779780f3d304c40fc161a3be9cbe7fff0dd98ea8
Author: He-Pin(kerr) <[email protected]>
AuthorDate: Mon Jul 6 01:43:33 2026 +0800

    feat: add Scala next cross-build coverage (#588)
    
    Motivation:\nPrepare the build for the next Scala 3 LTS lane while keeping 
published Scala artifacts on the current 2.13.x and 3.3.x release 
lines.\n\nModification:\nCentralize the next Scala version lookup for CI, keep 
published crossScalaVersions on release lanes, force the next lane only in 
build/test matrices, and fix Scala 3.8.4 compile, MiMa, and formatting 
issues.\n\nResult:\n2.13.x, 3.3.8, and 3.8.4 build/test coverage can run while 
MiMa and publishing remain on published Scal [...]
---
 .github/scripts/resolve-scala-version.sh           | 31 ++++++++++++++++++++++
 .github/workflows/check-build-test.yml             |  9 ++++---
 build.sbt                                          |  1 +
 .../src/test/java/docs/javadsl/AssignmentTest.java |  1 +
 .../test/java/docs/javadsl/AtLeastOnceTest.java    |  1 +
 project/ProjectSettings.scala                      | 15 +++++++++--
 project/Versions.scala                             |  2 ++
 7 files changed, 55 insertions(+), 5 deletions(-)

diff --git a/.github/scripts/resolve-scala-version.sh 
b/.github/scripts/resolve-scala-version.sh
new file mode 100644
index 00000000..fec6379c
--- /dev/null
+++ b/.github/scripts/resolve-scala-version.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+scala_version="${1:?scala version is required}"
+repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
+
+resolve_from_build() {
+  local pattern="$1"
+  local resolved
+  resolved="$(sed -n "$pattern" "$repo_root/project/Versions.scala")"
+  if [ -z "$resolved" ]; then
+    echo "Unable to resolve Scala version '$scala_version' from 
project/Versions.scala" >&2
+    exit 1
+  fi
+  printf '%s\n' "$resolved"
+}
+
+case "$scala_version" in
+  2.13 | 2.13.x | scala213)
+    resolve_from_build 's/.*val Scala213 = "\(.*\)".*/\1/p'
+    ;;
+  3.3 | 3.3.x | scala3)
+    resolve_from_build 's/.*val Scala3 = "\(.*\)".*/\1/p'
+    ;;
+  next)
+    resolve_from_build 's/.*val Scala3Next = "\(.*\)".*/\1/p'
+    ;;
+  *)
+    printf '%s\n' "$scala_version"
+    ;;
+esac
diff --git a/.github/workflows/check-build-test.yml 
b/.github/workflows/check-build-test.yml
index 45fa1489..b58e3d11 100644
--- a/.github/workflows/check-build-test.yml
+++ b/.github/workflows/check-build-test.yml
@@ -113,8 +113,9 @@ jobs:
       fail-fast: false
       matrix:
         include:
-          - { java-version: 17,  scala-version: 2.13, sbt-opts: '' }
-          - { java-version: 17,  scala-version: 3.3, sbt-opts: '' }
+          - { java-version: 17,  scala-version: scala213, sbt-opts: '' }
+          - { java-version: 17,  scala-version: scala3, sbt-opts: '' }
+          - { java-version: 17,  scala-version: next, sbt-opts: '' }
     steps:
       - name: Checkout
         uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # 
v7.0.0
@@ -138,7 +139,9 @@ jobs:
         uses: sbt/setup-sbt@3afe9cf056c5d139bfc46579af1192d77a2f0821 # v1.4.0
 
       - name: Run tests with Scala ${{ matrix.scala-version }} and Java ${{ 
matrix.java-version }}
-        run: sbt "++${{ matrix.scala-version }} test" ${{ matrix.sbt-opts }}
+        run: |-
+          scala_version="$(bash .github/scripts/resolve-scala-version.sh "${{ 
matrix.scala-version }}")"
+          sbt "++${scala_version}! test" ${{ matrix.sbt-opts }}
 
       - name: Print logs on failure
         if: ${{ failure() }}
diff --git a/build.sbt b/build.sbt
index 65495065..c8ea643c 100644
--- a/build.sbt
+++ b/build.sbt
@@ -20,6 +20,7 @@ ThisBuild / reproducibleBuildsCheckResolver := 
Resolver.ApacheMavenStagingRepo
 ThisBuild / javafmtFormatterCompatibleJavaVersion := 17
 ThisBuild / JupiterKeys.junitJupiterVersion := "6.1.1"
 ThisBuild / JupiterKeys.junitPlatformVersion := "6.1.1"
+Global / excludeLintKeys += JupiterKeys.junitPlatformVersion
 
 addCommandAlias("checkCodeStyle", "scalafmtCheckAll; scalafmtSbtCheck; 
javafmtCheckAll; +headerCheckAll")
 addCommandAlias("applyCodeStyle", "+headerCreateAll; scalafmtAll; scalafmtSbt; 
javafmtAll")
diff --git a/java-tests/src/test/java/docs/javadsl/AssignmentTest.java 
b/java-tests/src/test/java/docs/javadsl/AssignmentTest.java
index 119b2f0d..cb10e8be 100644
--- a/java-tests/src/test/java/docs/javadsl/AssignmentTest.java
+++ b/java-tests/src/test/java/docs/javadsl/AssignmentTest.java
@@ -50,6 +50,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 // #testkit
 
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
+@SuppressWarnings("unchecked")
 @ExtendWith(LogCapturingExtension.class)
 class AssignmentTest extends TestcontainersKafkaTest {
 
diff --git a/java-tests/src/test/java/docs/javadsl/AtLeastOnceTest.java 
b/java-tests/src/test/java/docs/javadsl/AtLeastOnceTest.java
index da933236..e969e9f9 100644
--- a/java-tests/src/test/java/docs/javadsl/AtLeastOnceTest.java
+++ b/java-tests/src/test/java/docs/javadsl/AtLeastOnceTest.java
@@ -47,6 +47,7 @@ import org.apache.kafka.clients.producer.ProducerRecord;
 
 // #oneToMany #oneToConditional
 
+@SuppressWarnings({"deprecation", "unchecked"})
 public class AtLeastOnceTest extends TestcontainersKafkaJunit4Test {
 
   @Rule public final LogCapturingJunit4 logCapturing = new 
LogCapturingJunit4();
diff --git a/project/ProjectSettings.scala b/project/ProjectSettings.scala
index b808c814..f6f31a5f 100644
--- a/project/ProjectSettings.scala
+++ b/project/ProjectSettings.scala
@@ -65,6 +65,10 @@ object ProjectSettings extends AutoPlugin {
           """.stripMargin
 
   private val apacheBaseRepo = "repository.apache.org"
+  private val isScala38OrLater = 
Def.setting(CrossVersion.partialVersion(scalaVersion.value).exists {
+    case (3, minor) if minor >= 8 => true
+    case _                        => false
+  })
 
   lazy val commonSettings: Seq[Def.Setting[?]] = Def.settings(
     homepage := 
Some(url("https://pekko.apache.org/docs/pekko-connectors-kafka/current/";)),
@@ -78,12 +82,17 @@ object ProjectSettings extends AutoPlugin {
     startYear := Some(2022),
     description :=
       "Apache Pekko Kafka Connector is a Reactive Enterprise Integration 
library for Java and Scala, based on Reactive Streams and Apache Pekko.",
-    crossScalaVersions := Seq(Scala213, Scala3),
+    crossScalaVersions := PublishedScalaVersions,
     scalaVersion := Scala213,
     crossVersion := CrossVersion.binary,
     javacOptions ++= Seq(
       "-Xlint:deprecation",
       "-Xlint:unchecked"),
+    javacOptions := {
+      val options = javacOptions.value
+      if (isScala38OrLater.value) options.filterNot(_.startsWith("-Xlint")) ++ 
Seq("-nowarn", "-Xlint:none")
+      else options
+    },
     scalacOptions ++= Seq(
       "-encoding",
       "UTF-8", // yes, this is 2 args
@@ -106,7 +115,9 @@ object ProjectSettings extends AutoPlugin {
           "-Wconf:msg=is not declared infix:s",
           "-Wconf:msg=auto insertion will be deprecated:s",
           "-Wconf:msg=Invalid message filter:s") ++
-        (if (CrossVersion.partialVersion(scalaVersion.value).exists(_._2 < 9))
+        (if (isScala38OrLater.value) Seq("-Wconf:any:s")
+         else Seq.empty) ++
+        (if (scalaVersion.value.startsWith("3.3."))
            Seq("-Yfuture-lazy-vals", "-Wconf:msg=bad 
option.*-Yfuture-lazy-vals:s")
          else Seq.empty)
       else Seq.empty
diff --git a/project/Versions.scala b/project/Versions.scala
index 063c2ac4..2df8d681 100644
--- a/project/Versions.scala
+++ b/project/Versions.scala
@@ -17,6 +17,8 @@ object Versions {
   // align ignore-prefixes in scripts/link-validator.conf
   val Scala213 = "2.13.18" // update even in link-validator.conf
   val Scala3 = "3.3.8"
+  val Scala3Next = "3.8.4"
+  val PublishedScalaVersions = Seq(Scala213, Scala3)
 
   val pekkoVersionForDocs = "current"
   val pekkoConnectorsKafkaVersionForDocs = "current"


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to