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.
		
		
		
		
		
			
		
			
				
	
	
		
			125 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			125 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
#!/usr/bin/env vpython3
 | 
						|
# coding=utf-8
 | 
						|
# Copyright 2020 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.
 | 
						|
"""Tests for git_map."""
 | 
						|
 | 
						|
from __future__ import print_function
 | 
						|
from __future__ import unicode_literals
 | 
						|
 | 
						|
import io
 | 
						|
import os
 | 
						|
import re
 | 
						|
import sys
 | 
						|
import unittest
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
import git_map
 | 
						|
import git_common
 | 
						|
 | 
						|
if sys.version_info.major == 2:
 | 
						|
  import mock
 | 
						|
else:
 | 
						|
  from unittest import mock
 | 
						|
 | 
						|
 | 
						|
git_common.TEST_MODE = True
 | 
						|
GitRepo = git_test_utils.GitRepo
 | 
						|
 | 
						|
class GitMapTest(git_test_utils.GitRepoReadOnlyTestBase):
 | 
						|
  REPO_SCHEMA = """"
 | 
						|
  A B C D 😋 F G
 | 
						|
    B H I J K
 | 
						|
          J L
 | 
						|
  """
 | 
						|
 | 
						|
  def setUp(self):
 | 
						|
    # Include branch_K, branch_L to make sure that ABCDEFG all get the
 | 
						|
    # same commit hashes as self.repo. Otherwise they get committed with the
 | 
						|
    # wrong timestamps, due to commit ordering.
 | 
						|
    # TODO(iannucci): Make commit timestamps deterministic in left to right, top
 | 
						|
    #                 to bottom order, not in lexi-topographical order.
 | 
						|
    origin_schema = git_test_utils.GitRepoSchema("""
 | 
						|
    A B C D 😋 F G M N O
 | 
						|
      B H I J K
 | 
						|
            J L
 | 
						|
    """, self.getRepoContent)
 | 
						|
    self.origin = origin_schema.reify()
 | 
						|
    self.origin.git('checkout', 'master')
 | 
						|
    self.origin.git('branch', '-d', *['branch_'+l for l in 'KLG'])
 | 
						|
 | 
						|
    self.repo.git('remote', 'add', 'origin', self.origin.repo_path)
 | 
						|
    self.repo.git('config', '--add', 'remote.origin.fetch',
 | 
						|
                  '+refs/tags/*:refs/tags/*')
 | 
						|
    self.repo.git('update-ref', 'refs/remotes/origin/master', 'tag_E')
 | 
						|
    self.repo.git('branch', '--set-upstream-to', 'branch_G', 'branch_K')
 | 
						|
    self.repo.git('branch', '--set-upstream-to', 'branch_K', 'branch_L')
 | 
						|
 | 
						|
    self.repo.git('fetch', 'origin')
 | 
						|
    mock.patch('git_map.RESET', '').start()
 | 
						|
    mock.patch('git_map.BLUE_BACK', '').start()
 | 
						|
    mock.patch('git_map.BRIGHT_RED', '').start()
 | 
						|
    mock.patch('git_map.CYAN', '').start()
 | 
						|
    mock.patch('git_map.GREEN', '').start()
 | 
						|
    mock.patch('git_map.MAGENTA', '').start()
 | 
						|
    mock.patch('git_map.RED', '').start()
 | 
						|
    mock.patch('git_map.WHITE', '').start()
 | 
						|
    mock.patch('git_map.YELLOW', '').start()
 | 
						|
    self.addCleanup(mock.patch.stopall)
 | 
						|
 | 
						|
  def testHelp(self):
 | 
						|
    outbuf = io.BytesIO()
 | 
						|
    self.repo.run(git_map.main, ['-h'], outbuf)
 | 
						|
    self.assertIn(b'usage: git map [-h] [--help] [<args>]', outbuf.getvalue())
 | 
						|
 | 
						|
  def testGitMap(self):
 | 
						|
    expected = os.linesep.join([
 | 
						|
        '* 6e85e877ea	(tag_O, origin/master, origin/branch_O) 1970-01-30 ~ O',
 | 
						|
        '* 4705470871	(tag_N) 1970-01-28 ~ N',
 | 
						|
        '* 8761b1a94f	(tag_M) 1970-01-26 ~ M',
 | 
						|
        '* 5e7ce08691	(tag_G) 1970-01-24 ~ G',
 | 
						|
        '* 78543ed411	(tag_F) 1970-01-18 ~ F',
 | 
						|
        '* f5c2b77013	(tag_😋) 1970-01-16 ~ 😋',
 | 
						|
        '* 5249c43079	(tag_D) 1970-01-10 ~ D',
 | 
						|
        '* 072ade676a	(tag_C) 1970-01-06 ~ C',
 | 
						|
        '| * e77da937d5	(branch_G) 1970-01-26 ~ G',
 | 
						|
        '| * acda9677fd	1970-01-20 ~ F',
 | 
						|
        '| * b4bed3c8e1	1970-01-18 ~ 😋',
 | 
						|
        '| * 5da071fda9	1970-01-12 ~ D',
 | 
						|
        '| * 1ef9b2e4ca	1970-01-08 ~ C',
 | 
						|
        '| | * ddd611f619	(branch_L) 1970-01-24 ~ L',
 | 
						|
        '| | | * f07cbd8cfc	(branch_K) 1970-01-22 ~ K',
 | 
						|
        '| | |/  ',
 | 
						|
        '| | * fb7da24708	1970-01-16 ~ J    <(branch_L)',
 | 
						|
        '| | * bb168f6d65	1970-01-14 ~ I',
 | 
						|
        '| | * ee1032effa	1970-01-10 ~ H',
 | 
						|
        '| |/  ',
 | 
						|
        '| * db57edd2c0	1970-01-06 ~ B    <(branch_K)',
 | 
						|
        '| * e4f775f844	(root_A) 1970-01-04 ~ A',
 | 
						|
        '| * 2824d6d8b6	(tag_L, origin/branch_L) 1970-01-22 ~ L',
 | 
						|
        '| | * 4e599306f0	(tag_K, origin/branch_K) 1970-01-20 ~ K',
 | 
						|
        '| |/  ',
 | 
						|
        '| * 332f1b4499	(tag_J) 1970-01-14 ~ J',
 | 
						|
        '| * 2fc0bc5ee5	(tag_I) 1970-01-12 ~ I',
 | 
						|
        '| * 6e0ab26451	(tag_H) 1970-01-08 ~ H',
 | 
						|
        '|/  ',
 | 
						|
        '* 315457dbe8	(tag_B) 1970-01-04 ~ B',
 | 
						|
        '* cd589e62d8	(tag_A, origin/root_A) 1970-01-02 ~ A',
 | 
						|
        '* 7026d3d68e	(tag_", root_", master, branch_") 1970-01-02 ~ "',
 | 
						|
		])
 | 
						|
    outbuf = io.BytesIO()
 | 
						|
    self.repo.run(git_map.main, [], outbuf)
 | 
						|
    output = outbuf.getvalue()
 | 
						|
    output = re.sub(br'.\[\d\dm', b'', output)
 | 
						|
    output = re.sub(br'.\[m', b'', output)
 | 
						|
    self.assertEqual(output.splitlines(), expected.encode('utf-8').splitlines())
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
  unittest.main()
 |