1
0
Fork 0

Merge pull request #4193 from alcohol/fix-gitignore-parsing

Fix #4183 - exclude pattern containing delimiter used throws error
pull/4172/head
Jordi Boggiano 2015-06-30 13:10:34 +01:00
commit 05c4911f6c
3 changed files with 11 additions and 8 deletions

View File

@ -123,7 +123,7 @@ abstract class BaseExcludeFilter
protected function generatePattern($rule)
{
$negate = false;
$pattern = '#';
$pattern = '{';
if (strlen($rule) && $rule[0] === '!') {
$negate = true;
@ -143,6 +143,6 @@ abstract class BaseExcludeFilter
// remove delimiters as well as caret (^) and dollar sign ($) from the regex
$pattern .= substr(Finder\Glob::toRegex($rule), 2, -2) . '(?=$|/)';
return array($pattern . '#', $negate, false);
return array($pattern . '}', $negate, false);
}
}

View File

@ -75,7 +75,8 @@ class ArchivableFilesFinderTest extends \PHPUnit_Framework_TestCase
'parameters.yml',
'parameters.yml.dist',
'!important!.txt',
'!important_too!.txt'
'!important_too!.txt',
'#weirdfile',
);
foreach ($fileTree as $relativePath) {
@ -98,7 +99,7 @@ class ArchivableFilesFinderTest extends \PHPUnit_Framework_TestCase
'!/prefixB.foo',
'/prefixA.foo',
'prefixC.*',
'!*/*/*/prefixC.foo'
'!*/*/*/prefixC.foo',
);
$this->finder = new ArchivableFilesFinder($this->sources, $excludes);
@ -106,6 +107,7 @@ class ArchivableFilesFinderTest extends \PHPUnit_Framework_TestCase
$this->assertArchivableFiles(array(
'/!important!.txt',
'/!important_too!.txt',
'/#weirdfile',
'/A/prefixA.foo',
'/A/prefixD.foo',
'/A/prefixE.foo',
@ -170,7 +172,8 @@ class ArchivableFilesFinderTest extends \PHPUnit_Framework_TestCase
'H/**',
'J/',
'parameters.yml',
'\!important!.txt'
'\!important!.txt',
'\#*',
)));
// git does not currently support negative git attributes
@ -181,7 +184,7 @@ class ArchivableFilesFinderTest extends \PHPUnit_Framework_TestCase
//'!/prefixB.foo export-ignore',
'/prefixA.foo export-ignore',
'prefixC.* export-ignore',
//'!/*/*/prefixC.foo export-ignore'
//'!/*/*/prefixC.foo export-ignore',
)));
$this->finder = new ArchivableFilesFinder($this->sources, array());

View File

@ -29,8 +29,8 @@ class GitExcludeFilterTest extends \PHPUnit_Framework_TestCase
public function patterns()
{
return array(
array('app/config/parameters.yml', array('#(?=[^\.])app/(?=[^\.])config/(?=[^\.])parameters\.yml(?=$|/)#', false, false)),
array('!app/config/parameters.yml', array('#(?=[^\.])app/(?=[^\.])config/(?=[^\.])parameters\.yml(?=$|/)#', true, false)),
array('app/config/parameters.yml', array('{(?=[^\.])app/(?=[^\.])config/(?=[^\.])parameters\.yml(?=$|/)}', false, false)),
array('!app/config/parameters.yml', array('{(?=[^\.])app/(?=[^\.])config/(?=[^\.])parameters\.yml(?=$|/)}', true, false)),
);
}
}