split out the test gathering tree walk and the test running process