Exemplo n.º 1
0
static test_outcome run_test_with_siglongjmp(const test_suite suite, const test* test_case)
{
	int sigsetret;
	if (0 == test_case->test_case) {
		fprintf(stderr, "%s is a null test\n", current_test);
		return INVALID;
	}
	sigsetret = sigsetjmp(recovery_buffer, 1);
	VERBOSE_LOG("Test %s:%s checkpoint status %d\n", sigsetret);
	switch (sigsetret) { /* clean path */
		case 0:
			current_stage = SETUP;
			VERBOSE_LOG("Running %s:%s suite setup\n");
			suite.setup();
			VERBOSE_LOG("Running %s:%s setup\n");
			test_case->setup();
			current_stage = TEST;
			VERBOSE_LOG("Running %s:%s\n");
			test_case->test_case();
			current_stage = TEARDOWN;
			VERBOSE_LOG("Running %s:%s tear down\n");
			test_case->teardown();
			VERBOSE_LOG("Running %s:%s tear down\n");
			suite.teardown();
			return PASS;
			break;
		case SETUP:
			LOG_TEST_ERROR("Error in [%s:%s] during setup\n");
			sigsetret = sigsetjmp(recovery_buffer, 1);
			if (0 == sigsetret) {
				current_stage = TEARDOWN;
				VERBOSE_LOG("Running %s:%s setup failure tear down\n");
				test_case->teardown();
			}
			break;
		case TEST:
			LOG_TEST_ERROR("Test failure in [%s:%s] ***%s\n", TEST_OUTCOMES[FAIL]);
			sigsetret = sigsetjmp(recovery_buffer, 1);
			if (0 == sigsetret) {
				current_stage = TEARDOWN;
				VERBOSE_LOG("Running %s:%s test failure tear down\n");
				test_case->teardown();
			}
			return FAIL;
			break;
		case TEARDOWN:
			LOG_TEST_ERROR("Error in [%s:%s] during teardown\n");
			break;
		default:
			LOG_TEST_ERROR("Error in [%s:%s] with unknown failure type %u\n", sigsetret);
			break;
	}

	return UNRESOLVED;
}
Exemplo n.º 2
0
static test_outcome run_test(const test_suite suite, const test* test_case)
{
    VERBOSE_LOG("Test %s:%s running in child process %u\n", getpid());
    current_stage = SETUP;
	VERBOSE_LOG("Setting up suite for test %s:%s\n");
	suite.setup();
    VERBOSE_LOG("Setting up test %s:%s\n");
    test_case->setup();
    VERBOSE_LOG("Running %s:%s\n");
    current_stage = TEST;
    test_case->test_case();
    current_stage = TEARDOWN;
    VERBOSE_LOG("Running %s:%s tear down\n");
    test_case->teardown();
	VERBOSE_LOG("Tearing down suite for %s:%s\n");
    return PASS;
}