Path: blob/master/src/applications/differential/parser/__tests__/DifferentialCommitMessageParserTestCase.php
12262 views
<?php12final class DifferentialCommitMessageParserTestCase3extends PhabricatorTestCase {45public function testDifferentialCommitMessageParser() {6$dir = dirname(__FILE__).'/messages/';7$list = Filesystem::listDirectory($dir, $include_hidden = false);8foreach ($list as $file) {9if (!preg_match('/.txt$/', $file)) {10continue;11}1213$data = Filesystem::readFile($dir.$file);14$divider = "~~~~~~~~~~\n";15$parts = explode($divider, $data);16if (count($parts) !== 4) {17throw new Exception(18pht(19'Expected test file "%s" to contain four parts (message, fields, '.20'output, errors) divided by "%s".',21$file,22'~~~~~~~~~~'));23}2425list($message, $fields, $output, $errors) = $parts;26$fields = phutil_json_decode($fields);27$output = phutil_json_decode($output);28$errors = phutil_json_decode($errors);2930$parser = id(new DifferentialCommitMessageParser())31->setLabelMap($fields)32->setTitleKey('title')33->setSummaryKey('summary');3435$result_output = $parser->parseCorpus($message);36$result_errors = $parser->getErrors();3738$this->assertEqual($output, $result_output);39$this->assertEqual($errors, $result_errors);40}41}424344public function testDifferentialCommitMessageFieldParser() {45$message = <<<EOMESSAGE46This is the title.4748Summary: This is the summary.49EOMESSAGE;5051$fields = array(52new DifferentialTitleCommitMessageField(),53new DifferentialSummaryCommitMessageField(),54);5556$expect = array(57DifferentialTitleCommitMessageField::FIELDKEY =>58'This is the title.',59DifferentialSummaryCommitMessageField::FIELDKEY =>60'This is the summary.',61);6263$parser = id(new DifferentialCommitMessageParser())64->setCommitMessageFields($fields)65->setTitleKey(DifferentialTitleCommitMessageField::FIELDKEY)66->setSummaryKey(DifferentialSummaryCommitMessageField::FIELDKEY);6768$actual = $parser->parseFields($message);6970$this->assertEqual($expect, $actual);71}7273public function testDifferentialCommitMessageParserNormalization() {74$map = array(75'Test Plan' => 'test plan',76'REVIEWERS' => 'reviewers',77'sUmmArY' => 'summary',78);7980foreach ($map as $input => $expect) {81$this->assertEqual(82$expect,83DifferentialCommitMessageParser::normalizeFieldLabel($input),84pht('Field normalization of label "%s".', $input));85}86}8788}899091