public function __construct(Nette\Loaders\RobotLoader $robotLoader) { $classes = $robotLoader->getIndexedClasses(); foreach ($classes as $class => $file) { if (class_exists($class)) { $reflection = new \Nette\Reflection\ClassType($class); if ($reflection->implementsInterface('Tatami\\Modules\\IModule')) { if (!($reflection->isAbstract() or $reflection->isInterface())) { $this->modules[] = $this->parseModuleName($reflection->getShortName()); } } if ($reflection->isSubclassOf('Tatami\\Presenters\\BackendPresenter')) { $moduleName = $this->parseModuleName($reflection->getNamespaceName()); $presenterName = $this->parsePresenterName($reflection->getShortName()); $this->presenters[$moduleName][] = $presenterName; $methods = $reflection->getMethods(ReflectionMethod::IS_PUBLIC); foreach ($methods as $method) { if (Strings::match($method->name, '/action/') or Strings::match($method->name, '/render/')) { $this->actions[$presenterName][] = $this->parseActionName($method->name); } } } unset($reflection); } } }
/** * Find test suits to run * * @param string $folder Where to look * @return string[] */ protected function findSuits($folder) { $suits = []; $robot = new \Nette\Loaders\RobotLoader(); $robot->setCacheStorage(new \Nette\Caching\Storages\DevNullStorage()); $robot->addDirectory($folder); $robot->acceptFiles = "*.phpt"; $robot->rebuild(); $robot->register(); $classes = $robot->getIndexedClasses(); foreach ($classes as $class => $file) { $rc = new \Nette\Reflection\ClassType($class); if (!$rc->isAbstract() and $rc->isSubclassOf(TestCase::class)) { $suits[] = [$rc->getName(), $file]; } } return $suits; }
private function findModules() { if ($this->cache->offsetExists('modules')) { $modules = $this->cache->offsetGet('modules'); } else { $classes = $this->robotLoader->getIndexedClasses(); $modules = array(); foreach ($classes as $class => $file) { if (class_exists($class)) { $reflection = new \Nette\Reflection\ClassType($class); if ($reflection->implementsInterface('Tatami\\Modules\\IModule')) { if (!($reflection->isAbstract() or $reflection->isInterface())) { $module = new $class(); $modules[$module->getName()] = $module; } } unset($reflection); } } $this->cache->offsetSet('modules', $modules); } return $modules; }