subtest_state
error_cnt = env.subtest_state->error_cnt;
env.subtest_state->error_cnt = error_cnt;
ASSERT_HAS_SUBSTR(env.subtest_state->log_buf, cases[i].expected, "expected output");
ASSERT_STREQ(env.subtest_state->log_buf, "", "expected no output");
if (env.subtest_state) {
if (env.subtest_state->stdout_saved)
fclose(env.subtest_state->stdout_saved);
env.subtest_state->stdout_saved = NULL;
if (env.subtest_state)
struct subtest_state *subtest_state;
state->subtest_states = malloc(subtest_num * sizeof(*subtest_state));
subtest_state = &state->subtest_states[i];
memset(subtest_state, 0, sizeof(*subtest_state));
subtest_state->name = strdup(msg.subtest_done.name);
subtest_state->error_cnt = msg.subtest_done.error_cnt;
subtest_state->skipped = msg.subtest_done.skipped;
subtest_state->filtered = msg.subtest_done.filtered;
&subtest_state->log_buf,
&subtest_state->log_cnt))
static void free_subtest_state(struct subtest_state *state)
struct subtest_state *subtest_state;
subtest_state = &state->subtest_states[i];
strscpy(msg.subtest_done.name, subtest_state->name, MAX_SUBTEST_NAME);
msg.subtest_done.error_cnt = subtest_state->error_cnt;
msg.subtest_done.skipped = subtest_state->skipped;
msg.subtest_done.filtered = subtest_state->filtered;
if (verbose() || state->force_log || subtest_state->error_cnt) {
if (subtest_state->log_cnt)
worker_main_send_log(sock, subtest_state->log_buf, subtest_state->log_cnt);
free_subtest_state(subtest_state);
free(subtest_state->name);
if (env.subtest_state)
env.test->test_name, env.subtest_state->name);
struct subtest_state *subtest_state;
subtest_state = &test_state->subtest_states[i];
subtest_failed = subtest_state->error_cnt;
subtest_filtered = subtest_state->filtered;
if (subtest_state->log_cnt && print_subtest) {
print_test_log(subtest_state->log_buf,
subtest_state->log_cnt);
test->test_name, subtest_state->name,
test_result(subtest_state->error_cnt,
subtest_state->skipped));
jsonw_string_field(w, "name", subtest_state->name);
jsonw_write_log_message(w, subtest_state->log_buf, subtest_state->log_cnt);
struct subtest_state *subtest_state = env.subtest_state;
if (subtest_state->error_cnt) {
if (!subtest_state->skipped)
test->test_name, subtest_state->name,
test_result(subtest_state->error_cnt,
subtest_state->skipped));
env.subtest_state = NULL;
struct subtest_state *subtest_state;
size_t sub_state_size = sizeof(*subtest_state);
if (env.subtest_state)
subtest_state = &state->subtest_states[state->subtest_num - 1];
memset(subtest_state, 0, sub_state_size);
subtest_state->name = strdup(subtest_name);
if (!subtest_state->name) {
subtest_state->filtered = true;
subtest_state->should_tmon = match_subtest(&env.tmon_selector.whitelist,
env.subtest_state = subtest_state;
stdio_hijack_init(&subtest_state->log_buf, &subtest_state->log_cnt);
if (env.subtest_state)
env.subtest_state->skipped = true;
if (env.subtest_state)
env.subtest_state->error_cnt++;
if (env.subtest_state)
env.subtest_state->stdout_saved = stdout;
(env.subtest_state && env.subtest_state->should_tmon)) {
subtest_name = env.subtest_state ? env.subtest_state->name : NULL;
struct subtest_state *subtest_state; /* current running subtest state */
struct subtest_state *subtest_states;