1
0
Fork 0

Merge pull request #2649 from zczapran/bugfix/git_exclude_filter_rules_too_broad

[Archiver] Rules in GitExcludeFilter are too broad
pull/2602/merge
Jordi Boggiano 2014-02-06 21:38:47 +01:00
commit f72066de90
2 changed files with 38 additions and 1 deletions

View File

@ -140,7 +140,8 @@ abstract class BaseExcludeFilter
$pattern .= '/';
}
$pattern .= substr(Finder\Glob::toRegex($rule), 2, -2);
// remove delimiters as well as caret (^) from the regex
$pattern .= substr(Finder\Glob::toRegex($rule), 2, -1);
return array($pattern . '#', $negate, false);
}

View File

@ -0,0 +1,36 @@
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Test\Package\Archiver;
use Composer\Package\Archiver\GitExcludeFilter;
class GitExcludeFilterTest extends \PHPUnit_Framework_TestCase
{
/**
* @dataProvider patterns
*/
public function testPatternEscape($ignore, $expected)
{
$filter = new GitExcludeFilter('/');
$this->assertEquals($expected, $filter->parseGitIgnoreLine($ignore));
}
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)),
);
}
}