Chromium Code Reviews| Index: tests/git_number_test.py |
| diff --git a/tests/git_number_test.py b/tests/git_number_test.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..498c801b86da70e30d90373bcd97ba571d05148e |
| --- /dev/null |
| +++ b/tests/git_number_test.py |
| @@ -0,0 +1,85 @@ |
| +#!/usr/bin/env python |
| +# Copyright (c) 2013 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 git_number.py""" |
| + |
| +import binascii |
| +import os |
| +import sys |
| + |
| +DEPOT_TOOLS_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
| +sys.path.insert(0, DEPOT_TOOLS_ROOT) |
| + |
| +from testing_support import git_test_utils |
| +from testing_support import coverage_utils |
| + |
| + |
| +class Basic(git_test_utils.GitRepoReadWriteTestBase): |
| + REPO = """ |
| + A B C D E |
| + B F E |
| + X Y E |
| + """ |
| + |
| + @classmethod |
| + def setUpClass(cls): |
| + super(Basic, cls).setUpClass() |
| + import git_number |
| + cls.gn = git_number |
| + cls.old_POOL_KIND = cls.gn.POOL_KIND |
| + cls.gn.POOL_KIND = 'threads' |
| + |
| + @classmethod |
| + def tearDownClass(cls): |
| + cls.gn.POOL_KIND = cls.old_POOL_KIND |
| + super(Basic, cls).tearDownClass() |
| + |
| + def tearDown(self): |
| + self.gn.clear_caches() |
| + super(Basic, self).tearDown() |
| + |
| + def _git_number(self, refs, cache=False): |
| + refs = map(binascii.unhexlify, refs) |
| + self.repo.run(self.gn.load_generation_numbers, refs) |
| + if cache: |
| + self.repo.run(self.gn.finalize, refs) |
| + return map(self.gn.get_num, refs) |
| + |
| + def testBasic(self): |
| + self.assertEqual([0], self._git_number([self.repo['A']])) |
| + self.assertEqual([2], self._git_number([self.repo['F']])) |
| + self.assertEqual([0], self._git_number([self.repo['X']])) |
| + self.assertEqual([4], self._git_number([self.repo['E']])) |
| + |
| + def testInProcessCache(self): |
| + self.assertEqual( |
| + None, self.repo.run(self.gn.get_num, binascii.unhexlify(self.repo['A'])) |
| + ) |
|
M-A Ruel
2013/11/17 19:54:58
Not my favorite layout, in general I prefer:
self.
iannucci
2013/11/18 05:38:56
Done.
TBH, I'm unclear on the +4 rule. That's any
|
| + self.assertEqual([4], self._git_number([self.repo['E']])) |
| + self.assertEqual( |
| + 0, self.repo.run(self.gn.get_num, binascii.unhexlify(self.repo['A'])) |
| + ) |
| + |
| + def testOnDiskCache(self): |
| + self.assertEqual( |
| + None, self.repo.run(self.gn.get_num, binascii.unhexlify(self.repo['A'])) |
| + ) |
| + self.assertEqual([4], self._git_number([self.repo['E']], cache=True)) |
| + self.assertEqual([4], self._git_number([self.repo['E']], cache=True)) |
| + self.gn.clear_caches() |
| + self.assertEqual( |
| + 0, self.repo.run(self.gn.get_num, binascii.unhexlify(self.repo['A'])) |
| + ) |
| + self.gn.clear_caches() |
| + self.repo.run(self.gn.clear_caches, True) |
| + self.assertEqual( |
| + None, self.repo.run(self.gn.get_num, binascii.unhexlify(self.repo['A'])) |
| + ) |
| + |
| + |
| +if __name__ == '__main__': |
| + sys.exit(coverage_utils.covered_main( |
| + os.path.join(DEPOT_TOOLS_ROOT, 'git_number.py') |
| + )) |