inline void traverse_test_tree( test_unit const& tu, test_tree_visitor& V, bool ignore_status = false ) { if( tu.p_type == tut_case ) traverse_test_tree( static_cast<test_case const&>( tu ), V, ignore_status ); else traverse_test_tree( static_cast<test_suite const&>( tu ), V, ignore_status ); }
inline void traverse_test_tree( test_unit const& tu, test_tree_visitor& V ) { if( tu.p_type == tut_case ) traverse_test_tree( static_cast<test_case const&>( tu ), V ); else traverse_test_tree( static_cast<test_suite const&>( tu ), V ); }
DependencyIdSet TestUnitIdReader::filter(const test_suite& suite, const DependencyNameSet& depSet) { std::string names = serialize_names(depSet); TestUnitIdReader filter(names); // master_test_suite_t& suite = framework::master_test_suite(); traverse_test_tree(suite, filter); return filter.ids; }
EXPORT_C void results_collector_t::test_unit_skipped( test_unit const& tu ) { if( tu.p_type == tut_suite ) { test_case_counter tcc; traverse_test_tree( tu, tcc ); test_results& tr = s_rc_impl().m_results_store[tu.p_id]; tr.clear(); tr.p_skipped.value = true; tr.p_test_cases_skipped.value = tcc.m_count; } }
EXPORT_C void results_collector_t::test_unit_finish( test_unit const& tu, unsigned long ) { if( tu.p_type == tut_suite ) { results_collect_helper ch( s_rc_impl().m_results_store[tu.p_id], tu ); traverse_test_tree( tu, ch ); } else { test_results const& tr = s_rc_impl().m_results_store[tu.p_id]; bool num_failures_match = tr.p_aborted || tr.p_assertions_failed >= tr.p_expected_failures; if( !num_failures_match ) BOOST_TEST_MESSAGE( "Test case has less failures then expected" ); } }
static DependencyLevelMap readLevels(const test_suite& suite) { LevelCalculateVisitor visitor; // master_test_suite_t& suite = framework::master_test_suite(); traverse_test_tree(suite, visitor); return visitor.map; }
/** * As a input method takes normalized map of dependency */ bool DependencySolver::orderDependency() const { DependencyIdSet parentsSet; /** * Read parents to sort members of */ { DependencyIdMap::const_iterator iter = normalizedMap.begin(); DependencyIdMap::const_iterator eiter = normalizedMap.end(); for(; iter!=eiter; iter++) { //LogInfo << "dependency[" << iter->first << "]: "; //print(iter->second); //LogInfo << std::endl; DependencyId unitId = iter->first; //DependencyIdSet depsSet = iter->second; //fix_dependency(unitId, depsSet); test_unit* unit = getUnit(unitId); DependencyId parentId = unit->p_parent_id; parentsSet.insert(parentId); } } /** * Sort members */ { DependencyIdSet::iterator iter = parentsSet.begin(); DependencyIdSet::iterator eiter = parentsSet.end(); for(; iter!=eiter; iter++) { //LogInfo << *iter << ", "; //check_dep(levels, unitId, *iter); DependencyId currId = *iter; test_suite* curr = getSuite(currId); ReadDirectMembersVisitor reader; traverse_test_tree(*curr, reader); std::deque<DependencyId>& members = reader.members; bool sorted = sortMembers(normalizedMap, members); if (sorted) { //exchange elements bool exchanged = actualizeMembers(*curr, members); if (exchanged==false) { DEPENDENCY_LOG_ERROR( "Unable to actualize suite[" << currId << "] with dependencies" ); return false; } //else actualized } else { //unable to resolve dependencies DEPENDENCY_LOG_ERROR( "Unable to sort dependencies" ); return false; } } return true; } }
DependencyIdSet TestUnitIdReader::filter(const boost::unit_test::test_suite& suite, const DependencyName& name) { TestUnitIdReader filter(name); traverse_test_tree(suite, filter); return filter.ids; }