Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(469)

Unified Diff: tests/pending_manager_test.py

Issue 6813044: Add relative path support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/commit-queue
Patch Set: Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pending_manager.py ('k') | tests/project_base_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/pending_manager_test.py
diff --git a/tests/pending_manager_test.py b/tests/pending_manager_test.py
index 8d3f2ea27817d43dde58576eb23a928e1cce12cb..e3ef78efcce7e80fc3842cb847b212efb92ea0ed 100755
--- a/tests/pending_manager_test.py
+++ b/tests/pending_manager_test.py
@@ -7,6 +7,7 @@
import logging
import os
+import re
import sys
import unittest
import urllib2
@@ -14,20 +15,41 @@ import urllib2
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.join(ROOT_DIR, '..'))
+import find_depot_tools # pylint: disable=W0611
+import patch
+
import pending_manager
from verification import base
from verification import fake
+from verification import project_base
# Access to a protected member xxx of a client class
# pylint: disable=W0212
-def _SendStackFail(last_tb, stack, url=None, maxlen=50):
+SVN_PATCH = (
+ 'Index: chrome/file.cc\n'
+ '===================================================================\n'
+ '--- chrome/file.cc\t(revision 74690)\n'
+ '+++ chrome/file.cc\t(working copy)\n'
+ '@@ -80,10 +80,13 @@\n'
+ ' // Foo\n'
+ ' // Bar\n'
+ ' void foo() {\n'
+ '- return bar;\n'
+ '+ return foo;\n'
+ ' }\n'
+ ' \n'
+ ' \n')
+
+
+def _SendStackFail(last_tb, stack, *args, **kwargs):
"""Fails a test that calls SendStack.
In practice it doesn't happen when a test pass but will when a test fails so
hook it here so breakpad doesn't send too many stack traces to maintainers.
"""
+ print '_SendStackFail() was called'
print last_tb
print stack
assert False
@@ -53,12 +75,9 @@ def trim(x):
class FakeRietveld(object):
url = 'http://nowhere'
- def __init__(self, test):
- self.test = test
-
- def get_issue_properties(self, issue_id, _):
- self.test.assertEquals(issue_id, 31337)
- return {
+ def __init__(self):
+ self.issues = {
+ 31337: {
"description": "foo",
"created": "2010-12-27 03:23:31.149045",
"cc": ["cc@example.com",],
@@ -70,7 +89,7 @@ class FakeRietveld(object):
"base_url": "svn://fake/repo",
"closed": False,
"owner": "Author",
- "issue": issue_id,
+ "issue": 31337,
"subject": 'foo',
"messages": [
{
@@ -81,8 +100,15 @@ class FakeRietveld(object):
},
],
"commit": True,
+ },
}
+ def get_pending_issues(self):
+ return self.issues.keys()
+
+ def get_issue_properties(self, issue_id, _):
+ return self.issues[issue_id]
+
def close_issue(self, issue):
pass
@@ -95,19 +121,30 @@ class FakeRietveld(object):
def add_comment(self, issue, text):
pass
+ def get_patch(self, issue, patchset):
+ return patch.PatchSet([
+ patch.FilePatchDiff('chrome/file.cc', SVN_PATCH, []),
+ patch.FilePatchDelete('other/place/foo', True),
+ patch.FilePatchBinary('foo', 'data', []),
+ ])
+
class FakeCheckout(object):
project_path = os.getcwd()
def __init__(self):
- self._prepare = False
- self._commit = False
+ self._prepare = 0
+ self._commit = []
+ self._apply_patch = []
def prepare(self):
- self._prepare = True
+ self._prepare += 1
+
+ def apply_patch(self, patchset):
+ self._apply_patch.append(patchset)
def commit(self, message, author):
- self._commit = True
+ self._commit.append((message, author))
def get_settings(self, key):
return None
@@ -147,14 +184,11 @@ class PendingManager(unittest.TestCase):
def _get_pc(self, verifiers_no_patch, verifiers):
pc = pending_manager.PendingManager(
- FakeRietveld(self), FakeCheckout(), verifiers_no_patch, verifiers)
+ FakeRietveld(), FakeCheckout(), verifiers_no_patch, verifiers)
- def fake_issues():
- return [31337]
def apply_patch(pending, revision):
pc._patch_applied = True
- pc._fetch_pending_issues = fake_issues
pc._apply_patch = apply_patch
pc._patch_applied = False
return pc
@@ -162,13 +196,13 @@ class PendingManager(unittest.TestCase):
def testNoVerification(self):
try:
pending_manager.PendingManager(
- FakeRietveld(self), FakeCheckout(), [], [])
+ FakeRietveld(), FakeCheckout(), [], [])
self.fail()
except AssertionError:
pass
try:
pending_manager.PendingManager(
- FakeRietveld(self),
+ FakeRietveld(),
FakeCheckout(),
[fake.FakeVerifier(base.SUCCEEDED)],
[fake.FakeVerifier(base.SUCCEEDED)])
@@ -189,10 +223,11 @@ class PendingManager(unittest.TestCase):
pc.update_status()
commit = pc.queue.pending_commits[0]
self.assertEquals(commit.verifications['fake'].get_state(), result)
+ self.assertEquals('', commit.relpath)
self.assertEquals(len(commit.verifications), 1)
pc.scan_results()
self.assertEquals(len(pc.queue.pending_commits), 0)
- self.assertEquals(pc.checkout._commit, result == base.SUCCEEDED)
+ self.assertEquals(len(pc.checkout._commit), result == base.SUCCEEDED)
def testNoPatchVerification(self):
pc = self._get_pc([fake.FakeVerifier(base.SUCCEEDED)], [])
@@ -235,15 +270,17 @@ class PendingManager(unittest.TestCase):
self.assertEquals(len(commit.verifications), 0)
pc.process_new_pending_commit()
commit = pc.queue.pending_commits[0]
+ self.assertEquals('', commit.relpath)
self.assertEquals(commit.verifications['fake'].get_state(), base.PROCESSING)
self.assertEquals(len(commit.verifications), 1)
pc.update_status()
commit = pc.queue.pending_commits[0]
+ self.assertEquals('', commit.relpath)
self.assertEquals(commit.verifications['fake'].get_state(), result)
self.assertEquals(len(commit.verifications), 1)
pc.scan_results()
self.assertEquals(len(pc.queue.pending_commits), 0)
- self.assertEquals(pc.checkout._commit, result == base.SUCCEEDED)
+ self.assertEquals(len(pc.checkout._commit), result == base.SUCCEEDED)
def testDeferNoPatchVerification(self):
pc = self._get_pc([fake.DeferredFakeVerifier(base.SUCCEEDED)], [])
@@ -305,7 +342,7 @@ class PendingManager(unittest.TestCase):
pc.scan_results()
self.assertEquals(len(pc.queue.pending_commits), 0)
self.assertEquals(
- pc.checkout._commit,
+ len(pc.checkout._commit),
all(x == base.SUCCEEDED for x in (f1, f2, f3, f4)))
def test4thVerificationFail(self):
@@ -349,10 +386,11 @@ class PendingManager(unittest.TestCase):
self.assertEquals(commit.verifications['fake2'].get_state(), f2)
self.assertEquals(commit.verifications['fake3'].get_state(), f3)
self.assertEquals(commit.verifications['fake4'].get_state(), f4)
+ self.assertEquals('', commit.relpath)
pc.scan_results()
self.assertEquals(len(pc.queue.pending_commits), 0)
self.assertEquals(
- pc.checkout._commit,
+ len(pc.checkout._commit),
all(x == base.SUCCEEDED for x in (f1, f2, f3, f4)))
def testDefer4thVerificationFail(self):
@@ -367,6 +405,36 @@ class PendingManager(unittest.TestCase):
self._check_defer_4(
base.SUCCEEDED, base.SUCCEEDED, base.FAILED, base.SUCCEEDED)
+ def testRelPath(self):
+ verifiers = [
+ project_base.ProjectBaseUrlVerifier(
+ [r'^%s(.*)$' % re.escape(r'http://example.com/')]),
+ ]
+ pc = pending_manager.PendingManager(
+ FakeRietveld(), FakeCheckout(), verifiers, [])
+ pc.rietveld.issues[31337]['base_url'] = 'http://example.com/sub/dir'
+ pc.look_for_new_pending_commit()
+ self.assertEquals(1, len(pc.queue.pending_commits))
+ pc.process_new_pending_commit()
+ self.assertEquals('sub/dir', pc.queue.pending_commits[0].relpath)
+ self.assertEquals(1, pc.checkout._prepare)
+ self.assertEquals(1, len(pc.checkout._apply_patch))
+ self.assertEquals([], pc.checkout._commit)
+ pc.update_status()
+ self.assertEquals(1, pc.checkout._prepare)
+ self.assertEquals(1, len(pc.checkout._apply_patch))
+ self.assertEquals([], pc.checkout._commit)
+ patches = pc.checkout._apply_patch[0]
+ self.assertEquals(
+ ['sub/dir/chrome/file.cc', 'sub/dir/other/place/foo', 'sub/dir/foo'],
+ patches.filenames)
+ pc.scan_results()
+ self.assertEquals(2, pc.checkout._prepare)
+ self.assertEquals(2, len(pc.checkout._apply_patch))
+ self.assertEquals(
+ [('foo\n\nReview URL: http://nowhere/31337', 'author@example.com')],
+ pc.checkout._commit)
+
if __name__ == '__main__':
logging.basicConfig(level=logging.ERROR)
« no previous file with comments | « pending_manager.py ('k') | tests/project_base_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698