public function testFileAdd() { $tokenizer = new UnifiedDiffTokenizer(new GitDiffNormalizer()); $data = file(__DIR__ . '/data/diff_add', FILE_IGNORE_NEW_LINES); $tokenList = $tokenizer->tokenize($data); $this->assertEquals(6, count($tokenList)); $this->assertEquals(new Token(Token::ORIGINAL_FILENAME, ''), $tokenList[0]); $this->assertEquals(new Token(Token::NEW_FILENAME, 'README.md'), $tokenList[1]); $this->assertEquals(new Token(Token::HUNK_ORIGINAL_START, 0), $tokenList[2]); $this->assertEquals(new Token(Token::HUNK_ORIGINAL_COUNT, 0), $tokenList[3]); $this->assertEquals(new Token(Token::FILE_CREATION_LINE_COUNT, 1), $tokenList[4]); $this->assertEquals(new Token(Token::SOURCE_LINE_ADDED, '## Test'), $tokenList[5]); }
/** * Parse an array of tokens out into an object graph. * * @param array $diffLineList * * @return Changeset */ public function parse(array $diffLineList) { $tokenList = $this->tokenizer->tokenize($diffLineList); $fileList = array(); $startIndex = 0; $tokenCount = count($tokenList); for ($i = 0; $i < $tokenCount; $i++) { // File begin if (Token::ORIGINAL_FILENAME === $tokenList[$i]->getType()) { $startIndex = $i; } // File end, hydrate object if ($this->fileEnd($tokenList, $i + 1, Token::ORIGINAL_FILENAME)) { $fileList[] = $this->parseFile(array_slice($tokenList, $startIndex, $i - $startIndex + 1)); } } return new Changeset($fileList); }
public function testFifthFileSecondChunk() { $tokenizer = new UnifiedDiffTokenizer(new SvnDiffNormalizer()); $data = file(__DIR__ . '/data/diff', FILE_IGNORE_NEW_LINES); $tokenList = $tokenizer->tokenize($data); $this->assertEquals(new Token(Token::HUNK_ORIGINAL_START, 68), $tokenList[83]); $this->assertEquals(new Token(Token::HUNK_ORIGINAL_COUNT, 7), $tokenList[84]); $this->assertEquals(new Token(Token::HUNK_NEW_START, 69), $tokenList[85]); $this->assertEquals(new Token(Token::HUNK_NEW_COUNT, 5), $tokenList[86]); $this->assertEquals(new Token(Token::SOURCE_LINE_UNCHANGED, ' $vcs = new GitVcs($commandExecutor);'), $tokenList[87]); $this->assertEquals(new Token(Token::SOURCE_LINE_UNCHANGED, ''), $tokenList[88]); $this->assertEquals(new Token(Token::SOURCE_LINE_UNCHANGED, ' $vcs->changeBranch(\'feat-new-badness\');'), $tokenList[89]); $this->assertEquals(new Token(Token::SOURCE_LINE_REMOVED, ''), $tokenList[90]); $this->assertEquals(new Token(Token::SOURCE_LINE_REMOVED, ''), $tokenList[91]); $this->assertEquals(new Token(Token::SOURCE_LINE_UNCHANGED, ' }'), $tokenList[92]); $this->assertEquals(new Token(Token::SOURCE_LINE_UNCHANGED, '}'), $tokenList[93]); }