file_provider = new Provider\FakeFileProvider(); } /** * @dataProvider providerValidCodeParse * * @param string $input_code * @param string $output_code * @param array $constants_to_move * @param array $call_transforms * * @return void */ public function testValidCode( string $input_code, string $output_code, array $constants_to_move ) { $test_name = $this->getTestName(); if (strpos($test_name, 'SKIPPED-') !== false) { $this->markTestSkipped('Skipped due to a bug.'); } $config = new TestConfig(); $this->project_analyzer = new \Psalm\Internal\Analyzer\ProjectAnalyzer( $config, new \Psalm\Internal\Provider\Providers( $this->file_provider, new Provider\FakeParserCacheProvider() ) ); $context = new Context(); $file_path = self::$src_dir_path . 'somefile.php'; $this->addFile( $file_path, $input_code ); $codebase = $this->project_analyzer->getCodebase(); $this->project_analyzer->refactorCodeAfterCompletion($constants_to_move); $this->analyzeFile($file_path, $context); $this->project_analyzer->prepareMigration(); $codebase->analyzer->updateFile($file_path, false); $this->project_analyzer->migrateCode(); $this->assertSame($output_code, $codebase->getFileContents($file_path)); } /** * @return array}> */ public function providerValidCodeParse() { return [ 'moveSimpleClassConstant' => [ ' 'Ns\B::FOO_BAR', ], ], 'renameSimpleClassConstant' => [ ' 'Ns\A::FOO_BAR', ], ], ]; } }