git_number_test.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/usr/bin/env vpython3
  2. # Copyright 2013 The Chromium Authors. All rights reserved.
  3. # Use of this source code is governed by a BSD-style license that can be
  4. # found in the LICENSE file.
  5. """Unit tests for git_number.py"""
  6. import binascii
  7. import os
  8. import sys
  9. DEPOT_TOOLS_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  10. sys.path.insert(0, DEPOT_TOOLS_ROOT)
  11. from testing_support import git_test_utils
  12. from testing_support import coverage_utils
  13. class Basic(git_test_utils.GitRepoReadWriteTestBase):
  14. REPO_SCHEMA = """
  15. A B C D E
  16. B F E
  17. X Y E
  18. """
  19. @classmethod
  20. def setUpClass(cls):
  21. super(Basic, cls).setUpClass()
  22. import git_number
  23. cls.gn = git_number
  24. cls.old_POOL_KIND = cls.gn.POOL_KIND
  25. cls.gn.POOL_KIND = 'threads'
  26. @classmethod
  27. def tearDownClass(cls):
  28. cls.gn.POOL_KIND = cls.old_POOL_KIND
  29. super(Basic, cls).tearDownClass()
  30. def tearDown(self):
  31. self.gn.clear_caches()
  32. super(Basic, self).tearDown()
  33. def _git_number(self, refs, cache=False):
  34. refs = [binascii.unhexlify(ref) for ref in refs]
  35. self.repo.run(self.gn.load_generation_numbers, refs)
  36. if cache:
  37. self.repo.run(self.gn.finalize, refs)
  38. return [self.gn.get_num(ref) for ref in refs]
  39. def testBasic(self):
  40. self.assertEqual([0], self._git_number([self.repo['A']]))
  41. self.assertEqual([2], self._git_number([self.repo['F']]))
  42. self.assertEqual([0], self._git_number([self.repo['X']]))
  43. self.assertEqual([4], self._git_number([self.repo['E']]))
  44. def testInProcessCache(self):
  45. self.assertEqual(
  46. None,
  47. self.repo.run(self.gn.get_num, binascii.unhexlify(self.repo['A'])))
  48. self.assertEqual([4], self._git_number([self.repo['E']]))
  49. self.assertEqual(
  50. 0, self.repo.run(self.gn.get_num,
  51. binascii.unhexlify(self.repo['A'])))
  52. def testOnDiskCache(self):
  53. self.assertEqual(
  54. None,
  55. self.repo.run(self.gn.get_num, binascii.unhexlify(self.repo['A'])))
  56. self.assertEqual([4], self._git_number([self.repo['E']], cache=True))
  57. self.assertEqual([4], self._git_number([self.repo['E']], cache=True))
  58. self.gn.clear_caches()
  59. self.assertEqual(
  60. 0, self.repo.run(self.gn.get_num,
  61. binascii.unhexlify(self.repo['A'])))
  62. self.gn.clear_caches()
  63. self.repo.run(self.gn.clear_caches, True)
  64. self.assertEqual(
  65. None,
  66. self.repo.run(self.gn.get_num, binascii.unhexlify(self.repo['A'])))
  67. if __name__ == '__main__':
  68. sys.exit(
  69. coverage_utils.covered_main(
  70. os.path.join(DEPOT_TOOLS_ROOT, 'git_number.py'), '3.7'))