~michel-slm/myrepos-utils

ref: 3d77db259ae41895f62f2cbfe1fb49fa85606b65 myrepos-utils/myrepos_utils/tests/test_utils.py -rw-r--r-- 1.8 KiB
3d77db25Michel Alexandre Salim Add sort command 4 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# (c) Meta Platforms, Inc. and affiliates.
#
# Fedora-License-Identifier: GPLv2+
# SPDX-2.0-License-Identifier: GPL-2.0+
# SPDX-3.0-License-Identifier: GPL-2.0-or-later
#
# This program is free software.
# For more information on the license, see COPYING.md.
# For more information on free software, see
# <https://www.gnu.org/philosophy/free-sw.en.html>.

import configparser
import os
from myrepos_utils import utils
from unittest import mock


REPOS = {
    "src/github/owner1/projA": {"checkout": "github clone owner1/projA"},
    "src/gitlab/owner2/projB": {"checkout": "gitlab clone owner2/projB"},
    "src/github/owner0/projC": {"checkout": "github clone owner0/projC"},
}


def get_mock_config():
    config = configparser.ConfigParser()
    config.read_dict(REPOS)
    mock_config = mock.MagicMock()
    mock_config.keys.return_value = config.keys()
    mock_config.sections.return_value = config.sections()
    mock_config.__getitem__.side_effect = config.__getitem__
    return mock_config


def test_get_repos():
    mock_config = get_mock_config()
    result = utils.get_repos(mock_config)
    # keys would include DEFAULT, it should not be called
    mock_config.keys.assert_not_called()
    mock_config.sections.assert_called_once()
    assert result == list(REPOS.keys())


def test_find_repo():
    mock_config = get_mock_config()
    result = utils.find_repo("gitlab", mock_config)
    mock_config.sections.assert_called_once()
    assert result == [os.path.expanduser("~/src/gitlab/owner2/projB")]

def test_sort():
    mock_config = get_mock_config()
    result = utils.sort(mock_config)
    assert len(result) == len(REPOS) + 1 # DEFAULT
    assert set(result.sections()) == set(REPOS.keys())
    assert result.sections() == sorted(result.sections())