void pcu_runner_searchHierarchy( pcu_suite_t* suite ) { if( pcu_nnames ) { int ii; for( ii = 0; ii < pcu_nnames; ii++ ) { if( !strcmp( pcu_names[ii], suite->name ) ) break; } if( ii == pcu_nnames ) { pcu_suite_t* cur; cur = suite->subsuites; while( cur ) { pcu_runner_searchHierarchy( cur ); cur = cur->next; } pcu_suite_clear( suite ); free( suite ); return; } } /* Add to the list of current suites. */ if( pcu_suites ) { pcu_suite_t* cur; cur = pcu_suites; while( cur->next ) cur = cur->next; cur->next = suite; } else pcu_suites = suite; pcu_nsuites++; }
void pcu_suite_clear( pcu_suite_t* suite ) { pcu_test_t* tst; pcu_source_t* src; pcu_suite_t* sub; while( suite->tests ) { while( suite->tests->srcs ) { src = suite->tests->srcs->next; pcu_source_clear( suite->tests->srcs ); free( suite->tests->srcs ); suite->tests->srcs = src; } tst = suite->tests->next; free( suite->tests ); suite->tests = tst; } suite->ntests = 0; suite->curtest = NULL; while( suite->subsuites ) { pcu_suite_clear( suite->subsuites ); sub = suite->subsuites->next; free( suite->subsuites ); suite->subsuites = sub; } if( suite->data ) { free( suite->data ); suite->data = NULL; } }
void pcu_runner_finalise() { pcu_suite_t* tmp; while( pcu_suites ) { pcu_suite_clear( pcu_suites ); tmp = pcu_suites->next; free( pcu_suites ); pcu_suites = tmp; } /* Don't delete the associated listeners ... this remains user code responsibility - just delete the array of ptrs */ free ( pcu_lsnrs ); }