public function testParseEntry() { $jsonEntry = ' { "id":"(error)", "raw":"Expected \'{a}\' at column {b}, not column {c}.", "evidence":" \\"Niets van deze web site mag worden verveelvoudigd en/of \\n\\" +", "line":3, "character":8, "a":"Niets van deze web site mag worden verveelvoudigd en/of \\n", "b":9, "c":8, "reason":"Expected \'Niets van deze web site mag worden verveelvoudigd en/of \\n\' at column 9, not column 8." }'; $entryObject = json_decode(trim($jsonEntry)); $parser = new EntryParser(); $parser->parse($entryObject); $this->assertTrue($parser->parse($entryObject)); $entry = $parser->getEntry(); $this->assertInstanceOf('webignition\\NodeJslintOutput\\Entry\\Entry', $entry); $this->assertEquals('(error)', $entry->getId()); $this->assertEquals('Expected \'{a}\' at column {b}, not column {c}.', $entry->getRaw()); $this->assertEquals(" \"Niets van deze web site mag worden verveelvoudigd en/of \n\" +", $entry->getEvidence()); $this->assertEquals(3, $entry->getLineNumber()); $this->assertEquals(8, $entry->getColumnNumber()); $this->assertEquals(array('a' => "Niets van deze web site mag worden verveelvoudigd en/of \n", 'b' => 9, 'c' => 8), $entry->getParameters()); $this->assertEquals("Expected 'Niets van deze web site mag worden verveelvoudigd en/of \n' at column 9, not column 8.", $entry->getReason()); }
/** * * @param string $rawOutput * @return \webignition\NodeJslintOutput\NodeJslintOutput * @throws \webignition\NodeJslintOutput\Exception */ public function parse($rawOutput) { if (!is_string($rawOutput)) { return false; } $this->rawOutput = trim($rawOutput); if ($this->isInputFileNotFoundException()) { throw $this->getInputFileNotFoundException(); } if ($this->isIncorrectNodeJsPathException()) { throw $this->getIncorrectNodeJsPathException(); } if (!$this->isDecodedOutputFormatCorrect()) { throw new NodeJsLintOutputException('Unexpected output; is not a lint result set', NodeJsLintOutputException::CODE_UNEXPECTED_OUTPUT); } $decodedRawOutput = $this->getDecodedRawOutput(); $statusLine = $decodedRawOutput[0]; $entries = $decodedRawOutput[1]; $this->nodeJsLintOutput = new NodeJslintOutput(); $this->nodeJsLintOutput->setStatusLine($statusLine); if (count($entries) === 0) { return $this->nodeJsLintOutput; } $entryParser = new EntryParser(); foreach ($entries as $entryObject) { if (!is_null($entryObject)) { $entryParser->parse($entryObject); $this->nodeJsLintOutput->addEntry($entryParser->getEntry()); } } return $this->nodeJsLintOutput; }
public function testSerializeSingleEntryExcludeParameters() { $jsonEntry = '{"id":"(error)","raw":"Expected \'{a}\' at column {b}, not column {c}.","evidence":"evidence content","line":3,"character":8,"a":"a value","b":9,"c":8,"reason":"Expected \'a value\' at column 9, not column 8."}'; $expectedSerializedEntry = '{"id":"(error)","raw":"Expected \'{a}\' at column {b}, not column {c}.","evidence":"evidence content","line":3,"character":8,"reason":"Expected \'a value\' at column 9, not column 8."}'; $entryObject = json_decode(trim($jsonEntry)); $parser = new EntryParser(); $parser->parse($entryObject); $serializer = new EntrySerializer(); $serializer->setExcludeParameters(true); $this->assertEquals($expectedSerializedEntry, $serializer->serialize($parser->getEntry())); }