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..7a1b73a72a61bc3cde2caf54623bc6cb012edf1a |
--- /dev/null |
+++ b/tests/git_number_test.py |
@@ -0,0 +1,86 @@ |
+#!/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']))) |
+ 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'), |
+ '3.7' |
+ )) |