/** * searches for projects. * * @param string $name * @param \Closure $finder * @param string $nameKey * * @return Project[] */ protected function requestProjects($name, \Closure $finder, $nameKey) { $projects = []; if ($this->repoParser->isConcrete($name)) { $project = $this->getProject($name); $projects[$project->getName()] = $project; } else { $repos = $finder($name); if (true === $this->repoParser->isWildcard($name)) { foreach ((array) $repos as $repo) { $project = $this->getProject($repo[$nameKey]); $projects[$project->getName()] = $project; } } else { foreach ((array) $repos as $repo) { if (false === $this->repoParser->matchesRegex($name, $repo[$nameKey])) { continue; } $project = $this->getProject($repo[$nameKey]); $projects[$project->getName()] = $project; } } } return $projects; }
public function it_throws_an_exception_for_invalid_project_names(RepositoryParser $repositoryParser) { $repositoryParser->isConcrete('foo')->shouldBeCalled()->willReturn(false); $this->setRepositoryParser($repositoryParser); $this->shouldThrow('\\InvalidArgumentException')->during('getProject', ['foo']); }