aboutsummaryrefslogtreecommitdiff
path: root/pw_build/py/build_recipe_test.py
blob: 4b5e7a5b0673f3712124b52678a6211f90b556dd (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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# Copyright 2022 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
"""Tests for pw_watch.build_recipe"""

from pathlib import Path
import unittest

from parameterized import parameterized  # type: ignore

from pw_build.build_recipe import BuildCommand


# pylint: disable=line-too-long
class TestBuildRecipe(unittest.TestCase):
    """Tests for creating BuildRecipes."""

    def setUp(self):
        self.maxDiff = None  # pylint: disable=invalid-name

    @parameterized.expand(
        [
            (
                'build command using make',
                BuildCommand(
                    build_dir=Path('outmake'),
                    build_system_command='make',
                    build_system_extra_args=['-k'],
                    targets=['maketarget1', 'maketarget2'],
                ),
                # result
                ['make', '-k', '-C', 'outmake', 'maketarget1', 'maketarget2'],
            ),
            (
                'build command using bazel',
                BuildCommand(
                    build_dir=Path('outbazel'),
                    build_system_command='bazel',
                    build_system_extra_args=[],
                    targets=['build', '//pw_analog/...', '//pw_assert/...'],
                ),
                # result
                [
                    'bazel',
                    '--output_base',
                    'outbazel',
                    'build',
                    '//pw_analog/...',
                    '//pw_assert/...',
                ],
            ),
            (
                'cmake shell command',
                BuildCommand(
                    build_dir=Path('outcmake'),
                    command_string='cmake -G Ninja -S ./ -B outcmake',
                ),
                # result
                ['cmake', '-G', 'Ninja', '-S', './', '-B', 'outcmake'],
            ),
            (
                'gn shell command',
                BuildCommand(
                    build_dir=Path('out'),
                    command_string='gn gen out --export-compile-commands',
                ),
                # result
                ['gn', 'gen', 'out', '--export-compile-commands'],
            ),
            (
                'python shell command',
                BuildCommand(
                    build_dir=Path('outpytest'),
                    command_string='python pw_build/py/build_recipe_test.py',
                ),
                # result
                ['python', 'pw_build/py/build_recipe_test.py'],
            ),
        ]
    )
    def test_build_command_get_args(
        self,
        _test_name,
        build_command,
        expected_args,
    ) -> None:
        """Test BuildCommand get_args."""
        self.assertEqual(expected_args, build_command.get_args())


if __name__ == '__main__':
    unittest.main()