lithium\test\Controller::__invoke PHP Method

__invoke() public method

Magic method to make Controller callable.
See also: lithium\action\Dispatcher::_callable()
public __invoke ( Request $request, array $dispatchParams, array $options = [] ) : string
$request lithium\action\Request
$dispatchParams array Array of params after being parsed by router.
$options array Some basic options for this controller.
return string
    public function __invoke($request, $dispatchParams, array $options = array())
    {
        $dispatchParamsDefaults = array('args' => array());
        $dispatchParams += $dispatchParamsDefaults;
        $defaults = array('format' => 'html', 'timeout' => 0);
        $options += (array) $request->query + $defaults;
        $params = compact('request', 'dispatchParams', 'options');
        return $this->_filter(__METHOD__, $params, function ($self, $params) {
            $request = $params['request'];
            $options = $params['options'];
            $params = $params['dispatchParams'];
            set_time_limit((int) $options['timeout']);
            $group = join('\\', (array) $params['args']);
            if ($group === "all") {
                $group = Group::all();
                $options['title'] = 'All Tests';
            }
            $self->invokeMethod('_saveCtrlContext');
            $report = Dispatcher::run($group, $options);
            $self->invokeMethod('_restoreCtrlContext');
            $filters = Libraries::locate('test.filter');
            $menu = Libraries::locate('tests', null, array('filter' => '/cases|integration|functional/', 'exclude' => '/mocks/'));
            sort($menu);
            $menu = Set::expand(array_combine($menu, $menu), array('separator' => "\\"));
            $result = compact('request', 'report', 'filters', 'menu');
            return $report->render('layout', $result);
        });
    }