Skip to content

Commit

Permalink
Fix wrong conversion of ignore pattern
Browse files Browse the repository at this point in the history
  • Loading branch information
francoispluchino committed Oct 10, 2014
1 parent 4204fe5 commit 3aedb80
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 1 deletion.
7 changes: 6 additions & 1 deletion Installer/IgnoreManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,16 @@ protected function convertPattern($pattern)
$prefix = 0 === strpos($pattern, '!') ? '!' : '';
$searchPattern = ltrim($pattern, '!');

if ('**/.*' === $searchPattern) {
if ('*' === $searchPattern) {
$this->doAddPattern($this->convertPattern($prefix . '.*'));
} elseif ('**/.*' === $searchPattern) {
$this->doAddPattern($prefix . '.*');
} elseif ('.*' === $searchPattern) {
$this->doAddPattern($prefix . '**/.*');
} elseif ((strlen($pattern) - 2) === strrpos($pattern, '/*')) {
$this->doAddPattern(substr($pattern, 0, strlen($pattern) - 2));
}
$this->doAddPattern($pattern . '/*');

return $pattern;
}
Expand Down
43 changes: 43 additions & 0 deletions Tests/Installer/IgnoreManagerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -148,4 +148,47 @@ public function testDeleteIgnoredFilesWithDisabledManager()
$this->assertFileExists($this->target.'/tests/bootstrap.php');
$this->assertFileExists($this->target.'/tests');
}

public function testIgnoreAllFilesExceptAFew()
{
$ignorer = new IgnoreManager($this->target);
$ignorer->addPattern('*');
$ignorer->addPattern('**/.*');
$ignorer->addPattern('!README');
$ignorer->addPattern('!lib/*');
$ignorer->addPattern('!tests');

$ignorer->cleanup();

$this->assertFileNotExists($this->target.'/.hidden');
$this->assertFileNotExists($this->target.'/CHANGELOG');
$this->assertFileExists($this->target.'/README');

$this->assertFileExists($this->target.'/lib/autoload.php');
$this->assertFileExists($this->target.'/lib');

$this->assertFileNotExists($this->target.'/src/.hidden');
$this->assertFileNotExists($this->target.'/src/doc');
$this->assertFileNotExists($this->target.'/src');

$this->assertFileNotExists($this->target.'/src/foo/.hidden');
$this->assertFileNotExists($this->target.'/src/foo/empty.html');
$this->assertFileNotExists($this->target.'/src/foo/empty.md');
$this->assertFileNotExists($this->target.'/src/foo/empty.txt');
$this->assertFileNotExists($this->target.'/src/foo/small.txt');
$this->assertFileNotExists($this->target.'/src/foo');

$this->assertFileNotExists($this->target.'/src/lib/empty.txt');
$this->assertFileNotExists($this->target.'/src/lib');

$this->assertFileNotExists($this->target.'/src/lib/foo/empty.txt');
$this->assertFileNotExists($this->target.'/src/lib/foo/small.txt');
$this->assertFileNotExists($this->target.'/src/lib/foo');

$this->assertFileNotExists($this->target.'/src/tests/empty.html');
$this->assertFileNotExists($this->target.'/src/tests');

$this->assertFileExists($this->target.'/tests/bootstrap.php');
$this->assertFileExists($this->target.'/tests');
}
}

0 comments on commit 3aedb80

Please sign in to comment.