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:")
|