lithium\test\Controller::__invoke()

public method

Magic method to make Controller callable.

Parameters

  • \lithium\action\Request $request
  • array $dispatchParams

    Array of params after being parsed by router.

  • array $options

    Some basic options for this controller.

Returns

string

Filter

This method can be filtered.

Source

	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((integer) $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);
		});
	}