Skip to content

Commit

Permalink
Add test cases for ignored and forced files
Browse files Browse the repository at this point in the history
  • Loading branch information
Lander Vanderstraeten committed Oct 10, 2017
1 parent 1306b02 commit 694994f
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 4 deletions.
53 changes: 52 additions & 1 deletion spec/Task/PhpStanSpec.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ function it_should_run_in_run_context(RunContext $context)
function it_does_not_do_anything_if_there_are_no_files(ProcessBuilder $processBuilder, ContextInterface $context)
{
$processBuilder->buildProcess('phpstan')->shouldNotBeCalled();
$processBuilder->buildProcess()->shouldNotBeCalled();
$context->getFiles()->willReturn(new FilesCollection());

$result = $this->run($context);
Expand Down Expand Up @@ -89,6 +88,58 @@ function it_runs_the_suite(ProcessBuilder $processBuilder, Process $process, Con
$result->isPassed()->shouldBe(true);
}

function it_runs_the_suite_with_ignored_files(ProcessBuilder $processBuilder, Process $process, ContextInterface $context, GrumPHP $grumPHP)
{
$grumPHP->getTaskConfiguration('phpstan')->willReturn([
'ignore_patterns' => ['TaskResultCollection.php'],
]);

$context->getFiles()->willReturn(new FilesCollection([
new SplFileInfo('src/Collection/TaskResultCollection.php', 'src/Collection', 'TaskResultCollection.php'),
new SplFileInfo('src/Collection/TaskResultCollection.php', 'src/Collection', 'Passed.php'),
]));

$processBuilder->buildProcess('phpstan')->shouldNotBeCalled();

$arguments = new ProcessArgumentsCollection();
$processBuilder->createArgumentsForCommand('phpstan')->willReturn($arguments);
$processBuilder->buildProcess($arguments)->willReturn($process);

$process->run()->shouldBeCalled();
$process->isSuccessful()->willReturn(true);
$process->getErrorOutput()->willReturn('');
$process->getOutput()->willReturn('');

$result = $this->run($context);
$result->shouldBeAnInstanceOf(TaskResultInterface::class);
$result->getResultCode()->shouldBe(TaskResult::PASSED);
}

function it_runs_the_suite_with_forced_files(ProcessBuilder $processBuilder, Process $process, ContextInterface $context, GrumPHP $grumPHP)
{
$grumPHP->getTaskConfiguration('phpstan')->willReturn([
'ignore_patterns' => ['TaskResultCollection.php'],
'force_patterns' => ['TaskResultCollection.php'],
]);

$arguments = new ProcessArgumentsCollection();
$processBuilder->createArgumentsForCommand('phpstan')->willReturn($arguments);
$processBuilder->buildProcess($arguments)->willReturn($process);

$process->run()->shouldBeCalled();
$process->isSuccessful()->willReturn(true);
$process->getErrorOutput()->willReturn('');
$process->getOutput()->willReturn('');

$context->getFiles()->willReturn(new FilesCollection([
new SplFileInfo('src/Collection/TaskResultCollection.php', 'src/Collection', 'TaskResultCollection.php')])
);

$result = $this->run($context);
$result->shouldBeAnInstanceOf(TaskResultInterface::class);
$result->getResultCode()->shouldBe(TaskResult::PASSED);
}

function it_throws_exception_if_the_process_fails(ProcessBuilder $processBuilder, Process $process, ContextInterface $context)
{
$arguments = new ProcessArgumentsCollection();
Expand Down
10 changes: 7 additions & 3 deletions src/Task/PhpStan.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,16 @@ public function canRunInContext(ContextInterface $context)
public function run(ContextInterface $context)
{
$config = $this->getConfiguration();
$forcedFiles = $context->getFiles()->paths($config['force_patterns']);

$files = $context
->getFiles()
->notPaths($config['ignore_patterns'])
->extensions($config['triggered_by'])
->ensureFiles($forcedFiles);
->extensions($config['triggered_by']);

if (!empty($config['force_patterns'])) {
$forcedFiles = $context->getFiles()->paths($config['force_patterns']);
$files = $files->ensureFiles($forcedFiles);
}

if (0 === count($files)) {
return TaskResult::createSkipped($this, $context);
Expand Down

0 comments on commit 694994f

Please sign in to comment.