From 62a20201de4fcfb8430f841b1a2c904e075e9989 Mon Sep 17 00:00:00 2001 From: Zainab Ali Date: Fri, 24 Apr 2026 03:25:47 -0400 Subject: [PATCH] [1.x] Add Test configuration to evictionWarningOptions (#9102) * Add Test configuration to evictionWarningOptions * Add Test configuration to default evictionWarningOptions * Deduplicate eviction errors based on callers. * Update eviction error test for semantic versioning. * Group evictions by configuration and update test. --- main/src/main/scala/sbt/Defaults.scala | 1 + main/src/main/scala/sbt/internal/LibraryManagement.scala | 5 ++++- .../dependency-management/evicted-test-config/build.sbt | 6 ++++++ .../dependency-management/evicted-test-config/test | 9 +++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 sbt-app/src/sbt-test/dependency-management/evicted-test-config/build.sbt create mode 100644 sbt-app/src/sbt-test/dependency-management/evicted-test-config/test diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 3f2163328..a651c1ff7 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -3840,6 +3840,7 @@ object Classpaths { transitiveUpdates = transitiveUpdate.value, uwConfig = (update / unresolvedWarningConfiguration).value, evictionLevel = evictionErrorLevel.value, + evictionWarningOptions = (update / evictionWarningOptions).value, versionSchemeOverrides = libraryDependencySchemes.value, assumedEvictionErrorLevel = assumedEvictionErrorLevel.value, assumedVersionScheme = assumedVersionScheme.value, diff --git a/main/src/main/scala/sbt/internal/LibraryManagement.scala b/main/src/main/scala/sbt/internal/LibraryManagement.scala index a069eebbb..11a82fcbd 100644 --- a/main/src/main/scala/sbt/internal/LibraryManagement.scala +++ b/main/src/main/scala/sbt/internal/LibraryManagement.scala @@ -41,6 +41,7 @@ private[sbt] object LibraryManagement { transitiveUpdates: Seq[UpdateReport], uwConfig: UnresolvedWarningConfiguration, evictionLevel: Level.Value, + evictionWarningOptions: EvictionWarningOptions, versionSchemeOverrides: Seq[ModuleID], assumedEvictionErrorLevel: Level.Value, assumedVersionScheme: String, @@ -75,7 +76,8 @@ private[sbt] object LibraryManagement { versionSchemeOverrides, assumedVersionScheme, assumedVersionSchemeJava, - assumedEvictionErrorLevel + assumedEvictionErrorLevel, + evictionWarningOptions.configurations, ) def extraLines = List( "", @@ -341,6 +343,7 @@ private[sbt] object LibraryManagement { transitiveUpdates = transitiveUpdate.value, uwConfig = (update / unresolvedWarningConfiguration).value, evictionLevel = Level.Debug, + evictionWarningOptions = EvictionWarningOptions.default, versionSchemeOverrides = Nil, assumedEvictionErrorLevel = Level.Debug, assumedVersionScheme = VersionScheme.Always, diff --git a/sbt-app/src/sbt-test/dependency-management/evicted-test-config/build.sbt b/sbt-app/src/sbt-test/dependency-management/evicted-test-config/build.sbt new file mode 100644 index 000000000..d101b9a18 --- /dev/null +++ b/sbt-app/src/sbt-test/dependency-management/evicted-test-config/build.sbt @@ -0,0 +1,6 @@ +// https://github.com/sbt/sbt/issues/8410 +scalaVersion := "3.3.7" +libraryDependencies ++= Seq( + "org.typelevel" %% "weaver-cats" % "0.11.1" % Test, + "com.siriusxm" %% "snapshot4s-weaver" % "0.2.2" % Test, +) diff --git a/sbt-app/src/sbt-test/dependency-management/evicted-test-config/test b/sbt-app/src/sbt-test/dependency-management/evicted-test-config/test new file mode 100644 index 000000000..eb96dfb34 --- /dev/null +++ b/sbt-app/src/sbt-test/dependency-management/evicted-test-config/test @@ -0,0 +1,9 @@ +# Update should fail as test dependencies have version conflicts +-> update +# Update should succeed if the error level is reduced to Warn +> set evictionErrorLevel := Level.Warn +> update +# Update should succeed if eviction options are less strict +> set evictionErrorLevel := Level.Error +> set update / evictionWarningOptions := EvictionWarningOptions.default.withConfigurations(Vector(Compile)) +> update