git-map: Refactor and add simple tests
Change-Id: I8fd0034f6a6d7623792620f92208b25961fa174e Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1990142 Reviewed-by: Anthony Polito <apolito@google.com> Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>changes/42/1990142/15
parent
8b52ca7aa7
commit
b800fde565
@ -0,0 +1,124 @@
|
||||
#!/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()
|
Loading…
Reference in New Issue