sbt / sbt-cucumber

Cucumber plugin for SBT.
Other
20 stars 14 forks source link

Output cucumber runner results directy to stdio #3

Closed asarturas closed 5 years ago

asarturas commented 6 years ago

Previously used LoggingOutput is a inconvenient for story TDD cycle, since it prepends all output with log level and prevents from quickly copy pasting generated steps code, for example:

[info] Then("""^result should be (\d+) with mistype$"""){ (arg0:Int) =>
[info]   //// Write code here that turns the phrase above into concrete actions
[info]   throw new PendingException()
[info] }

after the change the output would be as before minus the prepended log level, for example:

[info] Compiling 1 Scala source to /Volumes/Arturas/Projects/scala-cucumber-example/target/scala-2.12/classes ...
[info] Done compiling.
[info] Compiling 2 Scala sources to /Volumes/Arturas/Projects/scala-cucumber-example/target/scala-2.12/test-classes ...
[info] Done compiling.
@my-tag
Feature: Multiplication
  In order to avoid making mistakes
  As a dummy
  I want to multiply numbers

  @my-tag
  Scenario: Multiply two variables      # features/multiplication.feature:7
    Given a variable x equals 2         # MultiplicationSteps.scala:11
    And a variable y equals 3           # MultiplicationSteps.scala:15
    When I multiply x and y             # MultiplicationSteps.scala:19
    Then result should be 5             # MultiplicationSteps.scala:23
      org.scalatest.exceptions.TestFailedException: 6 was not equal to 5
    at org.scalatest.MatchersHelper$.indicateFailure(MatchersHelper.scala:346)
    at org.scalatest.Matchers$AnyShouldWrapper.shouldBe(Matchers.scala:6864)
    at example.steps.MultiplicationSteps.$anonfun$new$4(MultiplicationSteps.scala:24)
    at example.steps.MultiplicationSteps.$anonfun$new$4$adapted(MultiplicationSteps.scala:23)
    at cucumber.api.scala.ScalaDsl$StepBody$$anonfun$apply$2.applyOrElse(ScalaDsl.scala:100)
    at cucumber.api.scala.ScalaDsl$StepBody$$anonfun$apply$2.applyOrElse(ScalaDsl.scala:98)
    at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:34)
    at cucumber.runtime.scala.ScalaStepDefinition.execute(ScalaStepDefinition.scala:70)
    at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:40)
    at cucumber.api.TestStep.executeStep(TestStep.java:102)
    at cucumber.api.TestStep.run(TestStep.java:83)
    at cucumber.api.TestCase.run(TestCase.java:58)
    at cucumber.runner.Runner.runPickle(Runner.java:80)
    at cucumber.runtime.Runtime.runFeature(Runtime.java:119)
    at cucumber.runtime.Runtime.run(Runtime.java:104)
    at cucumber.api.cli.Main.run(Main.java:36)
    at cucumber.api.cli.Main.main(Main.java:18)
    at ✽.result should be 5(features/multiplication.feature:11)

    And result should be 6 with mistype # null

Failed scenarios:
features/multiplication.feature:7 # Multiply two variables

1 Scenarios (1 failed)
5 Steps (1 failed, 1 undefined, 3 passed)
0m0.209s

org.scalatest.exceptions.TestFailedException: 6 was not equal to 5
    at org.scalatest.MatchersHelper$.indicateFailure(MatchersHelper.scala:346)
    at org.scalatest.Matchers$AnyShouldWrapper.shouldBe(Matchers.scala:6864)
    at example.steps.MultiplicationSteps.$anonfun$new$4(MultiplicationSteps.scala:24)
    at example.steps.MultiplicationSteps.$anonfun$new$4$adapted(MultiplicationSteps.scala:23)
    at cucumber.api.scala.ScalaDsl$StepBody$$anonfun$apply$2.applyOrElse(ScalaDsl.scala:100)
    at cucumber.api.scala.ScalaDsl$StepBody$$anonfun$apply$2.applyOrElse(ScalaDsl.scala:98)
    at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:34)
    at cucumber.runtime.scala.ScalaStepDefinition.execute(ScalaStepDefinition.scala:70)
    at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:40)
    at cucumber.api.TestStep.executeStep(TestStep.java:102)
    at cucumber.api.TestStep.run(TestStep.java:83)
    at cucumber.api.TestCase.run(TestCase.java:58)
    at cucumber.runner.Runner.runPickle(Runner.java:80)
    at cucumber.runtime.Runtime.runFeature(Runtime.java:119)
    at cucumber.runtime.Runtime.run(Runtime.java:104)
    at cucumber.api.cli.Main.run(Main.java:36)
    at cucumber.api.cli.Main.main(Main.java:18)
    at ✽.result should be 5(features/multiplication.feature:11)

You can implement missing steps with the snippets below:

Then("""^result should be (\d+) with mistype$"""){ (arg0:Int) =>
  //// Write code here that turns the phrase above into concrete actions
  throw new PendingException()
}
[error] java.lang.IllegalStateException: Cucumber did not succeed and returned error =1
[error]     at com.waioeka.sbt.CucumberPlugin$.$anonfun$projectSettings$6(CucumberPlugin.scala:113)
[error]     at com.waioeka.sbt.CucumberPlugin$.$anonfun$projectSettings$6$adapted(CucumberPlugin.scala:88)
[error]     at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]     at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:39)
[error]     at sbt.std.Transform$$anon$4.work(System.scala:66)
[error]     at sbt.Execute.$anonfun$submit$2(Execute.scala:263)
[error]     at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]     at sbt.Execute.work(Execute.scala:272)
[error]     at sbt.Execute.$anonfun$submit$1(Execute.scala:263)
[error]     at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:174)
[error]     at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[error]     at java.lang.Thread.run(Thread.java:745)
[error] (cucumber) java.lang.IllegalStateException: Cucumber did not succeed and returned error =1
[error] Total time: 7 s, completed 28-Sep-2018 21:35:18
screen shot 2018-09-28 at 21 40 53
asarturas commented 5 years ago

Hello, is this repository still supported? I might be able to help with maintenance if you need.

lewismj commented 5 years ago

Hi, Yes, will try to publish out an update shortly. Been busy with lots of FRTB stuff at work and basically 2018 has been a bit ‘full time’ work wise ... Hoping to get back into is over the next few months as the pressure is off a bit. All the best, Mike