Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrong test window output with custom test harness instead of libtest #9041

Open
ilslv opened this issue Jul 11, 2022 · 0 comments
Open

Wrong test window output with custom test harness instead of libtest #9041

ilslv opened this issue Jul 11, 2022 · 0 comments
Assignees
Labels
subsystem::tests Issues related to test frameworks support

Comments

@ilslv
Copy link

ilslv commented Jul 11, 2022

Environment

  • IntelliJ Rust plugin version: 0.4.173.4714-221
  • Rust toolchain version: 1.62.0-x86_64-apple-darwin
  • IDE name and version: CLion 221.5921.27
  • Operating system: macOS 12.3.1

Problem description

I'm currently integrating support for --format=json feature to cucumber testing framework. This is done via emulating libtest's json output. While serial test execution works fine, concurrent tests lead to some tests being skipped inside the IDE window.

Steps to reproduce

Serial execution

  • Console output:
{"type":"suite","event":"started","test_count":8}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::3: Background Given 1 sec"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::3: Background Given 1 sec"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::14: Given 2 secs"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::14: Given 2 secs"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::15: When 2 secs"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::15: When 2 secs"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::16: Then 2 secs"}
{"type":"test","event":"failed","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::16: Then 2 secs","stdout":"Step panicked. Captured output: Too much!\nWorld(\n    4,\n)"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::3: Background Given 1 sec"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::3: Background Given 1 sec"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::6: Given 1 sec"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::6: Given 1 sec"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::7: When 1 sec"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::7: When 1 sec"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::8: Then unknown"}
{"type":"test","event":"ignored","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::8: Then unknown"}
{"type":"suite","event":"failed","passed":6,"failed":1,"ignored":1,"measured":0,"filtered_out":0,"exec_time":7.034503}
  • IDE window:

Screenshot 2022-07-11 at 09 04 35

Screenshot 2022-07-11 at 09 16 50

Concurrent execution:

Execution of same tests, but concurrently, leads to some tests being skipped inside the IDE window. Basically, we output the same test events, but in a different order. cucumber guarantees, that every test case has unique name and started event is outputted before ok/failed/ignored.

  • Console output:
{"type":"suite","event":"started","test_count":8}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::3: Background Given 1 sec"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::3: Background Given 1 sec"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::3: Background Given 1 sec"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::6: Given 1 sec"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::3: Background Given 1 sec"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::14: Given 2 secs"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::6: Given 1 sec"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::7: When 1 sec"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::14: Given 2 secs"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::15: When 2 secs"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::7: When 1 sec"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::8: Then unknown"}
{"type":"test","event":"ignored","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::5: Scenario 1 sec::8: Then unknown"}
{"type":"test","event":"ok","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::15: When 2 secs"}
{"type":"test","event":"started","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::16: Then 2 secs"}
{"type":"test","event":"failed","name":"Basic /Users/work/Work/cucumber/tests/features/wait/rule.feature::11: Rule rule::13: Scenario 2 secs::16: Then 2 secs","stdout":"Step panicked. Captured output: Too much!\nWorld(\n    4,\n)"}
{"type":"suite","event":"failed","passed":6,"failed":1,"ignored":1,"measured":0,"filtered_out":0,"exec_time":7.045812}
  • IDE window:

Screenshot 2022-07-11 at 09 07 09

Screenshot 2022-07-11 at 09 16 08

@Undin Undin added the subsystem::tests Issues related to test frameworks support label Jul 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
subsystem::tests Issues related to test frameworks support
Projects
None yet
Development

No branches or pull requests

3 participants