/** * Extracts every module required by a web test by scanning its calls * to parent::setUp(). * * @param \Pharborist\Objects\ClassNode $test * * @return string[] * Array of modules set up by this module. */ private function extractModules(ClassNode $test) { $modules = []; $test->find(Filter::isClassMethodCall('parent', 'setUp'))->filter(function (ClassMethodCallNode $call) { return sizeof($call->getArguments()) > 0; })->each(function (ClassMethodCallNode $call) use(&$modules) { foreach ($call->getArguments() as $argument) { if ($argument instanceof StringNode) { $modules[] = $argument->toValue(); } } $call->clearArguments(); }); return array_unique($modules); }