-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
247 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,4 @@ | ||
# Cache and logs (Symfony2) | ||
/app/cache/* | ||
/app/logs/* | ||
!app/cache/.gitkeep | ||
!app/logs/.gitkeep | ||
|
||
# Cache and logs (Symfony3) | ||
/var/cache/* | ||
/var/logs/* | ||
!var/cache/.gitkeep | ||
!var/logs/.gitkeep | ||
|
||
# Parameters | ||
/app/config/parameters.yml | ||
/app/config/parameters.ini | ||
|
||
# Managed by Composer | ||
/app/bootstrap.php.cache | ||
/var/bootstrap.php.cache | ||
/bin/* | ||
!bin/console | ||
!bin/symfony_requirements | ||
/vendor/ | ||
|
||
# Assets and user uploads | ||
/web/bundles/ | ||
/web/uploads/ | ||
|
||
# PHPUnit | ||
/app/phpunit.xml | ||
/phpunit.xml | ||
|
||
# Build data | ||
/build/ | ||
|
||
# Composer PHAR | ||
/composer.phar | ||
bin | ||
composer.lock | ||
vendor | ||
phpunit.xml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,5 @@ | ||
# Symfony-Upgrade-Fixer | ||
|
||
Note: This project is under development. | ||
|
||
Analyzes your Symfony project and tries to make it compatible with the new version of Symfony framework. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
{ | ||
"name": "umpirsky/symfony-upgrade-fixer", | ||
"type": "application", | ||
"description": "Analyzes your Symfony project and tries to make it compatible with the new version of Symfony framework.", | ||
"license": "MIT", | ||
"authors": [ | ||
{ | ||
"name": "Saša Stamenković", | ||
"email": "umpirsky@gmail.com" | ||
} | ||
], | ||
"require": { | ||
"php": ">=5.4", | ||
"fabpot/php-cs-fixer": "^1.10" | ||
}, | ||
"require-dev": { | ||
"phpunit/phpunit": "^4.8" | ||
}, | ||
"config": { | ||
"bin-dir": "bin" | ||
}, | ||
"autoload": { | ||
"psr-4": { | ||
"Symfony\\Upgrade\\": "src/Symfony/Upgrade/" | ||
} | ||
}, | ||
"autoload-dev": { | ||
"psr-4": { | ||
"Symfony\\Upgrade\\Test\\": "tests/Symfony/Upgrade/Test/" | ||
} | ||
}, | ||
"extra": { | ||
"branch-alias": { | ||
"dev-master": "0.1-dev" | ||
} | ||
}, | ||
"bin": ["symfony-upgrade-fixer"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
|
||
<phpunit backupGlobals="false" | ||
backupStaticAttributes="false" | ||
colors="true" | ||
convertErrorsToExceptions="true" | ||
convertNoticesToExceptions="true" | ||
convertWarningsToExceptions="true" | ||
processIsolation="false" | ||
stopOnFailure="false" | ||
syntaxCheck="false" | ||
bootstrap="./vendor/autoload.php" | ||
> | ||
<testsuites> | ||
<testsuite name="general"> | ||
<directory suffix="Test.php">tests</directory> | ||
</testsuite> | ||
</testsuites> | ||
</phpunit> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
<?php | ||
|
||
namespace Symfony\Upgrade\Fixer; | ||
|
||
use Symfony\CS\AbstractFixer; | ||
use Symfony\CS\Tokenizer\Tokens; | ||
|
||
class ProgressBarFixer extends AbstractFixer | ||
{ | ||
public function fix(\SplFileInfo $file, $content) | ||
{ | ||
$tokens = Tokens::fromCode($content); | ||
|
||
$used = $this->fixUseDeclarations($tokens); | ||
|
||
if ($used) { | ||
$this->fixUsages($tokens); | ||
} | ||
|
||
return $tokens->generateCode(); | ||
} | ||
|
||
private function fixUseDeclarations(Tokens $tokens) | ||
{ | ||
$useTokens = $tokens->findSequence([ | ||
[T_USE], | ||
[T_STRING, 'Symfony'], | ||
[T_NS_SEPARATOR], | ||
[T_STRING, 'Component'], | ||
[T_NS_SEPARATOR], | ||
[T_STRING, 'Console'], | ||
[T_NS_SEPARATOR], | ||
[T_STRING, 'Helper'], | ||
[T_NS_SEPARATOR], | ||
[T_STRING, 'ProgressHelper'], | ||
';', | ||
]); | ||
|
||
if (null === $useTokens) { | ||
return false; | ||
} | ||
|
||
$useTokensIndexes = array_keys($useTokens); | ||
|
||
$classNameToken = $useTokens[$useTokensIndexes[count($useTokensIndexes) - 2]]; | ||
$classNameToken->setContent('ProgressBar'); | ||
|
||
return true; | ||
} | ||
|
||
private function fixUsages(Tokens $tokens) | ||
{ | ||
$newTokens = $tokens->findSequence([ | ||
[T_NEW], | ||
[T_STRING, 'ProgressHelper'], | ||
]); | ||
|
||
if (null === $newTokens) { | ||
return; | ||
} | ||
|
||
$newTokensIndexes = array_keys($newTokens); | ||
|
||
$classNameToken = $newTokens[$newTokensIndexes[count($newTokensIndexes) - 1]]; | ||
$classNameToken->setContent('ProgressBar'); | ||
|
||
$this->fixUsages($tokens); | ||
} | ||
|
||
public function getDescription() | ||
{ | ||
return 'ProgressHelper has been removed in favor of ProgressBar.'; | ||
} | ||
} |
23 changes: 23 additions & 0 deletions
23
tests/Symfony/Upgrade/Fixtures/Fixer/progress-bar/case1-input.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?php | ||
|
||
use Symfony\Component\Console\Helper\ProgressHelper; | ||
|
||
// create a new progress bar (50 units) | ||
$progress = new ProgressHelper($output, 50); | ||
|
||
// start and displays the progress bar | ||
$progress->start(); | ||
|
||
$i = 0; | ||
while ($i++ < 50) { | ||
// ... do some work | ||
|
||
// advance the progress bar 1 unit | ||
$progress->advance(); | ||
|
||
// you can also advance the progress bar by more than 1 unit | ||
// $progress->advance(3); | ||
} | ||
|
||
// ensure that the progress bar is at 100% | ||
$progress->finish(); |
23 changes: 23 additions & 0 deletions
23
tests/Symfony/Upgrade/Fixtures/Fixer/progress-bar/case1-output.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?php | ||
|
||
use Symfony\Component\Console\Helper\ProgressBar; | ||
|
||
// create a new progress bar (50 units) | ||
$progress = new ProgressBar($output, 50); | ||
|
||
// start and displays the progress bar | ||
$progress->start(); | ||
|
||
$i = 0; | ||
while ($i++ < 50) { | ||
// ... do some work | ||
|
||
// advance the progress bar 1 unit | ||
$progress->advance(); | ||
|
||
// you can also advance the progress bar by more than 1 unit | ||
// $progress->advance(3); | ||
} | ||
|
||
// ensure that the progress bar is at 100% | ||
$progress->finish(); |
7 changes: 7 additions & 0 deletions
7
tests/Symfony/Upgrade/Fixtures/Fixer/progress-bar/case2-input.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<?php | ||
|
||
use Symfony\Component\Console\Helper\ProgressHelper; | ||
|
||
$progress = new ProgressHelper($output, 50); | ||
$progress = new ProgressHelper($output, 60); | ||
$progress = new ProgressHelper($output, 70); |
7 changes: 7 additions & 0 deletions
7
tests/Symfony/Upgrade/Fixtures/Fixer/progress-bar/case2-output.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<?php | ||
|
||
use Symfony\Component\Console\Helper\ProgressBar; | ||
|
||
$progress = new ProgressBar($output, 50); | ||
$progress = new ProgressBar($output, 60); | ||
$progress = new ProgressBar($output, 70); |
15 changes: 15 additions & 0 deletions
15
tests/Symfony/Upgrade/Test/Fixer/AbstractFixerTestBase.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<?php | ||
|
||
namespace Symfony\Upgrade\Test\Fixer; | ||
|
||
use Symfony\CS\Tests\Fixer\AbstractFixerTestBase as BaseAbstractFixerTestBase; | ||
|
||
abstract class AbstractFixerTestBase extends BaseAbstractFixerTestBase | ||
{ | ||
protected function getFixer() | ||
{ | ||
$name = 'Symfony\Upgrade\Fixer'.substr(get_called_class(), strlen(__NAMESPACE__), -strlen('Test')); | ||
|
||
return new $name(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
<?php | ||
|
||
namespace Symfony\Upgrade\Test\Fixer; | ||
|
||
class ProgressBarFixerTest extends AbstractFixerTestBase | ||
{ | ||
/** | ||
* @dataProvider provideExamples | ||
*/ | ||
public function testFix($expected, $input, $file) | ||
{ | ||
$this->makeTest($expected, $input, $file); | ||
} | ||
|
||
public function provideExamples() | ||
{ | ||
return [ | ||
$this->prepareTestCase('case1-output.php', 'case1-input.php'), | ||
$this->prepareTestCase('case2-output.php', 'case2-input.php'), | ||
]; | ||
} | ||
|
||
private function prepareTestCase($expectedFilename, $inputFilename = null) | ||
{ | ||
$expectedFile = $this->getTestFile(__DIR__.'/../../Fixtures/Fixer/progress-bar/'.$expectedFilename); | ||
$inputFile = $inputFilename ? $this->getTestFile(__DIR__.'/../../Fixtures/Fixer/progress-bar/'.$inputFilename) : null; | ||
|
||
return [ | ||
file_get_contents($expectedFile->getRealpath()), | ||
$inputFile ? file_get_contents($inputFile->getRealpath()) : null, | ||
$inputFile ?: $expectedFile, | ||
]; | ||
} | ||
} |