You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
#!/usr/bin/env python
 | 
						|
# Copyright 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_SCHEMA = """
 | 
						|
  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'
 | 
						|
  ))
 |