-
Notifications
You must be signed in to change notification settings - Fork 508
Description
Description
When multiple dependencies in an SBT project share the same version variable, and a new version for those dependencies is available, Scala Steward creates a commit that correctly updates the shared version variable. However, it then proceeds to create a second commit for another dependency that uses the same variable, but this time it incorrectly updates the version variable of an unrelated dependency which coincidently match the version.
Step to reproduce
Given the following dependencies on a SBT project:
object version {
val scalaTestPlus = "3.2.19.0"
val jackson = "2.19.0"
}
val jacksonDatabind =
"com.fasterxml.jackson.core" % "jackson-databind" % version.jackson
val jacksonModuleScala =
"com.fasterxml.jackson.module" %% "jackson-module-scala" % version.jackson
val scalaTestPlus =
"org.scalatestplus" %% "scalacheck-1-18" % version.scalaTestPlus
- A new version for the
com.fasterxml.jackson.core:jackson-databindandcom.fasterxml.jackson.module:jackson-module-scalaartifacts is released (e.g., 2.19.1). - Scala Steward runs and correctly identifies an update for jackson-databind. It creates a commit that updates the
version.jacksonvariable:
Commit message: Scala Steward: update jackson-databind from 2.19.0 to 2.19.1.
-- val jackson = "2.19.0"
++ val jackson = "2.19.1"
- Scala Steward then incorrectly attempts to update
jackson-module-scalain another commit, even though the sharedjacksonvariable was already updated.
Expected Behaviour
Scala Steward should recognize that the version.jackson variable, which controls the version for jackson-module-scala, has already been updated in the previous commit. No further action should be taken for this dependency.
Current Behaviour
It somehow replace part of scalaTestPlus variable to jackson-databind version.
Commit message:
Scala Steward: update jackson-module-scala from 2.19.0 to 2.19.1
-- val scalaTestPlus = "3.2.19.0"
++ val scalaTestPlus = "3.2.19.1"
Which is incorrect.
You can find a minimal example here.