8000 fixup! [Finder] Look for gitignore patterns up to git root · symfony/symfony@1f16455 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1f16455

Browse files
committed
fixup! [Finder] Look for gitignore patterns up to git root
1 parent 2b84a7c commit 1f16455

File tree

3 files changed

+53
-19
lines changed

3 files changed

+53
-19
lines changed

src/Symfony/Component/Finder/Iterator/VcsIgnoredFilterIterator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public function __construct(\Iterator $iterator, string $baseDir)
3535
$this->baseDir = $this->normalizePath($baseDir);
3636

3737
foreach ($this->parentDirectoriesUpwards($this->baseDir) as $parentDirectory) {
38-
if (is_dir("{$parentDirectory}/.git")) {
38+
if (@is_dir("{$parentDirectory}/.git")) {
3939
$this->baseDir = $parentDirectory;
4040
break;
4141
}

src/Symfony/Component/Finder/Tests/FinderTest.php

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -433,16 +433,11 @@ public function testIgnoreVCSIgnored()
433433
->ignoreVCSIgnored(true)
434434
);
435435

436-
copy(__DIR__.'/Fixtures/gitignore/search_root/b.txt', __DIR__.'/Fixtures/gitignore/search_root/a.txt');
437-
copy(__DIR__.'/Fixtures/gitignore/search_root/b.txt', __DIR__.'/Fixtures/gitignore/search_root/c.txt');
438-
copy(__DIR__.'/Fixtures/gitignore/search_root/dir/a.txt', __DIR__.'/Fixtures/gitignore/search_root/dir/b.txt');
439-
copy(__DIR__.'/Fixtures/gitignore/search_root/dir/a.txt', __DIR__.'/Fixtures/gitignore/search_root/dir/c.txt');
440-
441-
$this->assertIterator($this->toAbsoluteFixtures([
436+
$this->assertIterator(self::toAbsolute([
442437
'gitignore/search_root/b.txt',
443438
'gitignore/search_root/dir',
444439
'gitignore/search_root/dir/a.txt',
445-
]), $finder->in(__DIR__.'/Fixtures/gitignore/search_root')->getIterator());
440+
]), $finder->in(self::toAbsolute('gitignore/search_root'))->getIterator());
446441
}
447442

448443
public function testIgnoreVCSIgnoredUpToFirstGitRepositoryRoot()
@@ -456,21 +451,39 @@ public function testIgnoreVCSIgnoredUpToFirstGitRepositoryRoot()
456451
->ignoreVCSIgnored(true)
457452
);
458453

459-
copy(__DIR__.'/Fixtures/gitignore/git_root/search_root/b.txt', __DIR__.'/Fixtures/gitignore/git_root/search_root/a.txt');
460-
copy(__DIR__.'/Fixtures/gitignore/git_root/search_root/b.txt', __DIR__.'/Fixtures/gitignore/git_root/search_root/c.txt');
461-
copy(__DIR__.'/Fixtures/gitignore/git_root/search_root/dir/a.txt', __DIR__.'/Fixtures/gitignore/git_root/search_root/dir/b.txt');
462-
copy(__DIR__.'/Fixtures/gitignore/git_root/search_root/dir/a.txt', __DIR__.'/Fixtures/gitignore/git_root/search_root/dir/c.txt');
463-
if (!is_dir($gitDir = __DIR__.'/Fixtures/gitignore/git_root/.git')) {
464-
mkdir($gitDir);
465-
}
466-
467-
$this->assertIterator($this->toAbsoluteFixtures([
454+
$this->assertIterator(self::toAbsolute([
468455
'gitignore/git_root/search_root/b.txt',
469456
'gitignore/git_root/search_root/c.txt',
470457
'gitignore/git_root/search_root/dir',
471458
'gitignore/git_root/search_root/dir/a.txt',
472459
'gitignore/git_root/search_root/dir/c.txt',
473-
]), $finder->in(__DIR__.'/Fixtures/gitignore/git_root/search_root')->getIterator());
460+
]), $finder->in(self::toAbsolute('gitignore/git_root/search_root'))->getIterator());
461+
}
462+
463+
public function testIgnoreVCSIgnoredWithOpenBasedir()
464+
{
465+
if (ini_get('open_basedir')) {
466+
$this->markTestSkipped('Cannot test when open_basedir is set');
467+
}
468+
469+
$finder = $this->buildFinder();
470+
$this->assertSame(
471+
$finder,
472+
$finder
473+
->ignoreVCS(true)
474+
->ignoreDotFiles(true)
475+
->ignoreVCSIgnored(true)
476+
);
477+
478+
$this->iniSet('open_basedir', '.'.\PATH_SEPARATOR.self::toAbsolute('gitignore/search_root'));
479+
480+
$this->assertIterator(self::toAbsolute([
481+
'gitignore/search_root/b.txt',
482+
'gitignore/search_root/c.txt',
483+
'gitignore/search_root/dir',
484+
'gitignore/search_root/dir/a.txt',
485+
'gitignore/search_root/dir/c.txt',
486+
]), $finder->in(self::toAbsolute('gitignore/search_root'))->getIterator());
474487
}
475488

476489
public function testIgnoreVCSCanBeDisabledAfterFirstIteration()
@@ -1488,6 +1501,6 @@ public function testIgnoredAccessDeniedException()
14881501

14891502
protected function buildFinder()
14901503
{
1491-
return Finder::create();
1504+
return Finder::create()->exclude('gitignore');
14921505
}
14931506
}

src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
namespace Symfony\Component\Finder\Tests\Iterator;
1313

14+
use Symfony\Component\Filesystem\Filesystem;
15+
1416
abstract class RealIteratorTestCase extends IteratorTestCase
1517
{
1618
protected static $tmpDir;
@@ -21,6 +23,7 @@ public static function setUpBeforeClass(): void
2123
self::$tmpDir = realpath(sys_get_temp_dir()).\DIRECTORY_SEPARATOR.'symfony_finder';
2224

2325
self::$files = [
26+
'gitignore/',
2427
'.git/',
2528
'.foo/',
2629
'.foo/.bar',
@@ -65,6 +68,24 @@ public static function setUpBeforeClass(): void
6568

6669
touch(self::toAbsolute('foo/bar.tmp'), strtotime('2005-10-15'));
677 23D3 0
touch(self::toAbsolute('test.php'), strtotime('2005-10-15'));
71+
72+
$fs = new Filesystem();
73+
$fs->mirror(__DIR__.'/../Fixtures/gitignore', self::toAbsolute('gitignore'));
74+
75+
foreach ([
76+
'gitignore/search_root/a.txt',
77+
'gitignore/search_root/c.txt',
78+
'gitignore/search_root/dir/b.txt',
79+
'gitignore/search_root/dir/c.txt',
80+
'gitignore/git_root/search_root/a.txt',
81+
'gitignore/git_root/search_root/c.txt',
82+
'gitignore/git_root/search_root/dir/b.txt',
83+
'gitignore/git_root/search_root/dir/c.txt',
84+
] as $file) {
85+
$fs->touch(self::toAbsolute($file));
86+
}
87+
88+
$fs->mkdir(self::toAbsolute('gitignore/git_root/.git'));
6889
}
6990

7091
public static function tearDownAfterClass(): void

0 commit comments

Comments
 (0)
0