diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 6cc3dfa923..4ba16bbcaf 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -538,6 +538,7 @@ phutil_register_library_map(array( 'DiffusionGitBranch' => 'applications/diffusion/data/DiffusionGitBranch.php', 'DiffusionGitBranchTestCase' => 'applications/diffusion/data/__tests__/DiffusionGitBranchTestCase.php', 'DiffusionGitFileContentQuery' => 'applications/diffusion/query/filecontent/DiffusionGitFileContentQuery.php', + 'DiffusionGitFileContentQueryTestCase' => 'applications/diffusion/query/__tests__/DiffusionGitFileContentQueryTestCase.php', 'DiffusionGitRawDiffQuery' => 'applications/diffusion/query/rawdiff/DiffusionGitRawDiffQuery.php', 'DiffusionGitRequest' => 'applications/diffusion/request/DiffusionGitRequest.php', 'DiffusionGitResponse' => 'applications/diffusion/response/DiffusionGitResponse.php', @@ -3105,6 +3106,7 @@ phutil_register_library_map(array( 'DiffusionFileContentQuery' => 'DiffusionQuery', 'DiffusionGitBranchTestCase' => 'PhabricatorTestCase', 'DiffusionGitFileContentQuery' => 'DiffusionFileContentQuery', + 'DiffusionGitFileContentQueryTestCase' => 'PhabricatorTestCase', 'DiffusionGitRawDiffQuery' => 'DiffusionRawDiffQuery', 'DiffusionGitRequest' => 'DiffusionRequest', 'DiffusionGitResponse' => 'AphrontResponse', diff --git a/src/applications/diffusion/query/__tests__/DiffusionGitFileContentQueryTestCase.php b/src/applications/diffusion/query/__tests__/DiffusionGitFileContentQueryTestCase.php new file mode 100644 index 0000000000..1e69ecd5fa --- /dev/null +++ b/src/applications/diffusion/query/__tests__/DiffusionGitFileContentQueryTestCase.php @@ -0,0 +1,32 @@ +call()'); + $this->assertEqual($result[0], '8220d5d54f6d5d5552a636576cbe9c35f15b65b2'); + $this->assertEqual($result[1], 'Andrew Gallagher'); + $this->assertEqual($result[2], ' $somevar = $this->call()'); + + // User name like 'Jimmy (He) Zhang' + $result = DiffusionGitFileContentQuery::match( + '8220d5d54f6d5d5552a636576cbe9c35f15b65b2 '. + '( Jimmy (He) Zhang 2013-10-11 5) '. + 'code(); "(string literal 9999-99-99 2)"; more_code();'); + $this->assertEqual($result[1], 'Jimmy (He) Zhang'); + $this->assertEqual($result[2], + ' code(); "(string literal 9999-99-99 2)"; more_code();'); + + // User name like 'Scott Shapiro (Ads Product Marketing)' + $result = DiffusionGitFileContentQuery::match( + '8220d5d54f6d5d5552a636576cbe9c35f15b65b2 '. + '( Scott Shapiro (Ads Product Marketing) 2013-10-11 5) '. + 'code(); "(string literal 9999-99-99 2)"; more_code();'); + $this->assertEqual($result[1], 'Scott Shapiro (Ads Product Marketing)'); + $this->assertEqual($result[2], + ' code(); "(string literal 9999-99-99 2)"; more_code();'); + } +} diff --git a/src/applications/diffusion/query/filecontent/DiffusionGitFileContentQuery.php b/src/applications/diffusion/query/filecontent/DiffusionGitFileContentQuery.php index 30e10c9177..ec0729d453 100644 --- a/src/applications/diffusion/query/filecontent/DiffusionGitFileContentQuery.php +++ b/src/applications/diffusion/query/filecontent/DiffusionGitFileContentQuery.php @@ -32,6 +32,10 @@ final class DiffusionGitFileContentQuery extends DiffusionFileContentQuery { } protected function tokenizeLine($line) { + return self::match($line); + } + + public static function match($line) { $m = array(); // sample lines: // @@ -41,7 +45,7 @@ final class DiffusionGitFileContentQuery extends DiffusionFileContentQuery { // 8220d5d54f6d5d5552a636576cbe9c35f15b65b2 // (Andrew Gallagher 2010-12-03 324) // // Add the lines for trailing context - preg_match('/^\s*?(\S+?)\s*\(\s*([^)]*)\s+\d{4}-\d{2}-\d{2}\s+\d+\)(.*)?$/', + preg_match('/^\s*?(\S+?)\s*\(\s*(.*?)\s+\d{4}-\d{2}-\d{2}\s+\d+\)(.*)?$/', $line, $m); $rev_id = $m[1]; $author = $m[2];