summaryrefslogtreecommitdiffstats
path: root/tests/test_runner.py
blob: b1c0e705166eeffe6faf1d20eae2f1efe305e426 (plain)
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
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
import json
import tempfile
import unittest
from typing import cast

import common
import runner


class Test(unittest.TestCase):
    def test_get_submodule(self) -> None:
        """
        We can locate submodules.
        """
        submodule = runner.get_submodule("qt/qtbase")
        self.assertIsInstance(submodule, str)
        submodule = cast(str, submodule)
        self.assertEqual(submodule, "qtbase")

        self.assertIsInstance(runner.get_submodule("qtbase"), common.Error)
        self.assertIsInstance(runner.get_submodule("qt/qt/qtbase"), common.Error)


class TestArguments(unittest.TestCase):
    def test_parse(self) -> None:
        """
        We can parse the required arguments.
        """
        arguments = runner.Arguments.parse(["--configuration", "file", "--output", "directory"])
        self.assertEqual(arguments.configuration_file, "file")
        self.assertEqual(arguments.output_directory, "directory")


class TestConfiguration(unittest.TestCase):
    def test_load(self) -> None:
        """
        We can detect errors in a configuration file.
        """
        with tempfile.NamedTemporaryFile(mode="w") as f:
            json.dump(
                {
                    # Empty fields are errors.
                    "coordinator_info": {"url": "https://coordinator.com/", "secret": ""},
                    "qtbase_git_remote": {"url": "ssh://codereview.qt-project.org/qt/qtbase"},
                },
                f,
            )
            f.seek(0)
            configuration = runner.Configuration.load(file=f.name, skip_upload=True)

        self.assertIsInstance(configuration, common.Error)
        error = cast(common.Error, configuration)
        self.assertEqual(error.message.splitlines()[0], "Configuration file contains errors:")