From 8d7c7b9dd741c54a49452fa66dac09c94553bce5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Jourdan-Weil?= Date: Sun, 8 Nov 2020 16:03:56 +0100 Subject: [PATCH] Use sbt instead of Maven --- .m2/maven-version-rules.xml | 15 -- .m2/travis-ci-toolchains.xml | 13 - .travis.yml | 29 +- CHANGELOG.md | 2 + Makefile | 34 +-- RELEASING.md | 10 +- build.sbt | 135 ++++++++++ .../src/main/codegen}/gen.scala | 0 ...cumber.core.backend.BackendProviderService | 0 .../io/cucumber/scala/package.scala | 0 ...atatableElementTransformerDefinition.scala | 0 .../scala/AbstractGlueDefinition.scala | 0 .../scala/io/cucumber/scala/Aliases.scala | 0 .../scala/DataTableDefinitionBody.scala | 0 .../scala/io/cucumber/scala/GlueAdaptor.scala | 0 .../scala/io/cucumber/scala/Implicits.scala | 0 .../IncorrectHookDefinitionException.scala | 0 .../IncorrectStepDefinitionException.scala | 0 ...ksonDefaultDataTableEntryTransformer.scala | 0 .../io/cucumber/scala/PendingException.scala | 0 .../io/cucumber/scala/ScalaBackend.scala | 0 .../scala/ScalaBackendProviderService.scala | 0 .../scala/ScalaDataTableCellDefinition.scala | 0 .../scala/ScalaDataTableDefinition.scala | 0 .../scala/ScalaDataTableEntryDefinition.scala | 0 ...ScalaDataTableOptionalCellDefinition.scala | 0 ...calaDataTableOptionalEntryDefinition.scala | 0 .../ScalaDataTableOptionalRowDefinition.scala | 0 .../scala/ScalaDataTableRowDefinition.scala | 0 .../scala/ScalaDataTableTypeDefinition.scala | 0 .../scala/ScalaDataTableTypeDetails.scala | 0 ...ltDataTableCellTransformerDefinition.scala | 0 ...tDataTableEntryTransformerDefinition.scala | 0 ...efaultParameterTransformerDefinition.scala | 0 .../ScalaDefaultTransformerDetails.scala | 2 +- .../scala/ScalaDocStringTypeDefinition.scala | 0 .../scala/ScalaDocStringTypeDetails.scala | 2 +- .../scala/io/cucumber/scala/ScalaDsl.scala | 2 +- .../io/cucumber/scala/ScalaDslRegistry.scala | 2 +- .../cucumber/scala/ScalaHookDefinition.scala | 0 .../io/cucumber/scala/ScalaHookDetails.scala | 2 +- .../cucumber/scala/ScalaParameterInfo.scala | 0 .../scala/ScalaParameterTypeDefinition.scala | 0 .../scala/ScalaParameterTypeDetails.scala | 0 .../io/cucumber/scala/ScalaSnippet.scala | 0 .../cucumber/scala/ScalaStepDefinition.scala | 0 .../io/cucumber/scala/ScalaStepDetails.scala | 0 .../io/cucumber/scala/ScalaTypeHelper.scala | 0 .../io/cucumber/scala/ScalaTypeResolver.scala | 0 .../scala/io/cucumber/scala/Scenario.scala | 0 .../main/scala/io/cucumber/scala/Utils.scala | 0 .../main/scala/io/cucumber/scala/package.html | 0 .../src/test/resources/cucumber.properties | 0 .../test/resources/tests/cukes/cukes.feature | 0 .../tests/datatables/DataTableType.feature | 0 .../tests/datatables/Datatable.feature | 0 .../tests/datatables/DatatableAsScala.feature | 0 .../tests/docstring/Docstring.feature | 0 .../resources/tests/isolated/isolated.feature | 0 .../tests/isolated/isolated2.feature | 0 .../resources/tests/jackson/Jackson.feature | 0 .../tests/misc/OptionalCaptureGroups.feature | 0 .../resources/tests/object/object.feature | 0 .../parametertypes/ParameterTypes.feature | 0 .../io/cucumber/scala/ScalaBackendTest.scala | 0 .../scala/ScalaDslDataTableTypeTest.scala | 0 ...lDefaultDataTableCellTransformerTest.scala | 0 ...DefaultDataTableEntryTransformerTest.scala | 0 ...laDslDefaultParameterTransformerTest.scala | 0 .../scala/ScalaDslDocStringTypeTest.scala | 0 .../io/cucumber/scala/ScalaDslHooksTest.scala | 0 .../scala/ScalaDslParameterTypeTest.scala | 0 .../io/cucumber/scala/ScalaDslStepsTest.scala | 0 .../io/cucumber/scala/ScalaSnippetTest.scala | 0 .../io/cucumber/scala/TestFeatureParser.scala | 0 .../steps/classes/MultipleInSameFile.scala | 0 .../scala/steps/classes/SingleFile.scala | 0 .../IncorrectClassHooksDefinition.scala | 0 .../IncorrectObjectHooksDefinition.scala | 0 .../scala/steps/objects/StepsInObject.scala | 0 .../scala/steps/traits/StepsInTrait.scala | 0 .../test/scala/tests/cukes/RunCukesTest.scala | 0 .../src/test/scala/tests/cukes/StepDefs.scala | 0 .../cukes/TypeRegistryConfiguration.scala | 0 .../test/scala/tests/cukes/model/Cuke.scala | 0 .../test/scala/tests/cukes/model/Person.scala | 0 .../test/scala/tests/cukes/model/Snake.scala | 0 .../tests/datatables/DataTableTypeSteps.scala | 0 .../datatables/DatatableAsScalaSteps.scala | 0 .../tests/datatables/DatatableSteps.scala | 0 .../tests/datatables/RunDatatablesTest.scala | 0 .../tests/docstring/DocStringSteps.scala | 0 .../tests/docstring/RunDocStringTest.scala | 0 .../scala/tests/isolated/IsolatedSteps.scala | 0 .../tests/isolated/RunIsolatedTest.scala | 0 .../scala/tests/jackson/JacksonSteps.scala | 0 .../scala/tests/jackson/RunJacksonTest.scala | 0 .../misc/OptionalCaptureGroupsSteps.scala | 0 .../test/scala/tests/misc/RunMiscTest.scala | 0 .../test/scala/tests/object/ObjectSteps.scala | 0 .../scala/tests/object/RunObjectTest.scala | 0 .../parametertypes/ParameterTypesSteps.scala | 0 .../RunParameterTypesTest.scala | 0 examples/pom.xml | 85 ------ .../scalacalculator/RpnCalculator.scala | 6 +- .../RpnCalculatorStepDefinitions.scala | 2 +- gpg.sh | 3 + pom.xml | 254 ------------------ project/I18nGenerator.scala | 39 +++ project/ScalacOptions.scala | 59 ++++ project/build-dependencies.sbt | 2 + project/build.properties | 1 + project/plugins.sbt | 9 + scala/pom.xml | 97 ------- scala/scala_2.11/pom.xml | 110 -------- scala/scala_2.12/pom.xml | 95 ------- scala/scala_2.13/pom.xml | 163 ----------- scala/sources/src/main/groovy/I18n.scala.gsp | 10 - .../src/main/groovy/generate-i18n-dsl.groovy | 16 -- version.sbt | 1 + 120 files changed, 279 insertions(+), 921 deletions(-) delete mode 100644 .m2/maven-version-rules.xml delete mode 100644 .m2/travis-ci-toolchains.xml create mode 100644 build.sbt rename {scala/sources => cucumber-scala/src/main/codegen}/gen.scala (100%) rename {scala/sources => cucumber-scala}/src/main/resources/META-INF/services/io.cucumber.core.backend.BackendProviderService (100%) rename {scala/scala_2.11/src/main/scala => cucumber-scala/src/main/scala-2.11}/io/cucumber/scala/package.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/AbstractDatatableElementTransformerDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/AbstractGlueDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/Aliases.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/DataTableDefinitionBody.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/GlueAdaptor.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/Implicits.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/IncorrectHookDefinitionException.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/IncorrectStepDefinitionException.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/JacksonDefaultDataTableEntryTransformer.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/PendingException.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaBackend.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaBackendProviderService.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDataTableCellDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDataTableDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDataTableEntryDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalCellDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalEntryDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalRowDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDataTableRowDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDataTableTypeDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDataTableTypeDetails.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDefaultDataTableCellTransformerDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDefaultDataTableEntryTransformerDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDefaultParameterTransformerDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDefaultTransformerDetails.scala (72%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDetails.scala (75%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDsl.scala (99%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaDslRegistry.scala (98%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaHookDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaHookDetails.scala (69%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaParameterInfo.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaParameterTypeDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaParameterTypeDetails.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaSnippet.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaStepDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaStepDetails.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaTypeHelper.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/ScalaTypeResolver.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/Scenario.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/Utils.scala (100%) rename {scala/sources => cucumber-scala}/src/main/scala/io/cucumber/scala/package.html (100%) rename {scala/sources => cucumber-scala}/src/test/resources/cucumber.properties (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/cukes/cukes.feature (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/datatables/DataTableType.feature (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/datatables/Datatable.feature (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/datatables/DatatableAsScala.feature (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/docstring/Docstring.feature (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/isolated/isolated.feature (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/isolated/isolated2.feature (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/jackson/Jackson.feature (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/misc/OptionalCaptureGroups.feature (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/object/object.feature (100%) rename {scala/sources => cucumber-scala}/src/test/resources/tests/parametertypes/ParameterTypes.feature (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/ScalaBackendTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/ScalaDslDataTableTypeTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/ScalaDslDefaultDataTableCellTransformerTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/ScalaDslDefaultDataTableEntryTransformerTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/ScalaDslDefaultParameterTransformerTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/ScalaDslDocStringTypeTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/ScalaDslHooksTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/ScalaDslParameterTypeTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/ScalaDslStepsTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/ScalaSnippetTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/TestFeatureParser.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/steps/classes/MultipleInSameFile.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/steps/classes/SingleFile.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/steps/errors/incorrectclasshooks/IncorrectClassHooksDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/steps/errors/incorrectobjecthooks/IncorrectObjectHooksDefinition.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/steps/objects/StepsInObject.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/io/cucumber/scala/steps/traits/StepsInTrait.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/cukes/RunCukesTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/cukes/StepDefs.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/cukes/TypeRegistryConfiguration.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/cukes/model/Cuke.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/cukes/model/Person.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/cukes/model/Snake.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/datatables/DataTableTypeSteps.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/datatables/DatatableAsScalaSteps.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/datatables/DatatableSteps.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/datatables/RunDatatablesTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/docstring/DocStringSteps.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/docstring/RunDocStringTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/isolated/IsolatedSteps.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/isolated/RunIsolatedTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/jackson/JacksonSteps.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/jackson/RunJacksonTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/misc/OptionalCaptureGroupsSteps.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/misc/RunMiscTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/object/ObjectSteps.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/object/RunObjectTest.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/parametertypes/ParameterTypesSteps.scala (100%) rename {scala/sources => cucumber-scala}/src/test/scala/tests/parametertypes/RunParameterTypesTest.scala (100%) delete mode 100644 examples/pom.xml create mode 100755 gpg.sh delete mode 100644 pom.xml create mode 100644 project/I18nGenerator.scala create mode 100644 project/ScalacOptions.scala create mode 100644 project/build-dependencies.sbt create mode 100644 project/build.properties create mode 100644 project/plugins.sbt delete mode 100644 scala/pom.xml delete mode 100644 scala/scala_2.11/pom.xml delete mode 100644 scala/scala_2.12/pom.xml delete mode 100644 scala/scala_2.13/pom.xml delete mode 100644 scala/sources/src/main/groovy/I18n.scala.gsp delete mode 100644 scala/sources/src/main/groovy/generate-i18n-dsl.groovy create mode 100644 version.sbt diff --git a/.m2/maven-version-rules.xml b/.m2/maven-version-rules.xml deleted file mode 100644 index 38f6daa3..00000000 --- a/.m2/maven-version-rules.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - .*(-|.)(A|a)lpha-?[\da-z]+ - .*(-|.)(B|b)eta-?[\da-z]+ - .*-b[\d.]+ - .*-pr\d+ - .*[-.]rc-?\d+ - .*[-.]RC-?\d+ - .*-M\d+ - .*-milestone\d+ - - diff --git a/.m2/travis-ci-toolchains.xml b/.m2/travis-ci-toolchains.xml deleted file mode 100644 index 2489a1c7..00000000 --- a/.m2/travis-ci-toolchains.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - jdk - - 8 - openjdk - - - /usr/lib/jvm/java-1.8.0-openjdk-amd64 - - - diff --git a/.travis.yml b/.travis.yml index 5466a57c..9f2f41c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,31 +1,16 @@ language: scala os: linux +jdk: + - openjdk8 cache: directories: - - "$HOME/.m2" + - $HOME/.sbt/ + - $HOME/.ivy2/cache + - $HOME/.cache/coursier -install: - - which java - - mvn install -DskipTests=true -DskipITs=true -Dmaven.javadoc.skip=true -B -V --toolchains .m2/travis-ci-toolchains.xml - -jobs: - include: - - stage: test - scala: - - 2.11.12 - script: mvn test -pl scala/scala_2.11 -B --toolchains .m2/travis-ci-toolchains.xml - jdk: openjdk8 - - stage: test - scala: - - 2.12.11 - script: mvn test -pl scala/scala_2.12,examples -B --toolchains .m2/travis-ci-toolchains.xml - jdk: openjdk8 - - stage: test - scala: - - 2.13.2 - script: mvn test -pl scala/scala_2.13,examples -B --toolchains .m2/travis-ci-toolchains.xml - jdk: openjdk8 +script: + - sbt +compile +test branches: only: diff --git a/CHANGELOG.md b/CHANGELOG.md index 990a33a6..76a8564f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ See also the [CHANGELOG](https://github.com/cucumber/cucumber-jvm/blob/master/CH ### Changed +- [Build] Use sbt for building the project + ### Deprecated ### Removed diff --git a/Makefile b/Makefile index f9c40cd7..83f6c62a 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,15 @@ SHELL := /usr/bin/env bash default: - mvn clean install + sbt clean +publishLocal .PHONY: default -VERSION = $(shell mvn help:evaluate -Dexpression=project.version -q -DforceStdout 2> /dev/null) +VERSION = $(shell sbt "print cucumberScala/version" | tail -n 1) NEW_VERSION = $(subst -SNAPSHOT,,$(VERSION)) CURRENT_BRANCH = $(shell git rev-parse --abbrev-ref HEAD) clean: - mvn clean release:clean + sbt clean .PHONY: clean version: @@ -18,24 +18,6 @@ version: @echo "" .PHONY: version -update-compatibility: - MSG_VERSION=$$(mvn help:evaluate -Dexpression=messages.version -q -DforceStdout 2> /dev/null) && \ - git clone --branch messages/v$$MSG_VERSION git@github.com:cucumber/cucumber.git target/cucumber - rm -rf compatibility/src/test/resources/* - cp -r target/cucumber/compatibility-kit/javascript/features compatibility/src/test/resources - rm -rf target/cucumber -.PHONY: update-compatibility - -update-dependency-versions: - mvn versions:force-releases - mvn versions:update-properties -DallowMajorUpdates=false -Dmaven.version.rules="file://`pwd`/.m2/maven-version-rules.xml" -.PHONY: update-dependency-versions - -update-major-dependency-versions: - mvn versions:force-releases - mvn versions:update-properties -DallowMajorUpdates=true -Dmaven.version.rules="file://`pwd`/.m2/maven-version-rules.xml" -.PHONY: update-major-dependency-versions - update-installdoc: cat docs/install.md | ./scripts/update-install-doc.sh $(NEW_VERSION) > docs/install.md.tmp mv docs/install.md.tmp docs/install.md @@ -53,15 +35,12 @@ update-changelog: .release-in-docker: default update-changelog update-installdoc .commit-and-push-changelog-and-docs [ -f '/home/cukebot/import-gpg-key.sh' ] && /home/cukebot/import-gpg-key.sh - mvn --batch-mode release:clean release:prepare -DautoVersionSubmodules=true -Darguments="-DskipTests=true -DskipITs=true -Darchetype.test.skip=true" - git checkout "v$(NEW_VERSION)" - mvn deploy -P-examples -P-compatibility -Psign-source-javadoc -DskipTests=true -DskipITs=true -Darchetype.test.skip=true - git checkout $(CURRENT_BRANCH) - git fetch + sbt release cross with-defaults .PHONY: release-in-docker release: [ -d '../secrets' ] || git clone keybase://team/cucumberbdd/secrets ../secrets + git -C ../secrets reset HEAD --hard git -C ../secrets pull ../secrets/update_permissions docker pull cucumber/cucumber-build:latest @@ -70,7 +49,8 @@ release: --volume "${shell pwd}/../secrets/import-gpg-key.sh":/home/cukebot/import-gpg-key.sh \ --volume "${shell pwd}/../secrets/codesigning.key":/home/cukebot/codesigning.key \ --volume "${shell pwd}/../secrets/.ssh":/home/cukebot/.ssh \ - --volume "${HOME}/.m2"/repository:/home/cukebot/.m2/repository \ + --volume "${HOME}/.ivy2":/home/cukebot/.ivy2 \ + --volume "${HOME}/.cache/coursier":/home/cukebot/.cache/coursier \ --volume "${HOME}/.gitconfig":/home/cukebot/.gitconfig \ --env-file ../secrets/secrets.list \ --user 1000 \ diff --git a/RELEASING.md b/RELEASING.md index 2cefc34c..4d7e47f6 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -10,13 +10,11 @@ Is the build passing? ``` git checkout main +sbt clean +test ``` Also check if you can upgrade any dependencies: - -``` -make update-dependency-versions -``` +- check RenovateBot open Merge Requests on Github ## Decide what the next version should be ## @@ -37,10 +35,10 @@ Display future version by running: make version ``` -Check if branch name and version are as expected. To change version run: +Check if branch name and version are as expected. To change version, update the _version.sbt_ file: ``` -mvn versions:set -DnewVersion=X.Y.Z-SNAPSHOT +version in ThisBuild := "6.8.3-SNAPSHOT" ``` ## Secrets ## diff --git a/build.sbt b/build.sbt new file mode 100644 index 00000000..78f43723 --- /dev/null +++ b/build.sbt @@ -0,0 +1,135 @@ + +import ReleaseTransformations._ +import xerial.sbt.Sonatype.sonatypeSettings + +// Metadata + +ThisBuild / organization := "io.cucumber" +ThisBuild / organizationName := "Cucumber" +ThisBuild / organizationHomepage := Some(url("https://github.com/cucumber")) +ThisBuild / scmInfo := Some(ScmInfo(url("https://github.com/cucumber/cucumber-jvm-scala"), "scm:git@github.com:cucumber/cucumber-jvm-scala.git")) +ThisBuild / developers := List( + Developer("cucumber", "Cucumber Developers", "devs@cucumber.io", url("https://github.com/cucumber")) +) +ThisBuild / licenses := Seq( + "MIT License" -> url("http://www.opensource.org/licenses/mit-license") +) +ThisBuild / description := "Cucumber for Scala" +ThisBuild / homepage := Some(url("https://github.com/cucumber/cucumber-jvm-scala")) + +// Scala versions + +val scala211 = "2.11.12" +val scala212 = "2.12.12" +val scala213 = "2.13.3" + +scalaVersion := scala213 + +// Library versions + +val cucumberVersion = "6.8.2" +val jacksonVersion = "2.11.3" +val mockitoScalaVersion = "1.16.3" +val junitVersion = "4.13.1" + +// Projects and settings + +lazy val commonSettings = Seq( + libraryDependencies += "com.novocode" % "junit-interface" % "0.11" % Test, + scalacOptions += "-target:jvm-1.8", + scalacOptions ++= { + CrossVersion.partialVersion(scalaVersion.value) match { + case Some((2, 11)) => ScalacOptions.scalacOptions211 + case Some((2, 12)) => ScalacOptions.scalacOptions212 + case Some((2, 13)) => ScalacOptions.scalacOptions213 + case _ => Seq() + } + }, +) + +lazy val root = (project in file(".")) + .settings(commonSettings) + .settings( + publishArtifact := false + ) + .aggregate( + cucumberScala.projectRefs ++ + examples.projectRefs: _* + ) + +// Main project +lazy val cucumberScala = (projectMatrix in file("cucumber-scala")) + .settings(commonSettings) + .settings( + name := "cucumber-scala", + libraryDependencies ++= Seq( + "io.cucumber" % "cucumber-core" % cucumberVersion, + + // Users have to provide it (for JacksonDefaultDataTableTransformer) + "com.fasterxml.jackson.core" % "jackson-databind" % jacksonVersion % Provided, + "com.fasterxml.jackson.module" %% "jackson-module-scala" % jacksonVersion % Provided, + + "junit" % "junit" % junitVersion % Test, + "io.cucumber" % "cucumber-junit" % cucumberVersion % Test, + "org.mockito" %% "mockito-scala" % mockitoScalaVersion % Test + ), + libraryDependencies ++= { + CrossVersion.partialVersion(scalaVersion.value) match { + case Some((2, n)) if n <= 12 => List("org.scala-lang.modules" %% "scala-collection-compat" % "2.2.0") + case _ => Nil + } + }, + unmanagedSourceDirectories in Compile ++= { + val sourceDir = (sourceDirectory in Compile).value + CrossVersion.partialVersion(scalaVersion.value) match { + case Some((2, n)) if n <= 11 => Seq(sourceDir / "scala-2.11") + case _ => Seq() + } + }, + // Generate I18n traits + Compile / sourceGenerators += Def.task { + val file = (Compile / sourceManaged).value / "io/cucumber/scala" / "I18n.scala" + IO.write(file, I18nGenerator.i18n) + Seq(file) + }.taskValue + ) + .jvmPlatform(scalaVersions = Seq(scala213, scala212, scala211)) + +// Examples project +lazy val examples = (projectMatrix in file("examples")) + .settings(commonSettings) + .settings( + name := "scala-examples", + libraryDependencies ++= Seq( + "io.cucumber" % "cucumber-junit" % cucumberVersion % Test, + "junit" % "junit" % junitVersion % Test + ), + publishArtifact := false + ) + .dependsOn(cucumberScala % Test) + .jvmPlatform(scalaVersions = Seq(scala213, scala212)) + +// Release & Publish + +Global / publishMavenStyle := true +Global / publishTo := sonatypePublishToBundle.value + +// https://github.com/sbt/sbt-pgp/issues/173 +Global / PgpKeys.gpgCommand := (baseDirectory.value / "gpg.sh").getAbsolutePath + +// https://github.com/xerial/sbt-sonatype#using-with-sbt-release-plugin +ThisBuild / releaseCrossBuild := true +ThisBuild / releaseProcess := Seq[ReleaseStep]( + checkSnapshotDependencies, + inquireVersions, + runClean, + runTest, + setReleaseVersion, + commitReleaseVersion, + tagRelease, + releaseStepCommandAndRemaining("publishSigned"), + releaseStepCommand("sonatypeBundleRelease"), + setNextVersion, + commitNextVersion, + pushChanges +) diff --git a/scala/sources/gen.scala b/cucumber-scala/src/main/codegen/gen.scala similarity index 100% rename from scala/sources/gen.scala rename to cucumber-scala/src/main/codegen/gen.scala diff --git a/scala/sources/src/main/resources/META-INF/services/io.cucumber.core.backend.BackendProviderService b/cucumber-scala/src/main/resources/META-INF/services/io.cucumber.core.backend.BackendProviderService similarity index 100% rename from scala/sources/src/main/resources/META-INF/services/io.cucumber.core.backend.BackendProviderService rename to cucumber-scala/src/main/resources/META-INF/services/io.cucumber.core.backend.BackendProviderService diff --git a/scala/scala_2.11/src/main/scala/io/cucumber/scala/package.scala b/cucumber-scala/src/main/scala-2.11/io/cucumber/scala/package.scala similarity index 100% rename from scala/scala_2.11/src/main/scala/io/cucumber/scala/package.scala rename to cucumber-scala/src/main/scala-2.11/io/cucumber/scala/package.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/AbstractDatatableElementTransformerDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/AbstractDatatableElementTransformerDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/AbstractDatatableElementTransformerDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/AbstractDatatableElementTransformerDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/AbstractGlueDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/AbstractGlueDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/AbstractGlueDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/AbstractGlueDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/Aliases.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/Aliases.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/Aliases.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/Aliases.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/DataTableDefinitionBody.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/DataTableDefinitionBody.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/DataTableDefinitionBody.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/DataTableDefinitionBody.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/GlueAdaptor.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/GlueAdaptor.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/GlueAdaptor.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/GlueAdaptor.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/Implicits.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/Implicits.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/Implicits.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/Implicits.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/IncorrectHookDefinitionException.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/IncorrectHookDefinitionException.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/IncorrectHookDefinitionException.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/IncorrectHookDefinitionException.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/IncorrectStepDefinitionException.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/IncorrectStepDefinitionException.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/IncorrectStepDefinitionException.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/IncorrectStepDefinitionException.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/JacksonDefaultDataTableEntryTransformer.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/JacksonDefaultDataTableEntryTransformer.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/JacksonDefaultDataTableEntryTransformer.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/JacksonDefaultDataTableEntryTransformer.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/PendingException.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/PendingException.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/PendingException.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/PendingException.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaBackend.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaBackend.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaBackend.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaBackend.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaBackendProviderService.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaBackendProviderService.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaBackendProviderService.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaBackendProviderService.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableCellDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableCellDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableCellDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableCellDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableEntryDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableEntryDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableEntryDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableEntryDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalCellDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalCellDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalCellDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalCellDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalEntryDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalEntryDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalEntryDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalEntryDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalRowDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalRowDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalRowDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableOptionalRowDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableRowDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableRowDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableRowDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableRowDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableTypeDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableTypeDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableTypeDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableTypeDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableTypeDetails.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableTypeDetails.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableTypeDetails.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDataTableTypeDetails.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDefaultDataTableCellTransformerDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDefaultDataTableCellTransformerDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDefaultDataTableCellTransformerDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDefaultDataTableCellTransformerDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDefaultDataTableEntryTransformerDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDefaultDataTableEntryTransformerDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDefaultDataTableEntryTransformerDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDefaultDataTableEntryTransformerDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDefaultParameterTransformerDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDefaultParameterTransformerDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDefaultParameterTransformerDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDefaultParameterTransformerDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDefaultTransformerDetails.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDefaultTransformerDetails.scala similarity index 72% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDefaultTransformerDetails.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDefaultTransformerDetails.scala index 686e85e1..b7943324 100644 --- a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDefaultTransformerDetails.scala +++ b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDefaultTransformerDetails.scala @@ -1,6 +1,6 @@ package io.cucumber.scala -import io.cucumber.scala.Aliases.{DefaultDataTableCellTransformerBody, DefaultDataTableEntryTransformerBody, DefaultParameterTransformerBody} +import Aliases.{DefaultDataTableCellTransformerBody, DefaultDataTableEntryTransformerBody, DefaultParameterTransformerBody} case class ScalaDefaultParameterTransformerDetails(body: DefaultParameterTransformerBody) diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDetails.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDetails.scala similarity index 75% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDetails.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDetails.scala index e77b8141..2ca613b8 100644 --- a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDetails.scala +++ b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDocStringTypeDetails.scala @@ -1,6 +1,6 @@ package io.cucumber.scala -import io.cucumber.scala.Aliases.DocStringDefinitionBody +import Aliases.DocStringDefinitionBody import scala.reflect.ClassTag diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDsl.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDsl.scala similarity index 99% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDsl.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDsl.scala index 589d455e..1541f4e3 100644 --- a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDsl.scala +++ b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDsl.scala @@ -1,6 +1,6 @@ package io.cucumber.scala -import io.cucumber.scala.Aliases._ +import Aliases._ import scala.reflect.ClassTag diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDslRegistry.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDslRegistry.scala similarity index 98% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaDslRegistry.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDslRegistry.scala index 1d7233b7..e2fac9b3 100644 --- a/scala/sources/src/main/scala/io/cucumber/scala/ScalaDslRegistry.scala +++ b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaDslRegistry.scala @@ -1,6 +1,6 @@ package io.cucumber.scala -import io.cucumber.scala.HookType.{AFTER, AFTER_STEP, BEFORE, BEFORE_STEP} +import HookType.{AFTER, AFTER_STEP, BEFORE, BEFORE_STEP} class ScalaDslRegistry { diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaHookDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaHookDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaHookDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaHookDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaHookDetails.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaHookDetails.scala similarity index 69% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaHookDetails.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaHookDetails.scala index 7fbcbde7..80326a49 100644 --- a/scala/sources/src/main/scala/io/cucumber/scala/ScalaHookDetails.scala +++ b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaHookDetails.scala @@ -1,5 +1,5 @@ package io.cucumber.scala -import io.cucumber.scala.Aliases.HookDefinitionBody +import Aliases.HookDefinitionBody case class ScalaHookDetails(tagExpression: String, order: Int, body: HookDefinitionBody) diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaParameterInfo.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaParameterInfo.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaParameterInfo.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaParameterInfo.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaParameterTypeDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaParameterTypeDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaParameterTypeDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaParameterTypeDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaParameterTypeDetails.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaParameterTypeDetails.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaParameterTypeDetails.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaParameterTypeDetails.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaSnippet.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaSnippet.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaSnippet.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaSnippet.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaStepDefinition.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaStepDefinition.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaStepDefinition.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaStepDefinition.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaStepDetails.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaStepDetails.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaStepDetails.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaStepDetails.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaTypeHelper.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaTypeHelper.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaTypeHelper.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaTypeHelper.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/ScalaTypeResolver.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/ScalaTypeResolver.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/ScalaTypeResolver.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/ScalaTypeResolver.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/Scenario.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/Scenario.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/Scenario.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/Scenario.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/Utils.scala b/cucumber-scala/src/main/scala/io/cucumber/scala/Utils.scala similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/Utils.scala rename to cucumber-scala/src/main/scala/io/cucumber/scala/Utils.scala diff --git a/scala/sources/src/main/scala/io/cucumber/scala/package.html b/cucumber-scala/src/main/scala/io/cucumber/scala/package.html similarity index 100% rename from scala/sources/src/main/scala/io/cucumber/scala/package.html rename to cucumber-scala/src/main/scala/io/cucumber/scala/package.html diff --git a/scala/sources/src/test/resources/cucumber.properties b/cucumber-scala/src/test/resources/cucumber.properties similarity index 100% rename from scala/sources/src/test/resources/cucumber.properties rename to cucumber-scala/src/test/resources/cucumber.properties diff --git a/scala/sources/src/test/resources/tests/cukes/cukes.feature b/cucumber-scala/src/test/resources/tests/cukes/cukes.feature similarity index 100% rename from scala/sources/src/test/resources/tests/cukes/cukes.feature rename to cucumber-scala/src/test/resources/tests/cukes/cukes.feature diff --git a/scala/sources/src/test/resources/tests/datatables/DataTableType.feature b/cucumber-scala/src/test/resources/tests/datatables/DataTableType.feature similarity index 100% rename from scala/sources/src/test/resources/tests/datatables/DataTableType.feature rename to cucumber-scala/src/test/resources/tests/datatables/DataTableType.feature diff --git a/scala/sources/src/test/resources/tests/datatables/Datatable.feature b/cucumber-scala/src/test/resources/tests/datatables/Datatable.feature similarity index 100% rename from scala/sources/src/test/resources/tests/datatables/Datatable.feature rename to cucumber-scala/src/test/resources/tests/datatables/Datatable.feature diff --git a/scala/sources/src/test/resources/tests/datatables/DatatableAsScala.feature b/cucumber-scala/src/test/resources/tests/datatables/DatatableAsScala.feature similarity index 100% rename from scala/sources/src/test/resources/tests/datatables/DatatableAsScala.feature rename to cucumber-scala/src/test/resources/tests/datatables/DatatableAsScala.feature diff --git a/scala/sources/src/test/resources/tests/docstring/Docstring.feature b/cucumber-scala/src/test/resources/tests/docstring/Docstring.feature similarity index 100% rename from scala/sources/src/test/resources/tests/docstring/Docstring.feature rename to cucumber-scala/src/test/resources/tests/docstring/Docstring.feature diff --git a/scala/sources/src/test/resources/tests/isolated/isolated.feature b/cucumber-scala/src/test/resources/tests/isolated/isolated.feature similarity index 100% rename from scala/sources/src/test/resources/tests/isolated/isolated.feature rename to cucumber-scala/src/test/resources/tests/isolated/isolated.feature diff --git a/scala/sources/src/test/resources/tests/isolated/isolated2.feature b/cucumber-scala/src/test/resources/tests/isolated/isolated2.feature similarity index 100% rename from scala/sources/src/test/resources/tests/isolated/isolated2.feature rename to cucumber-scala/src/test/resources/tests/isolated/isolated2.feature diff --git a/scala/sources/src/test/resources/tests/jackson/Jackson.feature b/cucumber-scala/src/test/resources/tests/jackson/Jackson.feature similarity index 100% rename from scala/sources/src/test/resources/tests/jackson/Jackson.feature rename to cucumber-scala/src/test/resources/tests/jackson/Jackson.feature diff --git a/scala/sources/src/test/resources/tests/misc/OptionalCaptureGroups.feature b/cucumber-scala/src/test/resources/tests/misc/OptionalCaptureGroups.feature similarity index 100% rename from scala/sources/src/test/resources/tests/misc/OptionalCaptureGroups.feature rename to cucumber-scala/src/test/resources/tests/misc/OptionalCaptureGroups.feature diff --git a/scala/sources/src/test/resources/tests/object/object.feature b/cucumber-scala/src/test/resources/tests/object/object.feature similarity index 100% rename from scala/sources/src/test/resources/tests/object/object.feature rename to cucumber-scala/src/test/resources/tests/object/object.feature diff --git a/scala/sources/src/test/resources/tests/parametertypes/ParameterTypes.feature b/cucumber-scala/src/test/resources/tests/parametertypes/ParameterTypes.feature similarity index 100% rename from scala/sources/src/test/resources/tests/parametertypes/ParameterTypes.feature rename to cucumber-scala/src/test/resources/tests/parametertypes/ParameterTypes.feature diff --git a/scala/sources/src/test/scala/io/cucumber/scala/ScalaBackendTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaBackendTest.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/ScalaBackendTest.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/ScalaBackendTest.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/ScalaDslDataTableTypeTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslDataTableTypeTest.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/ScalaDslDataTableTypeTest.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslDataTableTypeTest.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/ScalaDslDefaultDataTableCellTransformerTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslDefaultDataTableCellTransformerTest.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/ScalaDslDefaultDataTableCellTransformerTest.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslDefaultDataTableCellTransformerTest.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/ScalaDslDefaultDataTableEntryTransformerTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslDefaultDataTableEntryTransformerTest.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/ScalaDslDefaultDataTableEntryTransformerTest.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslDefaultDataTableEntryTransformerTest.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/ScalaDslDefaultParameterTransformerTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslDefaultParameterTransformerTest.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/ScalaDslDefaultParameterTransformerTest.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslDefaultParameterTransformerTest.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/ScalaDslDocStringTypeTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslDocStringTypeTest.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/ScalaDslDocStringTypeTest.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslDocStringTypeTest.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/ScalaDslHooksTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslHooksTest.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/ScalaDslHooksTest.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslHooksTest.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/ScalaDslParameterTypeTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslParameterTypeTest.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/ScalaDslParameterTypeTest.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslParameterTypeTest.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/ScalaDslStepsTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslStepsTest.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/ScalaDslStepsTest.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/ScalaDslStepsTest.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/ScalaSnippetTest.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/ScalaSnippetTest.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/ScalaSnippetTest.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/ScalaSnippetTest.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/TestFeatureParser.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/TestFeatureParser.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/TestFeatureParser.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/TestFeatureParser.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/steps/classes/MultipleInSameFile.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/steps/classes/MultipleInSameFile.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/steps/classes/MultipleInSameFile.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/steps/classes/MultipleInSameFile.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/steps/classes/SingleFile.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/steps/classes/SingleFile.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/steps/classes/SingleFile.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/steps/classes/SingleFile.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/steps/errors/incorrectclasshooks/IncorrectClassHooksDefinition.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/steps/errors/incorrectclasshooks/IncorrectClassHooksDefinition.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/steps/errors/incorrectclasshooks/IncorrectClassHooksDefinition.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/steps/errors/incorrectclasshooks/IncorrectClassHooksDefinition.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/steps/errors/incorrectobjecthooks/IncorrectObjectHooksDefinition.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/steps/errors/incorrectobjecthooks/IncorrectObjectHooksDefinition.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/steps/errors/incorrectobjecthooks/IncorrectObjectHooksDefinition.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/steps/errors/incorrectobjecthooks/IncorrectObjectHooksDefinition.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/steps/objects/StepsInObject.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/steps/objects/StepsInObject.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/steps/objects/StepsInObject.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/steps/objects/StepsInObject.scala diff --git a/scala/sources/src/test/scala/io/cucumber/scala/steps/traits/StepsInTrait.scala b/cucumber-scala/src/test/scala/io/cucumber/scala/steps/traits/StepsInTrait.scala similarity index 100% rename from scala/sources/src/test/scala/io/cucumber/scala/steps/traits/StepsInTrait.scala rename to cucumber-scala/src/test/scala/io/cucumber/scala/steps/traits/StepsInTrait.scala diff --git a/scala/sources/src/test/scala/tests/cukes/RunCukesTest.scala b/cucumber-scala/src/test/scala/tests/cukes/RunCukesTest.scala similarity index 100% rename from scala/sources/src/test/scala/tests/cukes/RunCukesTest.scala rename to cucumber-scala/src/test/scala/tests/cukes/RunCukesTest.scala diff --git a/scala/sources/src/test/scala/tests/cukes/StepDefs.scala b/cucumber-scala/src/test/scala/tests/cukes/StepDefs.scala similarity index 100% rename from scala/sources/src/test/scala/tests/cukes/StepDefs.scala rename to cucumber-scala/src/test/scala/tests/cukes/StepDefs.scala diff --git a/scala/sources/src/test/scala/tests/cukes/TypeRegistryConfiguration.scala b/cucumber-scala/src/test/scala/tests/cukes/TypeRegistryConfiguration.scala similarity index 100% rename from scala/sources/src/test/scala/tests/cukes/TypeRegistryConfiguration.scala rename to cucumber-scala/src/test/scala/tests/cukes/TypeRegistryConfiguration.scala diff --git a/scala/sources/src/test/scala/tests/cukes/model/Cuke.scala b/cucumber-scala/src/test/scala/tests/cukes/model/Cuke.scala similarity index 100% rename from scala/sources/src/test/scala/tests/cukes/model/Cuke.scala rename to cucumber-scala/src/test/scala/tests/cukes/model/Cuke.scala diff --git a/scala/sources/src/test/scala/tests/cukes/model/Person.scala b/cucumber-scala/src/test/scala/tests/cukes/model/Person.scala similarity index 100% rename from scala/sources/src/test/scala/tests/cukes/model/Person.scala rename to cucumber-scala/src/test/scala/tests/cukes/model/Person.scala diff --git a/scala/sources/src/test/scala/tests/cukes/model/Snake.scala b/cucumber-scala/src/test/scala/tests/cukes/model/Snake.scala similarity index 100% rename from scala/sources/src/test/scala/tests/cukes/model/Snake.scala rename to cucumber-scala/src/test/scala/tests/cukes/model/Snake.scala diff --git a/scala/sources/src/test/scala/tests/datatables/DataTableTypeSteps.scala b/cucumber-scala/src/test/scala/tests/datatables/DataTableTypeSteps.scala similarity index 100% rename from scala/sources/src/test/scala/tests/datatables/DataTableTypeSteps.scala rename to cucumber-scala/src/test/scala/tests/datatables/DataTableTypeSteps.scala diff --git a/scala/sources/src/test/scala/tests/datatables/DatatableAsScalaSteps.scala b/cucumber-scala/src/test/scala/tests/datatables/DatatableAsScalaSteps.scala similarity index 100% rename from scala/sources/src/test/scala/tests/datatables/DatatableAsScalaSteps.scala rename to cucumber-scala/src/test/scala/tests/datatables/DatatableAsScalaSteps.scala diff --git a/scala/sources/src/test/scala/tests/datatables/DatatableSteps.scala b/cucumber-scala/src/test/scala/tests/datatables/DatatableSteps.scala similarity index 100% rename from scala/sources/src/test/scala/tests/datatables/DatatableSteps.scala rename to cucumber-scala/src/test/scala/tests/datatables/DatatableSteps.scala diff --git a/scala/sources/src/test/scala/tests/datatables/RunDatatablesTest.scala b/cucumber-scala/src/test/scala/tests/datatables/RunDatatablesTest.scala similarity index 100% rename from scala/sources/src/test/scala/tests/datatables/RunDatatablesTest.scala rename to cucumber-scala/src/test/scala/tests/datatables/RunDatatablesTest.scala diff --git a/scala/sources/src/test/scala/tests/docstring/DocStringSteps.scala b/cucumber-scala/src/test/scala/tests/docstring/DocStringSteps.scala similarity index 100% rename from scala/sources/src/test/scala/tests/docstring/DocStringSteps.scala rename to cucumber-scala/src/test/scala/tests/docstring/DocStringSteps.scala diff --git a/scala/sources/src/test/scala/tests/docstring/RunDocStringTest.scala b/cucumber-scala/src/test/scala/tests/docstring/RunDocStringTest.scala similarity index 100% rename from scala/sources/src/test/scala/tests/docstring/RunDocStringTest.scala rename to cucumber-scala/src/test/scala/tests/docstring/RunDocStringTest.scala diff --git a/scala/sources/src/test/scala/tests/isolated/IsolatedSteps.scala b/cucumber-scala/src/test/scala/tests/isolated/IsolatedSteps.scala similarity index 100% rename from scala/sources/src/test/scala/tests/isolated/IsolatedSteps.scala rename to cucumber-scala/src/test/scala/tests/isolated/IsolatedSteps.scala diff --git a/scala/sources/src/test/scala/tests/isolated/RunIsolatedTest.scala b/cucumber-scala/src/test/scala/tests/isolated/RunIsolatedTest.scala similarity index 100% rename from scala/sources/src/test/scala/tests/isolated/RunIsolatedTest.scala rename to cucumber-scala/src/test/scala/tests/isolated/RunIsolatedTest.scala diff --git a/scala/sources/src/test/scala/tests/jackson/JacksonSteps.scala b/cucumber-scala/src/test/scala/tests/jackson/JacksonSteps.scala similarity index 100% rename from scala/sources/src/test/scala/tests/jackson/JacksonSteps.scala rename to cucumber-scala/src/test/scala/tests/jackson/JacksonSteps.scala diff --git a/scala/sources/src/test/scala/tests/jackson/RunJacksonTest.scala b/cucumber-scala/src/test/scala/tests/jackson/RunJacksonTest.scala similarity index 100% rename from scala/sources/src/test/scala/tests/jackson/RunJacksonTest.scala rename to cucumber-scala/src/test/scala/tests/jackson/RunJacksonTest.scala diff --git a/scala/sources/src/test/scala/tests/misc/OptionalCaptureGroupsSteps.scala b/cucumber-scala/src/test/scala/tests/misc/OptionalCaptureGroupsSteps.scala similarity index 100% rename from scala/sources/src/test/scala/tests/misc/OptionalCaptureGroupsSteps.scala rename to cucumber-scala/src/test/scala/tests/misc/OptionalCaptureGroupsSteps.scala diff --git a/scala/sources/src/test/scala/tests/misc/RunMiscTest.scala b/cucumber-scala/src/test/scala/tests/misc/RunMiscTest.scala similarity index 100% rename from scala/sources/src/test/scala/tests/misc/RunMiscTest.scala rename to cucumber-scala/src/test/scala/tests/misc/RunMiscTest.scala diff --git a/scala/sources/src/test/scala/tests/object/ObjectSteps.scala b/cucumber-scala/src/test/scala/tests/object/ObjectSteps.scala similarity index 100% rename from scala/sources/src/test/scala/tests/object/ObjectSteps.scala rename to cucumber-scala/src/test/scala/tests/object/ObjectSteps.scala diff --git a/scala/sources/src/test/scala/tests/object/RunObjectTest.scala b/cucumber-scala/src/test/scala/tests/object/RunObjectTest.scala similarity index 100% rename from scala/sources/src/test/scala/tests/object/RunObjectTest.scala rename to cucumber-scala/src/test/scala/tests/object/RunObjectTest.scala diff --git a/scala/sources/src/test/scala/tests/parametertypes/ParameterTypesSteps.scala b/cucumber-scala/src/test/scala/tests/parametertypes/ParameterTypesSteps.scala similarity index 100% rename from scala/sources/src/test/scala/tests/parametertypes/ParameterTypesSteps.scala rename to cucumber-scala/src/test/scala/tests/parametertypes/ParameterTypesSteps.scala diff --git a/scala/sources/src/test/scala/tests/parametertypes/RunParameterTypesTest.scala b/cucumber-scala/src/test/scala/tests/parametertypes/RunParameterTypesTest.scala similarity index 100% rename from scala/sources/src/test/scala/tests/parametertypes/RunParameterTypesTest.scala rename to cucumber-scala/src/test/scala/tests/parametertypes/RunParameterTypesTest.scala diff --git a/examples/pom.xml b/examples/pom.xml deleted file mode 100644 index 0e21290d..00000000 --- a/examples/pom.xml +++ /dev/null @@ -1,85 +0,0 @@ - - 4.0.0 - - - io.cucumber - cucumber-jvm-scala - 6.8.3-SNAPSHOT - - - scala-examples - jar - Examples: Scala Calculator - - - - io.cucumber - cucumber-scala_2.12 - ${project.version} - test - - - io.cucumber - cucumber-junit - test - - - junit - junit - test - - - org.scala-lang - scala-library - ${scala.2.12.version} - - - org.scala-lang - scala-compiler - ${scala.2.12.version} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - maven-javadoc-plugin - - true - - - - maven-deploy-plugin - - true - - - - net.alchim31.maven - scala-maven-plugin - - - **/*.java - - - - - - add-source - compile - testCompile - - - - - - - diff --git a/examples/src/main/scala/cucumber/examples/scalacalculator/RpnCalculator.scala b/examples/src/main/scala/cucumber/examples/scalacalculator/RpnCalculator.scala index 16ba78dc..a2bbc114 100644 --- a/examples/src/main/scala/cucumber/examples/scalacalculator/RpnCalculator.scala +++ b/examples/src/main/scala/cucumber/examples/scalacalculator/RpnCalculator.scala @@ -19,15 +19,17 @@ class RpnCalculator { private def op(f: (Double, Double) => Double) = stack += f(stack.dequeue(), stack.dequeue()) - def push(arg: Arg) { + def push(arg: Arg): Unit = { arg match { case Op("+") => op(_ + _) case Op("-") => op(_ - _) case Op("*") => op(_ * _) case Op("/") => op(_ / _) case Val(value) => stack += value + case _ => () } + () } - def value = stack.head + def value: Double = stack.head } diff --git a/examples/src/test/scala/cucumber/examples/scalacalculator/RpnCalculatorStepDefinitions.scala b/examples/src/test/scala/cucumber/examples/scalacalculator/RpnCalculatorStepDefinitions.scala index e6f253b2..bae38d16 100644 --- a/examples/src/test/scala/cucumber/examples/scalacalculator/RpnCalculatorStepDefinitions.scala +++ b/examples/src/test/scala/cucumber/examples/scalacalculator/RpnCalculatorStepDefinitions.scala @@ -18,6 +18,6 @@ class RpnCalculatorStepDefinitions extends ScalaDsl with EN { } Before("not @foo"){ scenario : Scenario => - println("Runs before scenarios *not* tagged with @foo") + println(s"Runs before scenarios *not* tagged with @foo (${scenario.getId})") } } \ No newline at end of file diff --git a/gpg.sh b/gpg.sh new file mode 100755 index 00000000..5c2d3e7e --- /dev/null +++ b/gpg.sh @@ -0,0 +1,3 @@ +#! /bin/sh + +gpg --passphrase "${GPG_SIGNING_KEY_PASSPHRASE}" --pinentry-mode loopback $@ \ No newline at end of file diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 03fb08f6..00000000 --- a/pom.xml +++ /dev/null @@ -1,254 +0,0 @@ - - 4.0.0 - cucumber-jvm-scala - 6.8.3-SNAPSHOT - pom - Cucumber-JVM: Scala - Cucumber for Scala - http://cucumber.io/ - - - io.cucumber - cucumber-parent - 2.1.1 - - - - UTF-8 - UTF-8 - io.cucumber.scala - 3.3 - ${project.build.directory} - 4.4.0 - 6.8.2 - 15.0.2 - 2.5.13 - 2.11.3 - 4.13.1 - 2.11.12 - 2.12.12 - 2.13.3 - 1.16.3 - openjdk - 8 - - - - scm:git:git://github.com/cucumber/cucumber-jvm-scala.git - scm:git:git@github.com:cucumber/cucumber-jvm-scala.git - git://github.com/cucumber/cucumber-jvm-scala.git - v4.3.0 - - - - - - io.cucumber - cucumber-core - ${cucumber.version} - - - com.fasterxml.jackson.core - jackson-databind - ${jackson-databind.version} - provided - - - com.fasterxml.jackson.module - jackson-module-scala_2.11 - ${jackson-databind.version} - provided - - - com.fasterxml.jackson.module - jackson-module-scala_2.12 - ${jackson-databind.version} - provided - - - com.fasterxml.jackson.module - jackson-module-scala_2.13 - ${jackson-databind.version} - provided - - - io.cucumber - cucumber-junit - ${cucumber.version} - test - - - junit - junit - ${junit.version} - test - - - - - - scala - - - - - examples - - true - - - examples - - - - - coveralls.io - - - - - org.codehaus.mojo - cobertura-maven-plugin - ${cobertura-maven-plugin.version} - - - xml - - - true - - true - - - - - - org.eluder.coveralls - coveralls-maven-plugin - 4.3.0 - - - ${basedir}/scala/scala_2.11/target/generated-sources/i18n - - ${basedir}/scala/scala_2.12/target/generated-sources/i18n - - ${basedir}/scala/scala_2.13/target/generated-sources/i18n - - - - - - - - - - - - - - org.apache.maven.plugins - maven-toolchains-plugin - - - - toolchain - - - - - - - ${toolchain.java.version} - ${toolchain.vendor} - - - - - - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - org.codehaus.groovy - groovy-ant - ${groovy.version} - - - org.codehaus.groovy - groovy-templates - ${groovy.version} - - - - io.cucumber - gherkin - ${gherkin.version} - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - - false - cucumber.runtime,cucumber.runtime.* - - http://docs.oracle.com/javase/7/docs/api/ - http://junit.sourceforge.net/javadoc/ - - - - Main API Packages - cucumber.api:cucumber.api.* - - - I18n - Java - cucumber.api.java.* - - - - - java - - - - - org.apache.maven.plugins - maven-shade-plugin - - - package - - shade - - - true - - - - - - - org.codehaus.mojo - build-helper-maven-plugin - - - - - net.alchim31.maven - scala-maven-plugin - ${scala-maven-plugin.version} - - - - - - diff --git a/project/I18nGenerator.scala b/project/I18nGenerator.scala new file mode 100644 index 00000000..04dea4ed --- /dev/null +++ b/project/I18nGenerator.scala @@ -0,0 +1,39 @@ +import io.cucumber.gherkin.GherkinDialectProvider +import scala.jdk.CollectionConverters._ + +object I18nGenerator { + + private val dialectProvider = new GherkinDialectProvider() + + private val unsupported = Seq("em") // The generated files for Emoji do not compile. + private val allLanguages = dialectProvider.getLanguages().asScala.filterNot(l => unsupported.contains(l)) + + private def keywordVal(kw: String): String = { + val keyworkValName = java.text.Normalizer.normalize(kw.replaceAll("[\\s',!]", ""), java.text.Normalizer.Form.NFC) + s"""val $keyworkValName = new Step("$keyworkValName")""" + } + + private def traitCode(language: String): String = { + val traitName = language.replaceAll("[\\s-]", "_").toUpperCase() + val keywords = dialectProvider + .getDialect(language, null).getStepKeywords() + .asScala + .filter(kw => !kw.contains('*') && !kw.matches("^\\d.*")) + .sorted + .distinct + + s""" + |trait $traitName { + | this: ScalaDsl => + |${keywords.map(kw => keywordVal(kw)).mkString("\n\n")} + |} + |""".stripMargin + } + + val i18n: String = s""" + |package io.cucumber.scala + | + |${allLanguages.map(l => traitCode(l)).mkString("\n\n")} + |""".stripMargin + +} diff --git a/project/ScalacOptions.scala b/project/ScalacOptions.scala new file mode 100644 index 00000000..919e594a --- /dev/null +++ b/project/ScalacOptions.scala @@ -0,0 +1,59 @@ +object ScalacOptions { + + // Source: https://nathankleyn.com/2019/05/13/recommended-scalac-flags-for-2-13/ + val scalacOptions213 = Seq( + "-deprecation", // Emit warning and location for usages of deprecated APIs. + "-explaintypes", // Explain type errors in more detail. + "-feature", // Emit warning and location for usages of features that should be imported explicitly. + "-language:existentials", // Existential types (besides wildcard types) can be written and inferred + "-language:experimental.macros", // Allow macro definition (besides implementation and application) + "-language:higherKinds", // Allow higher-kinded types + "-language:implicitConversions", // Allow definition of implicit functions called views + "-unchecked", // Enable additional warnings where generated code depends on assumptions. + "-Xcheckinit", // Wrap field accessors to throw an exception on uninitialized access. + "-Xfatal-warnings", // Fail the compilation if there are any warnings. + "-Xlint:adapted-args", // Warn if an argument list is modified to match the receiver. + "-Xlint:constant", // Evaluation of a constant arithmetic expression results in an error. + "-Xlint:delayedinit-select", // Selecting member of DelayedInit. + "-Xlint:doc-detached", // A Scaladoc comment appears to be detached from its element. + "-Xlint:inaccessible", // Warn about inaccessible types in method signatures. + "-Xlint:infer-any", // Warn when a type argument is inferred to be `Any`. + "-Xlint:missing-interpolator", // A string literal appears to be missing an interpolator id. + // "-Xlint:nullary-override", // Warn when non-nullary `def f()' overrides nullary `def f'. + "-Xlint:nullary-unit", // Warn when nullary methods return Unit. + "-Xlint:option-implicit", // Option.apply used implicit view. + "-Xlint:package-object-classes", // Class or object defined in package object. + "-Xlint:poly-implicit-overload", // Parameterized overloaded implicit methods are not visible as view bounds. + "-Xlint:private-shadow", // A private field (or class parameter) shadows a superclass field. + "-Xlint:stars-align", // Pattern sequence wildcard must align with sequence component. + "-Xlint:type-parameter-shadow", // A local type parameter shadows a type already in scope. + "-Ywarn-dead-code", // Warn when dead code is identified. + "-Ywarn-extra-implicit", // Warn when more than one implicit parameter section is defined. + "-Ywarn-numeric-widen", // Warn when numerics are widened. + "-Ywarn-unused:implicits", // Warn if an implicit parameter is unused. + "-Ywarn-unused:imports", // Warn if an import selector is not referenced. + "-Ywarn-unused:locals", // Warn if a local definition is unused. + "-Ywarn-unused:params", // Warn if a value parameter is unused. + "-Ywarn-unused:patvars", // Warn if a variable bound in a pattern is unused. + "-Ywarn-unused:privates", // Warn if a private member is unused. + "-Ywarn-value-discard", // Warn when non-Unit expression results are unused. + "-Ybackend-parallelism", "8", // Enable paralellisation — change to desired number! + "-Ycache-plugin-class-loader:last-modified", // Enables caching of classloaders for compiler plugins + "-Ycache-macro-class-loader:last-modified", // and macro definitions. This can lead to performance improvements. + ) + + val scalacOptions212 = Seq( + "-deprecation", // Emit warning and location for usages of deprecated APIs. + "-encoding", "utf-8", // Specify character encoding used by source files. + "-feature", // Emit warning and location for usages of features that should be imported explicitly. + "-language:implicitConversions" // Allow definition of implicit functions called views + ) + + val scalacOptions211 = Seq( + "-deprecation", + "-encoding", "UTF-8", // yes, this is 2 args + "-feature", + "-language:implicitConversions" + ) + +} diff --git a/project/build-dependencies.sbt b/project/build-dependencies.sbt new file mode 100644 index 00000000..95a6b0ec --- /dev/null +++ b/project/build-dependencies.sbt @@ -0,0 +1,2 @@ +libraryDependencies += "io.cucumber" % "cucumber-core" % "6.8.2" +libraryDependencies += "org.scala-lang.modules" %% "scala-collection-compat" % "2.2.0" \ No newline at end of file diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 00000000..0837f7a1 --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.3.13 diff --git a/project/plugins.sbt b/project/plugins.sbt new file mode 100644 index 00000000..b01acae4 --- /dev/null +++ b/project/plugins.sbt @@ -0,0 +1,9 @@ +// Cross compilation matrix +addSbtPlugin("com.eed3si9n" % "sbt-projectmatrix" % "0.6.0") + +// Release +addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.13") + +// Publishing +addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.5") +addSbtPlugin("com.jsuereth" % "sbt-pgp" % "2.0.1") diff --git a/scala/pom.xml b/scala/pom.xml deleted file mode 100644 index 89fda44f..00000000 --- a/scala/pom.xml +++ /dev/null @@ -1,97 +0,0 @@ - - 4.0.0 - - - io.cucumber - cucumber-jvm-scala - 6.8.3-SNAPSHOT - - - cucumber-scala-aggregator - pom - Cucumber-JVM: Scala Aggregator - - - scala_2.11 - scala_2.12 - scala_2.13 - - - - - io.cucumber - cucumber-core - - - com.fasterxml.jackson.core - jackson-databind - provided - - - io.cucumber - cucumber-junit - test - - - junit - junit - test - - - - - - - - net.alchim31.maven - scala-maven-plugin - ${scala-maven-plugin.version} - - - regular-source-compilation - - add-source - compile - testCompile - - - - - add-source - - - ${basedir}/target/generated-sources/i18n - - - - attach-javadocs - - doc-jar - - - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - generate-i18n-sources - - run - - generate-sources - - - - - - - - - - - - - diff --git a/scala/scala_2.11/pom.xml b/scala/scala_2.11/pom.xml deleted file mode 100644 index d3ff241c..00000000 --- a/scala/scala_2.11/pom.xml +++ /dev/null @@ -1,110 +0,0 @@ - - 4.0.0 - - - io.cucumber - cucumber-scala-aggregator - 6.8.3-SNAPSHOT - - - cucumber-scala_2.11 - jar - Cucumber-JVM: Scala (2.11) - - - - org.scala-lang - scala-compiler - ${scala.2.11.version} - provided - - - org.scala-lang - scala-library - ${scala.2.11.version} - provided - - - org.scala-lang.modules - scala-collection-compat_2.11 - 2.2.0 - - - - - com.fasterxml.jackson.module - jackson-module-scala_2.11 - provided - - - - org.mockito - mockito-scala_2.11 - ${mockito-scala.version} - test - - - - - ../sources/src/main/scala - - - ../sources/src/main/resources - - - ../sources/src/test/scala - - - ../sources/src/test/resources - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - - org.codehaus.mojo - build-helper-maven-plugin - - - generate-sources - - add-source - - - - src/main/scala - - - - - - - net.alchim31.maven - scala-maven-plugin - - - -target:jvm-1.8 - -deprecation - -feature - - -language:implicitConversions - - - **/*.java - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - - diff --git a/scala/scala_2.12/pom.xml b/scala/scala_2.12/pom.xml deleted file mode 100644 index a76cfffa..00000000 --- a/scala/scala_2.12/pom.xml +++ /dev/null @@ -1,95 +0,0 @@ - - 4.0.0 - - - io.cucumber - cucumber-scala-aggregator - 6.8.3-SNAPSHOT - - - cucumber-scala_2.12 - jar - Cucumber-JVM: Scala (2.12) - - - - org.scala-lang - scala-compiler - ${scala.2.12.version} - provided - - - org.scala-lang - scala-library - ${scala.2.12.version} - provided - - - org.scala-lang.modules - scala-collection-compat_2.12 - 2.2.0 - - - - - com.fasterxml.jackson.module - jackson-module-scala_2.12 - provided - - - - org.mockito - mockito-scala_2.12 - ${mockito-scala.version} - test - - - - - - ../sources/src/main/scala - - - ../sources/src/main/resources - - - ../sources/src/test/scala - - - ../sources/src/test/resources - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - net.alchim31.maven - scala-maven-plugin - - - -target:jvm-1.8 - - -deprecation - - -feature - - -language:implicitConversions - - - **/*.java - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - - diff --git a/scala/scala_2.13/pom.xml b/scala/scala_2.13/pom.xml deleted file mode 100644 index 202527c0..00000000 --- a/scala/scala_2.13/pom.xml +++ /dev/null @@ -1,163 +0,0 @@ - - 4.0.0 - - - io.cucumber - cucumber-scala-aggregator - 6.8.3-SNAPSHOT - - - cucumber-scala_2.13 - jar - Cucumber-JVM: Scala (2.13) - - - - org.scala-lang - scala-compiler - ${scala.2.13.version} - provided - - - org.scala-lang - scala-library - ${scala.2.13.version} - provided - - - - - - com.fasterxml.jackson.module - jackson-module-scala_2.13 - provided - - - - org.mockito - mockito-scala_2.13 - ${mockito-scala.version} - test - - - - - - ../sources/src/main/scala - - - ../sources/src/main/resources - - - ../sources/src/test/scala - - - ../sources/src/test/resources - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - net.alchim31.maven - scala-maven-plugin - - - - -target:jvm-1.8 - - -deprecation - - -explaintypes - - -feature - - -language:existentials - - -language:experimental.macros - - -language:higherKinds - - -language:implicitConversions - - -unchecked - - -Xcheckinit - - -Xfatal-warnings - - -Xlint:adapted-args - - -Xlint:constant - - -Xlint:delayedinit-select - - -Xlint:doc-detached - - -Xlint:inaccessible - - -Xlint:infer-any - - -Xlint:missing-interpolator - - -Xlint:nullary-override - - -Xlint:nullary-unit - - -Xlint:option-implicit - - -Xlint:package-object-classes - - -Xlint:poly-implicit-overload - - -Xlint:private-shadow - - -Xlint:stars-align - - -Xlint:type-parameter-shadow - - -Ywarn-dead-code - - -Ywarn-extra-implicit - - -Ywarn-numeric-widen - - -Ywarn-unused:implicits - - -Ywarn-unused:imports - - -Ywarn-unused:locals - - -Ywarn-unused:params - - -Ywarn-unused:patvars - - -Ywarn-unused:privates - - -Ywarn-value-discard - - -Ybackend-parallelism - 8 - - -Ycache-plugin-class-loader:last-modified - - -Ycache-macro-class-loader:last-modified - - - **/*.java - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - - diff --git a/scala/sources/src/main/groovy/I18n.scala.gsp b/scala/sources/src/main/groovy/I18n.scala.gsp deleted file mode 100644 index 83353e18..00000000 --- a/scala/sources/src/main/groovy/I18n.scala.gsp +++ /dev/null @@ -1,10 +0,0 @@ -package io.cucumber.scala - -<% dialectProvider.getLanguages().findAll { !unsupported.contains(it) }.each { language -> %> -trait ${language.replaceAll("[\\s-]", "_").toUpperCase()} { - this: ScalaDsl => -<% dialectProvider.getDialect(language, null).stepKeywords.findAll { !it.contains('*') && !it.matches("^\\d.*") }.sort().unique().each { kw -> %> - val ${java.text.Normalizer.normalize(kw.replaceAll("[\\s',!]", ""), java.text.Normalizer.Form.NFC)} = new Step("${java.text.Normalizer.normalize(kw.replaceAll("[\\s',!]", ""), java.text.Normalizer.Form.NFC)}") -<% } %> -} -<% } %> diff --git a/scala/sources/src/main/groovy/generate-i18n-dsl.groovy b/scala/sources/src/main/groovy/generate-i18n-dsl.groovy deleted file mode 100644 index e5dce8bc..00000000 --- a/scala/sources/src/main/groovy/generate-i18n-dsl.groovy +++ /dev/null @@ -1,16 +0,0 @@ -import groovy.text.SimpleTemplateEngine -import io.cucumber.gherkin.GherkinDialectProvider -import java.nio.file.Files - -SimpleTemplateEngine engine = new SimpleTemplateEngine() -def templateSource = new File(project.baseDir, "../sources/src/main/groovy/I18n.scala.gsp").getText() - -def unsupported = ["em"] // The generated files for Emoji do not compile. -GherkinDialectProvider dialectProvider = new GherkinDialectProvider() - -def binding = ["dialectProvider":dialectProvider, "unsupported":unsupported] -template = engine.createTemplate(templateSource).make(binding) - -def file = new File(project.baseDir, "target/generated-sources/i18n/io/cucumber/scala/I18n.scala") -Files.createDirectories(file.parentFile.toPath()) -file.write(template.toString(), "UTF-8") \ No newline at end of file diff --git a/version.sbt b/version.sbt new file mode 100644 index 00000000..0b15ac2f --- /dev/null +++ b/version.sbt @@ -0,0 +1 @@ +version in ThisBuild := "6.8.3-SNAPSHOT" \ No newline at end of file