/** * @param string $fileName * @param string $content * * @return IntegrationCase */ public function create($fileName, $content) { try { if (!preg_match('/--TEST--\\n(?<title>.*?)\\s--CONFIG--\\n(?<config>.*?)(\\s--SETTINGS--\\n(?<settings>.*?))?(\\s--REQUIREMENTS--\\n(?<requirements>.*?))?\\s--EXPECT--\\n(?<expect>.*?\\n*)(?:\\n--INPUT--\\s(?<input>.*)|$)/s', $content, $match)) { throw new \InvalidArgumentException('File format is invalid.'); } return IntegrationCase::create()->setFileName($fileName)->setTitle($match['title'])->setFixers($this->determineFixers($match['config']))->setRequirements($this->determineRequirements($match['requirements']))->setSettings($this->determineSettings($match['settings']))->setExpectedCode($match['expect'])->setInputCode(isset($match['input']) ? $match['input'] : null); } catch (\InvalidArgumentException $e) { throw new \InvalidArgumentException(sprintf('%s Test file: "%s".', $e->getMessage(), $fileName), $e->getCode(), $e); } }