| Index: commit-queue/tests/presubmit_check_test.py
|
| ===================================================================
|
| --- commit-queue/tests/presubmit_check_test.py (revision 249146)
|
| +++ commit-queue/tests/presubmit_check_test.py (working copy)
|
| @@ -1,169 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright (c) 2012 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.
|
| -
|
| -"""Unit tests for verification/presubmit_check.py."""
|
| -
|
| -import logging
|
| -import os
|
| -import sys
|
| -import unittest
|
| -
|
| -ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
|
| -sys.path.insert(0, os.path.join(ROOT_DIR, '..'))
|
| -
|
| -from verification import base
|
| -from verification import presubmit_check
|
| -
|
| -import find_depot_tools # pylint: disable=W0611
|
| -from testing_support import trial_dir
|
| -
|
| -# From tests/
|
| -import mocks
|
| -
|
| -
|
| -class PresubmitTest(mocks.TestCase, trial_dir.TrialDirMixIn):
|
| - def setUp(self):
|
| - mocks.TestCase.setUp(self)
|
| - trial_dir.TrialDirMixIn.setUp(self)
|
| -
|
| - # The presubmit check assumes PWD is set accordingly.
|
| - self._old_cwd = os.getcwd()
|
| - os.chdir(self.root_dir)
|
| - with open(os.path.join(self.root_dir, 'hello.txt'), 'wb') as f:
|
| - f.write('allo')
|
| - self.pending.files = ['hello.txt']
|
| -
|
| - def tearDown(self):
|
| - try:
|
| - os.chdir(self._old_cwd)
|
| - trial_dir.TrialDirMixIn.tearDown(self)
|
| - finally:
|
| - mocks.TestCase.tearDown(self)
|
| -
|
| - def _presubmit(self, content):
|
| - # Creates the presubmit check.
|
| - with open(os.path.join(self.root_dir, 'PRESUBMIT.py'), 'wb') as f:
|
| - f.write(content)
|
| -
|
| - def testPresubmitBuggy(self):
|
| - self._presubmit('symbol_not_defined\n')
|
| - self._check(error_message='symbol_not_defined')
|
| -
|
| - def testPresubmitHangs(self):
|
| - self._presubmit('import time\ntime.sleep(5)')
|
| - self._check(error_message='The presubmit check was hung.', expiration=0.2)
|
| -
|
| - def testSuccess(self):
|
| - self._presubmit('')
|
| - self._check()
|
| -
|
| - def testSuccessNotify(self):
|
| - self._presubmit(
|
| - 'def CheckChangeOnCommit(input_api, output_api):\n'
|
| - ' return [output_api.PresubmitNotifyResult("There is no problem")]\n')
|
| - self._check()
|
| -
|
| - def testFailWarning(self):
|
| - self._presubmit(
|
| - 'def CheckChangeOnCommit(input_api, output_api):\n'
|
| - ' return [output_api.PresubmitPromptWarning(\n'
|
| - ' "There is some problems")]\n')
|
| - self._check(error_message='There is some problems\n')
|
| -
|
| - def testFailError(self):
|
| - self._presubmit(
|
| - 'def CheckChangeOnCommit(input_api, output_api):\n'
|
| - ' return [output_api.PresubmitError("Die die please die")]\n')
|
| - self._check(error_message='Die die please die')
|
| -
|
| - def _check(self, error_message=None, expiration=None):
|
| - # checkout is not used yet. To be used to get the list of modified files.
|
| - ver = presubmit_check.PresubmitCheckVerifier(self.context)
|
| - if expiration:
|
| - ver.execution_timeout = expiration
|
| - ver.verify(self.pending)
|
| - ver.update_status(None)
|
| - name = presubmit_check.PresubmitCheckVerifier.name
|
| - self.assertEqual(self.pending.verifications.keys(), [name])
|
| - if error_message:
|
| - self.assertIn(
|
| - error_message, self.pending.verifications[name].error_message)
|
| - self.assertEqual(
|
| - self.pending.verifications[name].get_state(), base.FAILED)
|
| - self.assertIn(error_message, self.pending.error_message())
|
| - else:
|
| - self.assertEqual(None, self.pending.verifications[name].error_message)
|
| - self.assertEqual(
|
| - self.pending.verifications[name].get_state(), base.SUCCEEDED)
|
| - self.assertEqual('', self.pending.error_message())
|
| - self.context.status.check_names(['presubmit'] * 2)
|
| -
|
| - def testPresubmitTryJob(self):
|
| - self._presubmit(
|
| - 'def CheckChangeOnCommit(input_api, output_api):\n'
|
| - ' out = input_api.canned_checks.CheckRietveldTryJobExecution(\n'
|
| - ' 1, 2, 3, 4, 5, 6, absurd=True)\n'
|
| - ' assert [] == out\n'
|
| - ' return out\n')
|
| - self._check()
|
| -
|
| - def testPresubmitTreeOpen(self):
|
| - self._presubmit(
|
| - 'def CheckChangeOnCommit(input_api, output_api):\n'
|
| - ' out = input_api.canned_checks.CheckTreeIsOpen(\n'
|
| - ' 1, 2, 3, 4, 5, 6, absurd=True)\n'
|
| - ' assert [] == out\n'
|
| - ' return out\n')
|
| - self._check()
|
| -
|
| - def testPresubmitPendingBuilds(self):
|
| - self._presubmit(
|
| - 'def CheckChangeOnCommit(input_api, output_api):\n'
|
| - ' out = input_api.canned_checks.CheckBuildbotPendingBuilds(\n'
|
| - ' 1, 2, 3, 4, 5, 6, absurd=True)\n'
|
| - ' assert [] == out\n'
|
| - ' return out\n')
|
| - self._check()
|
| -
|
| - def testPresubmitRietveld(self):
|
| - self._presubmit(
|
| - ('def CheckChangeOnCommit(input_api, output_api):\n'
|
| - ' out = []\n'
|
| - ' if input_api.rietveld.email != %r:\n'
|
| - ' out.append(output_api.PresubmitError(\n'
|
| - ' "email: %%r" %% input_api.rietveld.email))\n'
|
| - # TODO(maruel): Bad! Remove me.
|
| - ' if input_api.rietveld.password != %r:\n'
|
| - ' out.append(output_api.PresubmitError(\n'
|
| - ' "password: %%r" %% input_api.rietveld.password))\n'
|
| - ' if input_api.rietveld.url != %r:\n'
|
| - ' out.append(output_api.PresubmitError(\n'
|
| - ' "url: %%r" %% input_api.rietveld.url))\n'
|
| - ' return out\n') % (
|
| - self.context.rietveld.email,
|
| - self.context.rietveld.password,
|
| - self.context.rietveld.url))
|
| -
|
| - self._check()
|
| -
|
| - def testPresubmitNoFiles(self):
|
| - self.pending.files = []
|
| - self._presubmit(
|
| - 'def CheckChangeOnCommit(input_api, output_api):\n'
|
| - ' return []\n')
|
| - # TODO(maruel): Would make sense to have a more helpful error message.
|
| - self._check(
|
| - 'Presubmit check for 42-23 failed and returned exit status 2.\n\n'
|
| - 'Usage: presubmit_shim.py [options] <files...>\n\n'
|
| - 'presubmit_shim.py: error: For unversioned directory, <files> is not '
|
| - 'optional.\n')
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - if '-v' in sys.argv:
|
| - logging.basicConfig(level=logging.DEBUG)
|
| - else:
|
| - logging.basicConfig(level=logging.ERROR)
|
| - unittest.main()
|
|
|