Skip to content

Commit 63a6020

Browse files
committed
Merge pull request QafooLabs#46 from AdrianSchneider/fixTests
Directory no longer returning duplicate entries
2 parents c893442 + 26ac15b commit 63a6020

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/main/QafooLabs/Refactoring/Domain/Model/Directory.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use RecursiveIteratorIterator;
2020
use SplFileInfo;
2121
use AppendIterator;
22+
use CallbackFilterIterator as StandardCallbackFilterIterator;
2223

2324
/**
2425
* A directory in a project.
@@ -73,7 +74,10 @@ function ($file) use ($workingDirectory) {
7374
);
7475
}
7576

76-
return $iterator;
77+
$files = iterator_to_array($iterator);
78+
return new StandardCallbackFilterIterator($iterator, function($file, $filename) use ($files) {
79+
return !in_array($filename, $files);
80+
});
7781
}
7882
}
7983

src/test/QafooLabs/Refactoring/Domain/Model/DirectoryTest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
namespace QafooLabs\Refactoring\Domain\Model;
44

5+
use org\bovigo\vfs\vfsStream;
6+
use org\bovigo\vfs\vfsStreamWrapper;
7+
58
class DirectoryTest extends \PHPUnit_Framework_TestCase
69
{
710
public function testFindAllPhpFilesRecursivly()
@@ -11,4 +14,33 @@ public function testFindAllPhpFilesRecursivly()
1114

1215
$this->assertContainsOnly('QafooLabs\Refactoring\Domain\Model\File', $files);
1316
}
17+
18+
public function testRemovesDuplicates()
19+
{
20+
vfsStreamWrapper::register();
21+
22+
$structure = array(
23+
'src' => array(
24+
'src' => array(),
25+
'Foo' => array(
26+
'src' => array(),
27+
'Foo' => array(),
28+
'Bar.php' => '<?php'
29+
),
30+
)
31+
);
32+
33+
vfsStream::create($structure, VfsStream::setup('project'));
34+
$dir = VfsStream::url('project/src');
35+
36+
$directory = new Directory($dir, $dir);
37+
$files = $directory->findAllPhpFilesRecursivly();
38+
39+
$foundFiles = array();
40+
foreach ($files as $f => $file) {
41+
$foundFiles[] = $f;
42+
}
43+
44+
$this->assertEquals(array('vfs://project/src/Foo/Bar.php'), $foundFiles);
45+
}
1446
}

0 commit comments

Comments
 (0)