Index: tests/presubmit_unittest.py |
diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py |
index b420a59e907b5ca293a2c6dd9d3a078d2fbe1b07..76e5b2f4013f25bc4fcb627ce4610b349f77b0ad 100755 |
--- a/tests/presubmit_unittest.py |
+++ b/tests/presubmit_unittest.py |
@@ -1,5 +1,5 @@ |
-#!/usr/bin/python |
-# Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+#!/usr/bin/env python2.5 |
+# Copyright (c) 2011 The Chromium Authors. All rights reserved. |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
@@ -9,6 +9,7 @@ |
# pylint: disable=E1101,E1103,W0212,W0403 |
import StringIO |
+import sys |
# Fixes include path. |
from super_mox import mox, SuperMoxTestBase |
@@ -726,8 +727,8 @@ class InputApiUnittest(PresubmitTestsBase): |
'LocalToDepotPath', |
'PresubmitLocalPath', 'ReadFile', 'RightHandSideLines', 'ServerPaths', |
'basename', 'cPickle', 'cStringIO', 'canned_checks', 'change', 'environ', |
- 'host_url', 'is_committing', 'json', 'marshal', 'os_path', |
- 'owners_db', 'pickle', 'platform', 'python_executable', 're', |
+ 'host_url', 'is_committing', 'json', 'marshal', 'os_listdir', 'os_walk', |
+ 'os_path', 'owners_db', 'pickle', 'platform', 'python_executable', 're', |
'subprocess', 'tbr', 'tempfile', 'time', 'traceback', 'unittest', |
'urllib2', 'version', |
] |
@@ -1237,6 +1238,8 @@ class CannedChecksUnittest(PresubmitTestsBase): |
def MockInputApi(self, change, committing): |
input_api = self.mox.CreateMock(presubmit.InputApi) |
input_api.cStringIO = presubmit.cStringIO |
+ input_api.os_listdir = self.mox.CreateMockAnything() |
+ input_api.os_walk = self.mox.CreateMockAnything() |
input_api.os_path = presubmit.os.path |
input_api.re = presubmit.re |
input_api.traceback = presubmit.traceback |
@@ -1249,6 +1252,7 @@ class CannedChecksUnittest(PresubmitTestsBase): |
input_api.is_committing = committing |
input_api.tbr = False |
input_api.python_executable = 'pyyyyython' |
+ input_api.platform = sys.platform |
return input_api |
def testMembersChanged(self): |
@@ -1273,6 +1277,7 @@ class CannedChecksUnittest(PresubmitTestsBase): |
'CheckSvnModifiedDirectories', |
'CheckSvnForCommonMimeTypes', 'CheckSvnProperty', |
'RunPythonUnitTests', 'RunPylint', |
+ 'RunUnitTests', 'RunUnitTestsInDirectory', |
] |
# If this test fails, you should add the relevant test. |
self.compareMembers(presubmit_canned_checks, members) |
@@ -2010,6 +2015,60 @@ mac|success|blew |
self.AssertOwnersWorks(approvers=set(['ben@example.com']), |
uncovered_files=set()) |
+ def testCannedRunUnitTests(self): |
+ change = presubmit.Change( |
+ 'foo1', 'description1', self.fake_root_dir, None, 0, 0) |
+ input_api = self.MockInputApi(change, False) |
+ unit_tests = ['allo', 'bar.py'] |
+ input_api.PresubmitLocalPath().AndReturn(self.fake_root_dir) |
+ input_api.PresubmitLocalPath().AndReturn(self.fake_root_dir) |
+ proc1 = self.mox.CreateMockAnything() |
+ input_api.subprocess.Popen(['allo'], cwd=self.fake_root_dir, |
+ stderr=None, stdout=None).AndReturn(proc1) |
+ proc1.returncode = 0 |
+ proc1.communicate().AndReturn(['baz', None]) |
+ proc2 = self.mox.CreateMockAnything() |
+ input_api.subprocess.Popen(['bar.py'], cwd=self.fake_root_dir, |
+ stderr=None, stdout=None).AndReturn(proc2) |
+ proc2.returncode = 1 |
+ proc2.communicate().AndReturn(['bouz', None]) |
+ |
+ self.mox.ReplayAll() |
+ results = presubmit_canned_checks.RunUnitTests( |
+ input_api, |
+ presubmit.OutputApi, |
+ unit_tests, |
+ verbose=True) |
+ self.assertEqual(1, len(results)) |
+ self.assertEqual( |
+ presubmit.OutputApi.PresubmitPromptWarning, results[0].__class__) |
+ self.checkstdout('Running allo\nRunning bar.py\n') |
+ |
+ def testCannedRunUnitTestsInDirectory(self): |
+ change = presubmit.Change( |
+ 'foo1', 'description1', self.fake_root_dir, None, 0, 0) |
+ input_api = self.MockInputApi(change, False) |
+ input_api.PresubmitLocalPath().AndReturn(self.fake_root_dir) |
+ input_api.PresubmitLocalPath().AndReturn(self.fake_root_dir) |
+ path = presubmit.os.path.join(self.fake_root_dir, 'random_directory') |
+ input_api.os_listdir(path).AndReturn(['.', '..', 'a', 'b', 'c']) |
+ input_api.os_path.isfile = lambda x: not x.endswith('.') |
+ proc1 = self.mox.CreateMockAnything() |
+ input_api.subprocess.Popen(['random_directory/b'], cwd=self.fake_root_dir, |
+ stderr=None, stdout=None).AndReturn(proc1) |
+ proc1.returncode = 0 |
+ proc1.communicate().AndReturn(['baz', None]) |
+ |
+ self.mox.ReplayAll() |
+ results = presubmit_canned_checks.RunUnitTestsInDirectory( |
+ input_api, |
+ presubmit.OutputApi, |
+ 'random_directory', |
+ whitelist=['^a$', '^b$'], |
+ blacklist=['a'], |
+ verbose=True) |
+ self.assertEqual(results, []) |
+ self.checkstdout('Running random_directory/b\n') |
if __name__ == '__main__': |