Skip to content

Commit

Permalink
infection#654 drop support fro mb_ereg* functions
Browse files Browse the repository at this point in the history
  • Loading branch information
majkel89 committed Mar 13, 2019
1 parent 8d1b607 commit 21f83cb
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 158 deletions.
18 changes: 0 additions & 18 deletions resources/schema.json
Expand Up @@ -162,24 +162,6 @@
"mb_chr": {
"type": "boolean"
},
"mb_ereg_match": {
"type": "boolean"
},
"mb_ereg_replace_callback": {
"type": "boolean"
},
"mb_ereg_replace": {
"type": "boolean"
},
"mb_ereg": {
"type": "boolean"
},
"mb_eregi_replace": {
"type": "boolean"
},
"mb_eregi": {
"type": "boolean"
},
"mb_ord": {
"type": "boolean"
},
Expand Down
50 changes: 0 additions & 50 deletions src/Mutator/Extensions/MBString.php
Expand Up @@ -84,12 +84,6 @@ private function setupConverters(array $functionsMap): void
{
$converters = [
'mb_chr' => $this->mapNameSkipArg('chr', 1),
'mb_ereg_match' => $this->mapEreg($this->mapNameSkipArg('preg_match', 2), '^', '', [$this, 'warpEqOne']),
'mb_ereg_replace_callback' => $this->mapEreg($this->mapNameSkipArg('preg_replace_callback', 3)),
'mb_ereg_replace' => $this->mapEreg($this->mapNameSkipArg('preg_replace', 3)),
'mb_ereg' => $this->mapEreg($this->mapName('preg_match'), '', '', [$this, 'warpTernary']),
'mb_eregi_replace' => $this->mapEreg($this->mapNameSkipArg('preg_replace', 3), '', 'i'),
'mb_eregi' => $this->mapEreg($this->mapName('preg_match'), '', 'i', [$this, 'warpTernary']),
'mb_ord' => $this->mapNameSkipArg('ord', 1),
'mb_parse_str' => $this->mapName('parse_str'),
'mb_send_mail' => $this->mapName('mail'),
Expand Down Expand Up @@ -132,50 +126,6 @@ private function mapNameSkipArg(string $functionName, int $skipArgs): callable
};
}

private function mapEreg(callable $baseConverter, string $prefix = '', string $modifiers = '', callable $warp = null): callable
{
return function (Node\Expr\FuncCall $node) use ($baseConverter, $prefix, $modifiers, $warp): Generator {
foreach ($baseConverter($node) as $newNode) {
/* @var Node\Expr\FuncCall $newNode */
$newNode->args[0] = new Node\Arg(
new Node\Expr\BinaryOp\Concat(
new Node\Expr\BinaryOp\Concat(
new Node\Scalar\String_("/$prefix"),
new Node\Expr\FuncCall(
new Node\Name('\str_replace'),
[
new Node\Arg(new Node\Scalar\String_('/')),
new Node\Arg(new Node\Scalar\String_('\/')),
new Node\Arg($newNode->args[0]->value),
]
)
),
new Node\Scalar\String_("/$modifiers")
)
);

yield $warp ? $warp($newNode) : $newNode;
}
};
}

private function warpEqOne(Node\Expr\FuncCall $node): Node
{
return new Node\Expr\BinaryOp\Identical(
$node,
new Node\Scalar\LNumber(1)
);
}

private function warpTernary(Node\Expr\FuncCall $node): Node
{
return new Node\Expr\Ternary(
$node,
new Node\Scalar\LNumber(1),
new Node\Expr\ConstFetch(new Node\Name('false'))
);
}

private function mapConvertCase(): callable
{
return function (Node\Expr\FuncCall $node): Generator {
Expand Down
90 changes: 0 additions & 90 deletions tests/Mutator/Extensions/MBStringTest.php
Expand Up @@ -81,18 +81,6 @@ public function provideMutationCases(): Generator

yield from $this->provideMutationCasesForChr();

yield from $this->provideMutationCasesForEregMatch();

yield from $this->provideMutationCasesForEregReplaceCallback();

yield from $this->provideMutationCasesForEregReplace();

yield from $this->provideMutationCasesForEreg();

yield from $this->provideMutationCasesForEregiReplace();

yield from $this->provideMutationCasesForEregi();

yield from $this->provideMutationCasesForOrd();

yield from $this->provideMutationCasesForParseStr();
Expand Down Expand Up @@ -143,84 +131,6 @@ private function provideMutationCasesForChr(): Generator
];
}

private function provideMutationCasesForEregMatch(): Generator
{
yield 'It converts mb_ereg_match to preg_match' => [
"<?php mb_ereg_match(M_2_PI, 'test');",
"<?php\n\npreg_match('/^' . \str_replace('/', '\\\\/', M_2_PI) . '/', 'test') === 1;",
];

yield 'It converts mb_ereg_match with encoding argument to preg_match' => [
"<?php mb_ereg_match(M_2_PI, 'trim', 'mb');",
"<?php\n\npreg_match('/^' . \str_replace('/', '\\\\/', M_2_PI) . '/', 'trim') === 1;",
];
}

private function provideMutationCasesForEregReplaceCallback(): Generator
{
yield 'It converts mb_ereg_replace_callback to preg_replace_callback' => [
"<?php mb_ereg_replace_callback('[A-Z/#]', 'trim', 'test');",
"<?php\n\npreg_replace_callback('/' . \str_replace('/', '\\\\/', '[A-Z/#]') . '/', 'trim', 'test');",
];

yield 'It converts mb_ereg_replace_callback with options to preg_replace_callback' => [
"<?php mb_ereg_replace_callback('[A-Z/#]', 'trim', 'test', 'msr');",
"<?php\n\npreg_replace_callback('/' . \str_replace('/', '\\\\/', '[A-Z/#]') . '/', 'trim', 'test');",
];
}

private function provideMutationCasesForEregReplace(): Generator
{
yield 'It converts mb_ereg_replace to ereg_replace' => [
"<?php mb_ereg_replace(\$pattern, 'T', 'test');",
"<?php\n\npreg_replace('/' . \str_replace('/', '\\\\/', \$pattern) . '/', 'T', 'test');",
];

yield 'It converts mb_ereg_replace with options to ereg_replace' => [
"<?php mb_ereg_replace(\$pattern, 'T', 'test', 'mb');",
"<?php\n\npreg_replace('/' . \str_replace('/', '\\\\/', \$pattern) . '/', 'T', 'test');",
];
}

private function provideMutationCasesForEreg(): Generator
{
yield 'It converts mb_ereg to ereg' => [
"<?php mb_ereg(getPattern(\$x, 1), 'test');",
"<?php\n\npreg_match('/' . \str_replace('/', '\\\\/', getPattern(\$x, 1)) . '/', 'test') ? 1 : false;",
];

yield 'It converts mb_ereg with regs argument to ereg' => [
"<?php mb_ereg(getPattern(\$x, 1), 'test', \$regs);",
"<?php\n\npreg_match('/' . \str_replace('/', '\\\\/', getPattern(\$x, 1)) . '/', 'test', \$regs) ? 1 : false;",
];
}

private function provideMutationCasesForEregiReplace(): Generator
{
yield 'It converts mb_eregi_replace to eregi_replace' => [
"<?php mb_eregi_replace(\$a . \$b, 'T', 'test');",
"<?php\n\npreg_replace('/' . \str_replace('/', '\\\\/', \$a . \$b) . '/i', 'T', 'test');",
];

yield 'It converts mb_eregi_replace with options to eregi_replace' => [
"<?php mb_eregi_replace(\$a . \$b, 'T', 'test', 'msr');",
"<?php\n\npreg_replace('/' . \str_replace('/', '\\\\/', \$a . \$b) . '/i', 'T', 'test');",
];
}

private function provideMutationCasesForEregi(): Generator
{
yield 'It converts mb_eregi to eregi' => [
"<?php mb_eregi(\DateTime::getLastErrors(), 'test');",
"<?php\n\npreg_match('/' . \str_replace('/', '\\\\/', \DateTime::getLastErrors()) . '/i', 'test') ? 1 : false;",
];

yield 'It converts mb_eregi with regs parameter to eregi' => [
"<?php mb_eregi(\DateTime::getLastErrors(), 'test', \$regs);",
"<?php\n\npreg_match('/' . \str_replace('/', '\\\\/', \DateTime::getLastErrors()) . '/i', 'test', \$regs) ? 1 : false;",
];
}

private function provideMutationCasesForOrd(): Generator
{
yield 'It converts mb_ord to ord' => [
Expand Down

0 comments on commit 21f83cb

Please sign in to comment.