Criterion
Criterion copied to clipboard
Redirections for `stdout` require buffering to be disabled for assertions like `cr_assert_stdout_eq_str` to pass.
I think mostly this is a documentation issue, but I found when I was doing all the redirection tests with stderr everything was working fine (as in the docs), but when I switched to testing stdout it was all failing. It seems the root cause was that stdout was being buffered. Following the documentation, it seems the following was required for this to work.
void redirect_all_stdout(void)
{
cr_redirect_stdout();
setbuf(stdout, NULL);
cr_redirect_stderr();
}
I think the documentation just needs to be updated.