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