xref: /aosp_15_r20/external/pigweed/pw_arduino_build/py/builder_test.py (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1# Copyright 2020 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14"""Tests for arduinobuilder."""
15
16import shlex
17import unittest
18from parameterized import parameterized  # type: ignore
19
20
21class TestShellArgumentSplitting(unittest.TestCase):
22    """Tests to ensure shlex.split handles expected use cases."""
23
24    @parameterized.expand(
25        [
26            (
27                "remove-both-quotes",
28                """ -DUSB_CONFIG_POWER=100 """
29                """ '-DUSB_MANUFACTURER="Adafruit LLC"' """
30                """ '-DUSB_PRODUCT="Adafruit PyGamer Advance M4"' """
31                """ "-I$HOME/samd/1.6.2/cores/arduino/TinyUSB" """,
32                [
33                    """ -DUSB_CONFIG_POWER=100 """.strip(),
34                    """ -DUSB_MANUFACTURER="Adafruit LLC" """.strip(),
35                    """ -DUSB_PRODUCT="Adafruit PyGamer Advance M4" """.strip(),
36                    """ -I$HOME/samd/1.6.2/cores/arduino/TinyUSB """.strip(),
37                ],
38            )
39        ]
40    )
41    def test_split_arguments_and_remove_quotes(
42        self, unused_test_name, input_string, expected
43    ):
44        """Test splitting a str into a list of arguments with quotes removed."""
45        result = shlex.split(input_string)
46        self.assertEqual(result, expected)
47
48
49if __name__ == '__main__':
50    unittest.main()
51