sonarrradarrplexorganizrnginxdashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboard
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							131 lines
						
					
					
						
							3.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							131 lines
						
					
					
						
							3.2 KiB
						
					
					
				| <?php | |
| 
 | |
| /* | |
|  * This file is part of Psy Shell. | |
|  * | |
|  * (c) 2012-2018 Justin Hileman | |
|  * | |
|  * For the full copyright and license information, please view the LICENSE | |
|  * file that was distributed with this source code. | |
|  */ | |
| 
 | |
| namespace Psy\Test; | |
| 
 | |
| use Psy\CodeCleaner; | |
| 
 | |
| class CodeCleanerTest extends \PHPUnit\Framework\TestCase | |
| { | |
|     /** | |
|      * @dataProvider semicolonCodeProvider | |
|      */ | |
|     public function testAutomaticSemicolons(array $lines, $requireSemicolons, $expected) | |
|     { | |
|         $cc = new CodeCleaner(); | |
|         $this->assertSame($expected, $cc->clean($lines, $requireSemicolons)); | |
|     } | |
| 
 | |
|     public function semicolonCodeProvider() | |
|     { | |
|         return [ | |
|             [['true'],  false, 'return true;'], | |
|             [['true;'], false, 'return true;'], | |
|             [['true;'], true,  'return true;'], | |
|             [['true'],  true,  false], | |
| 
 | |
|             [['echo "foo";', 'true'], true,  false], | |
| 
 | |
|             [['echo "foo";', 'true'], false, "echo \"foo\";\nreturn true;"], | |
|         ]; | |
|     } | |
| 
 | |
|     /** | |
|      * @dataProvider unclosedStatementsProvider | |
|      */ | |
|     public function testUnclosedStatements(array $lines, $isUnclosed) | |
|     { | |
|         $cc  = new CodeCleaner(); | |
|         $res = $cc->clean($lines); | |
| 
 | |
|         if ($isUnclosed) { | |
|             $this->assertFalse($res); | |
|         } else { | |
|             $this->assertNotFalse($res); | |
|         } | |
|     } | |
| 
 | |
|     public function unclosedStatementsProvider() | |
|     { | |
|         return [ | |
|             [['echo "'],   true], | |
|             [['echo \''],  true], | |
|             [['if (1) {'], true], | |
| 
 | |
|             [['echo "foo",'], true], | |
| 
 | |
|             [['echo ""'],   false], | |
|             [["echo ''"],   false], | |
|             [['if (1) {}'], false], | |
| 
 | |
|             [['// closed comment'],    false], | |
|             [['function foo() { /**'], true], | |
| 
 | |
|             [['var_dump(1, 2,'], true], | |
|             [['var_dump(1, 2,', '3)'], false], | |
|         ]; | |
|     } | |
| 
 | |
|     /** | |
|      * @dataProvider moreUnclosedStatementsProvider | |
|      */ | |
|     public function testMoreUnclosedStatements(array $lines) | |
|     { | |
|         if (\defined('HHVM_VERSION')) { | |
|             $this->markTestSkipped('HHVM not supported.'); | |
|         } | |
| 
 | |
|         $cc  = new CodeCleaner(); | |
|         $res = $cc->clean($lines); | |
| 
 | |
|         $this->assertFalse($res); | |
|     } | |
| 
 | |
|     public function moreUnclosedStatementsProvider() | |
|     { | |
|         return [ | |
|             [["\$content = <<<EOS\n"]], | |
|             [["\$content = <<<'EOS'\n"]], | |
| 
 | |
|             [['/* unclosed comment']], | |
|             [['/** unclosed comment']], | |
|         ]; | |
|     } | |
| 
 | |
|     /** | |
|      * @dataProvider invalidStatementsProvider | |
|      * @expectedException \Psy\Exception\ParseErrorException | |
|      */ | |
|     public function testInvalidStatementsThrowParseErrors($code) | |
|     { | |
|         $cc = new CodeCleaner(); | |
|         $cc->clean([$code]); | |
|     } | |
| 
 | |
|     public function invalidStatementsProvider() | |
|     { | |
|         // n.b. We used to check that `var_dump(1,2,)` failed, but PHP Parser | |
|         // 4.x backported trailing comma function calls from PHP 7.3 for free! | |
|         // so we're not going to spend too much time worrying about it :) | |
|  | |
|         return [ | |
|             ['function "what'], | |
|             ["function 'what"], | |
|             ['echo }'], | |
|             ['echo {'], | |
|             ['if (1) }'], | |
|             ['echo """'], | |
|             ["echo '''"], | |
|             ['$foo "bar'], | |
|             ['$foo \'bar'], | |
|         ]; | |
|     } | |
| }
 | |
| 
 |