file_provider = new Provider\FakeFileProvider(); $this->project_checker = new \Psalm\Checker\ProjectChecker( $this->file_provider, new Provider\FakeParserCacheProvider() ); $this->project_checker->setConfig(new TestConfig()); $this->project_checker->update_docblocks = true; } /** * @dataProvider providerFileCheckerValidCodeParse * * @param string $input_code * @param string $output_code * * @return void */ public function testValidCode($input_code, $output_code) { $test_name = $this->getName(); if (strpos($test_name, 'PHP7-') !== false) { if (version_compare(PHP_VERSION, '7.0.0dev', '<')) { $this->markTestSkipped('Test case requires PHP 7.'); return; } } elseif (strpos($test_name, 'SKIPPED-') !== false) { $this->markTestSkipped('Skipped due to a bug.'); } $context = new Context(); $file_path = self::$src_dir_path . 'somefile.php'; $this->addFile( $file_path, $input_code ); $file_checker = new FileChecker($file_path, $this->project_checker); $file_checker->visitAndAnalyzeMethods($context); $this->project_checker->updateFile($file_path); $this->assertSame($output_code, $this->project_checker->getFileContents($file_path)); } /** * @return array */ public function providerFileCheckerValidCodeParse() { return [ 'doesNothing' => [ ' [ ' [ ' [ ' */ function foo() { return ["hello"]; }', ], ]; } }