Skip to content

Commit

Permalink
Merge pull request #943 from cucumber/issue-942-improve-step-failure-…
Browse files Browse the repository at this point in the history
…messages

Improve two step failure messages
  • Loading branch information
mvz authored Nov 21, 2024
2 parents 6b05a86 + 411fdc9 commit 45307e6
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,23 @@ Feature: STDERR of commands which were executed
"""
When I run `cucumber`
Then the features should all pass

Scenario: Failure message when checking that stderr from all processes is empty
Given a file named "features/output.feature" with:
"""
Feature: Run command
Scenario: Run command
When I run `bash -c 'printf "hello\nworld!\n" >&2'`
And I run `printf "hola"`
And the stderr should not contain anything
"""
When I run `cucumber`
Then the features should not pass with:
"""
expected "hello
world!" to output string is eq: ""
Diff:
@@ -1,2 +1,4 @@
+hello
+world!
"""
12 changes: 4 additions & 8 deletions lib/aruba/cucumber/command.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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|
Expand All @@ -450,14 +450,10 @@
expect(last_command_stopped).to have_output an_output_string_matching(expected)
end

Then(/^(?:the )?(output|stderr|stdout) should not contain anything$/) do |channel|
matcher = case channel
when 'output'; then :have_output
when 'stderr'; then :have_output_on_stderr
when 'stdout'; then :have_output_on_stdout
end
Then '(the ){channel} should not contain anything' do |channel|
combined_output = send(:"all_#{channel}")

expect(all_commands).to include send(matcher, be_nil.or(be_empty))
expect(combined_output).to output_string_eq ''
end

Then(/^(?:the )?(output|stdout|stderr) should( not)? contain all of these lines:$/) \
Expand Down

0 comments on commit 45307e6

Please sign in to comment.