diff --git a/CHANGELOG.md b/CHANGELOG.md index 27e8c6e0..5b51e993 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,12 +13,17 @@ See also the [CHANGELOG](https://github.com/cucumber/cucumber-jvm/blob/master/CH ### Changed +- [Core] Updated `cucumber-core` dependency to [7.5.0](https://github.com/cucumber/cucumber-jvm/blob/main/CHANGELOG.md) +- [Scala] Upgrade `scala-collection-compat` to 2.8.0 + ### Deprecated ### Removed ### Fixed +- [Scala] Process glue classes distinctly ([#2582](https://github.com/cucumber/cucumber-jvm/pull/2582)) + ## [8.5.1] (2022-06-24) ### Changed diff --git a/build.sbt b/build.sbt index f86b7714..69bfe31f 100644 --- a/build.sbt +++ b/build.sbt @@ -38,7 +38,7 @@ scalaVersion := scala213 // Library versions -val cucumberVersion = "7.4.1" +val cucumberVersion = "7.5.0" val jacksonVersion = "2.13.3" val mockitoScalaVersion = "1.17.7" val junitVersion = "4.13.2" diff --git a/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaBackend.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaBackend.scala index a4fb209c..b6271ca5 100644 --- a/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaBackend.scala +++ b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaBackend.scala @@ -77,6 +77,7 @@ class ScalaBackend( .asScala ) .filter(glueClass => !glueClass.isInterface) + .distinct // Voluntarily throw exception if not able to identify if it's a class val (clsClasses, objClasses) = diff --git a/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaBackendTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaBackendTest.scala index 1ab694c9..a0b1d742 100644 --- a/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaBackendTest.scala +++ b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaBackendTest.scala @@ -182,6 +182,32 @@ class ScalaBackendTest { verify(fakeLookup, never()).getInstance(any()) } + @Test + def loadGlueAndBuildWorld_once_by_classpath_url(): Unit = { + // Load glue + backend.loadGlue( + fakeGlue, + List( + URI.create("classpath:io/cucumber/scala/steps/classes"), + URI.create("classpath:io/cucumber/scala/steps/classes") + ).asJava + ) + + assertEquals(3, backend.scalaGlueClasses.size) + assertTrue( + backend.scalaGlueClasses.toSet == Set( + classOf[StepsA], + classOf[StepsB], + classOf[StepsC] + ) + ) + + verify(fakeContainer, times(3)).addClass(any()) + verify(fakeContainer, times(1)).addClass(classOf[StepsA]) + verify(fakeContainer, times(1)).addClass(classOf[StepsB]) + verify(fakeContainer, times(1)).addClass(classOf[StepsC]) + } + @Test def loadGlueAndBuildWorld_class_incorrect_hooks_definitions(): Unit = { val result = Try { diff --git a/project/build-dependencies.sbt b/project/build-dependencies.sbt index e2c8eefb..a2401c27 100644 --- a/project/build-dependencies.sbt +++ b/project/build-dependencies.sbt @@ -1,2 +1,2 @@ -libraryDependencies += "io.cucumber" % "cucumber-core" % "7.4.1" -libraryDependencies += "org.scala-lang.modules" %% "scala-collection-compat" % "2.7.0" +libraryDependencies += "io.cucumber" % "cucumber-core" % "7.5.0" +libraryDependencies += "org.scala-lang.modules" %% "scala-collection-compat" % "2.8.0"