1.56
class BOOST_TEST_DECL test_tree_visitor {
public:
// test tree visitor interface
virtual void visit( test_case const& ) {}
virtual bool test_suite_start( test_suite const& ) { return true; }
virtual void test_suite_finish( test_suite const& ) {}
protected:
BOOST_TEST_PROTECTED_VIRTUAL ~test_tree_visitor() {}
};
1.64
class BOOST_TEST_DECL test_tree_visitor {
public:
// test tree visitor interface
virtual bool visit( test_unit const& ) { return true; }
virtual void visit( test_case const& tc ) { visit( (test_unit const&)tc ); }
virtual bool test_suite_start( test_suite const& ts ){ return visit( (test_unit const&)ts ); }
virtual void test_suite_finish( test_suite const& ) {}
protected:
BOOST_TEST_PROTECTED_VIRTUAL ~test_tree_visitor() {}
};
To list test suites and test cases of our test exes, I implemented a custom visitor in Boost 1.56 and simply did
const auto& master_ts = but::framework::master_test_suite();
but::traverse_test_tree(master_ts, visitor);
This is broken in 1.64, none of the old methods from the visitor are called, and thus no suites or cases are discovered. Two out of 3 of the old methods are forwards to the new visit() method,
and obviously the implementation only calls the new visit(). The forwarding should be in the other direction for backward-compatibility.
Can someone please shed some light on this incompatible change? Thanks, --DD