From 411fdc9f160adf48acd9f5cc65efdb7e2a5bb19a Mon Sep 17 00:00:00 2001 From: Matijs van Zuijlen Date: Wed, 20 Nov 2024 11:24:43 +0100 Subject: [PATCH] Fix cucumber step 'it should pass|fail with exactly:' This fixes the failure message of the output comparison so that it shows the correct diff. --- .../command/check_output_of_command.feature | 32 +++++++++++++++++++ lib/aruba/cucumber/command.rb | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/features/03_testing_frameworks/cucumber/steps/command/check_output_of_command.feature b/features/03_testing_frameworks/cucumber/steps/command/check_output_of_command.feature index 8061f9c81..3266514b5 100644 --- a/features/03_testing_frameworks/cucumber/steps/command/check_output_of_command.feature +++ b/features/03_testing_frameworks/cucumber/steps/command/check_output_of_command.feature @@ -327,6 +327,38 @@ Feature: All output of commands which were executed When I run `cucumber` Then the features should all pass + Scenario: Match passing exit status but fail to match exact output + Given an executable named "bin/aruba-test-cli" with: + """bash + #!/usr/bin/env bash + + echo -ne "hello\nworld" + exit 0 + """ + And a file named "features/output.feature" with: + """cucumber + Feature: Run command + Scenario: Run command + When I run `aruba-test-cli` + Then it should pass with exactly: + \"\"\" + hello + worl + \"\"\" + """ + When I run `cucumber` + Then the features should not pass with: + """ + expected "hello + world" to output string is eq: "hello + worl" + Diff: + @@ -1,3 +1,3 @@ + hello + -worl + +world + """ + Scenario: Match failing exit status and partial output Given an executable named "bin/aruba-test-cli" with: """bash diff --git a/lib/aruba/cucumber/command.rb b/lib/aruba/cucumber/command.rb index 1eb2fd4cc..1f9fc1827 100644 --- a/lib/aruba/cucumber/command.rb +++ b/lib/aruba/cucumber/command.rb @@ -423,7 +423,7 @@ expect(last_command_stopped).not_to be_successfully_executed end - expect(last_command_stopped).to have_output an_output_string_being_eq(expected) + expect(last_command_stopped.output).to output_string_eq(expected) end Then(/^it should not (pass|fail) (?:with regexp?|matching):$/) do |pass_fail, expected|