| OLD | NEW |
| (Empty) | |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. |
| 4 |
| 5 import json |
| 6 import StringIO |
| 7 from testing_utils import testing |
| 8 import textwrap |
| 9 import urllib2 |
| 10 |
| 11 from common import repo_util |
| 12 |
| 13 |
| 14 class RepoUtilTest(testing.AppengineTestCase): |
| 15 |
| 16 def testExtractCommitPositionAndCodeReviewUrl(self): |
| 17 testcases = [ |
| 18 { |
| 19 'message': |
| 20 'balabala...\n' |
| 21 '\n' |
| 22 'BUG=604502\n' |
| 23 '\n' |
| 24 'Review-Url: https://codereview.chromium.org/1927593004\n' |
| 25 'Cr-Commit-Position: refs/heads/master@{#390254}\n', |
| 26 'commit_position': 390254, |
| 27 'code_review_url': 'https://codereview.chromium.org/1927593004', |
| 28 }, |
| 29 { |
| 30 'message': |
| 31 'balabala...\n' |
| 32 '\n' |
| 33 'BUG=409934\n' |
| 34 '\n' |
| 35 'Review URL: https://codereview.chromium.org/547753003\n' |
| 36 '\n' |
| 37 'Cr-Commit-Position: refs/heads/master@{#293661}', |
| 38 'commit_position': 293661, |
| 39 'code_review_url': 'https://codereview.chromium.org/547753003', |
| 40 }, |
| 41 { |
| 42 'message': |
| 43 'balabala...\n' |
| 44 '\n' |
| 45 'balabala...\n' |
| 46 '\n' |
| 47 'R=test4@chromium.org\n' |
| 48 '\n' |
| 49 'Review URL: https://codereview.chromium.org/469523002\n' |
| 50 '\n' |
| 51 'Cr-Commit-Position: refs/heads/master@{#289120}', |
| 52 'commit_position': 289120, |
| 53 'code_review_url': 'https://codereview.chromium.org/469523002', |
| 54 }, |
| 55 { |
| 56 'message': |
| 57 'balabala...\n' |
| 58 '\n' |
| 59 'balabala...\n' |
| 60 '\n' |
| 61 'R=test4@chromium.org\n' |
| 62 '\n' |
| 63 'Review URL: https://codereview.chromium.org/469523002\n', |
| 64 'commit_position': None, |
| 65 'code_review_url': 'https://codereview.chromium.org/469523002', |
| 66 }, |
| 67 { |
| 68 'message': None, |
| 69 'commit_position': None, |
| 70 'code_review_url': None |
| 71 } |
| 72 ] |
| 73 |
| 74 for testcase in testcases: |
| 75 (commit_position, |
| 76 code_review_url) = repo_util.ExtractCommitPositionAndCodeReviewUrl( |
| 77 testcase['message']) |
| 78 self.assertEqual(commit_position, testcase['commit_position']) |
| 79 self.assertEqual(code_review_url, testcase['code_review_url']) |
| 80 |
| 81 def testNormalizeEmail(self): |
| 82 self.assertEqual(repo_util.NormalizeEmail( |
| 83 'test@chromium.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538'), |
| 84 'test@chromium.org') |
| 85 |
| 86 def testGetRevertedRevision(self): |
| 87 message = ( |
| 88 'Revert of test1\n\nReason for revert:\nrevert test1\n\n' |
| 89 'Original issue\'s description:\n> test 1\n>\n' |
| 90 '> description of test 1.\n>\n> BUG=none\n> TEST=none\n' |
| 91 '> R=test@chromium.org\n> TBR=test@chromium.org\n>\n' |
| 92 '> Committed: https://chromium.googlesource.com/chromium/src/+/' |
| 93 'c9cc182781484f9010f062859cda048afefefefe\n' |
| 94 '> Cr-Commit-Position: refs/heads/master@{#341992}\n\n' |
| 95 'TBR=test@chromium.org\nNOPRESUBMIT=true\nNOTREECHECKS=true\n' |
| 96 'NOTRY=true\nBUG=none\n\n' |
| 97 'Review URL: https://codereview.chromium.org/1278653002\n\n' |
| 98 'Cr-Commit-Position: refs/heads/master@{#342013}\n') |
| 99 |
| 100 reverted_revision = repo_util.GetRevertedRevision(message) |
| 101 self.assertEqual('c9cc182781484f9010f062859cda048afefefefe', |
| 102 reverted_revision) |
| 103 |
| 104 def testGetRevertedRevisionRevertOfRevert(self): |
| 105 message = ( |
| 106 'Revert of Revert\n\nReason for revert:\nRevert of revert\n\n' |
| 107 'Original issue\'s description:\n> test case of revert of revert\n>\n' |
| 108 '> Reason for revert:\n> reason\n>\n> Original issue\'s description:\n' |
| 109 '> > base cl\n> >\n> > R=kalman\n> > BUG=424661\n> >\n' |
| 110 '> > Committed: https://crrev.com/34ea66b8ac1d56dadd670431063857ffdd\n' |
| 111 '> > Cr-Commit-Position: refs/heads/master@{#326953}\n>\n' |
| 112 '> TBR=test@chromium.org\n> NOPRESUBMIT=true\n' |
| 113 '> NOTREECHECKS=true\n> NOTRY=true\n> BUG=424661\n>\n' |
| 114 '> Committed: https://crrev.com/76a7e3446188256ca240dc31f78de29511a' |
| 115 '2c322\n' |
| 116 '> Cr-Commit-Position: refs/heads/master@{#327021}\n\n' |
| 117 'TBR=test@chromium.org\nNOPRESUBMIT=true\n' |
| 118 'NOTREECHECKS=true\nNOTRY=true\nBUG=424661\n\n' |
| 119 'Review URL: https://codereview.chromium.org/1161773008\n\n' |
| 120 'Cr-Commit-Position: refs/heads/master@{#332062}\n') |
| 121 |
| 122 reverted_revision = repo_util.GetRevertedRevision(message) |
| 123 self.assertEqual('76a7e3446188256ca240dc31f78de29511a2c322', |
| 124 reverted_revision) |
| 125 |
| 126 def testGetRevertedRevisionNoRevertedCL(self): |
| 127 message = ( |
| 128 'Test for not revert cl\n\n' |
| 129 'TBR=test@chromium.org\nNOPRESUBMIT=true\n' |
| 130 'NOTREECHECKS=true\nNOTRY=true\nBUG=424661\n\n' |
| 131 'Review URL: https://codereview.chromium.org/1161773008\n\n' |
| 132 'Cr-Commit-Position: refs/heads/master@{#332062}\n') |
| 133 |
| 134 reverted_revision = repo_util.GetRevertedRevision(message) |
| 135 self.assertIsNone(reverted_revision) |
| 136 |
| 137 def testGetRepoToCloneUrlDict(self): |
| 138 def _MockUrlOpen(*_): |
| 139 output = StringIO.StringIO() |
| 140 repo_dict = { |
| 141 'proj1': { |
| 142 'clone_url': 'https://chromium.googlesource.com/proj1', |
| 143 'description': 'blabla1', |
| 144 'name': 'proj1' |
| 145 }, |
| 146 'proj2': { |
| 147 'clone_url': 'https://chromium.googlesource.com/proj2', |
| 148 'description': 'blabla2', |
| 149 'name': 'proj2' |
| 150 } |
| 151 } |
| 152 output.write(')]}\'\n') |
| 153 output.write(json.dumps(repo_dict)) |
| 154 output.seek(0) |
| 155 return output |
| 156 |
| 157 self.mock(urllib2, 'urlopen', _MockUrlOpen) |
| 158 |
| 159 expected_repo_to_clone_url = { |
| 160 'proj1': 'https://chromium.googlesource.com/proj1', |
| 161 'proj2': 'https://chromium.googlesource.com/proj2' |
| 162 } |
| 163 |
| 164 self.assertEqual(repo_util.GetRepoToCloneUrlDict('host_url'), |
| 165 expected_repo_to_clone_url) |
| OLD | NEW |