Skip to content
This repository has been archived by the owner on Dec 13, 2023. It is now read-only.

No asserts in threads of tests #25

Closed
elfenpiff opened this issue Oct 31, 2023 · 3 comments · Fixed by #28 or #32
Closed

No asserts in threads of tests #25

elfenpiff opened this issue Oct 31, 2023 · 3 comments · Fixed by #28 or #32
Labels
bug Something isn't working

Comments

@elfenpiff
Copy link
Contributor

Required information

If a thread in a test encounters an assert and suddenly terminates, it is possible that some succeeding variables, required for terminating the whole tests, are not being set. Therefore, either avoid asserts in tests or use it only if it occurs not before such a test flow control variable.

@elfenpiff elfenpiff added the bug Something isn't working label Oct 31, 2023
@elfenpiff
Copy link
Contributor Author

cc @elBoberido

elfenpiff added a commit to elfenpiff/elkodon that referenced this issue Nov 1, 2023
elfenpiff added a commit that referenced this issue Nov 1, 2023
@elfenpiff elfenpiff reopened this Nov 3, 2023
@elfenpiff
Copy link
Contributor Author

Reopened since also asserts outside of tests can cause deadlocks when control flow variables are set afterwards.

elfenpiff added a commit to elfenpiff/elkodon that referenced this issue Nov 3, 2023
elfenpiff added a commit to elfenpiff/elkodon that referenced this issue Nov 3, 2023
elfenpiff added a commit to elfenpiff/elkodon that referenced this issue Nov 3, 2023
elfenpiff added a commit to elfenpiff/elkodon that referenced this issue Nov 3, 2023
@elBoberido
Copy link
Collaborator

@elfenpiff I found this https://stackoverflow.com/questions/35988775/how-can-i-cause-a-panic-on-a-thread-to-immediately-end-the-main-thread/36031130#36031130

The following code would terminate the whole test when an assert in a thread fails. It can also be placed in a function which could be called at the start of a test

let orig_hook = panic::take_hook();
panic::set_hook(Box::new(move |panic_info| {
    // invoke the default handler and exit the process
    orig_hook(panic_info);
    process::exit(1);
}));

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
2 participants