1# Copyright (c) 2018 Nordic Semiconductor ASA
2#
3# SPDX-License-Identifier: Apache-2.0
4
5from argparse import Namespace
6
7from build import Build
8import pytest
9
10TEST_CASES = [
11    {'r': [],
12     's': None, 'c': None},
13    {'r': ['source_dir'],
14     's': 'source_dir', 'c': None},
15    {'r': ['source_dir', '--'],
16     's': 'source_dir', 'c': None},
17    {'r': ['source_dir', '--', 'cmake_opt'],
18     's': 'source_dir', 'c': ['cmake_opt']},
19    {'r': ['source_dir', '--', 'cmake_opt', 'cmake_opt2'],
20     's': 'source_dir', 'c': ['cmake_opt', 'cmake_opt2']},
21    {'r': ['thing_one', 'thing_two'],
22     's': 'thing_one', 'c': ['thing_two']},
23    {'r': ['thing_one', 'thing_two', 'thing_three'],
24     's': 'thing_one', 'c': ['thing_two', 'thing_three']},
25    {'r': ['--'],
26     's': None, 'c': None},
27    {'r': ['--', '--'],
28     's': None, 'c': ['--']},
29    {'r': ['--', 'cmake_opt'],
30     's': None, 'c': ['cmake_opt']},
31    {'r': ['--', 'cmake_opt', 'cmake_opt2'],
32     's': None, 'c': ['cmake_opt', 'cmake_opt2']},
33    {'r': ['--', 'cmake_opt', 'cmake_opt2', '--'],
34     's': None, 'c': ['cmake_opt', 'cmake_opt2', '--']},
35    {'r': ['--', 'cmake_opt', 'cmake_opt2', '--', 'tool_opt'],
36     's': None, 'c': ['cmake_opt', 'cmake_opt2', '--', 'tool_opt']},
37    {'r': ['--', 'cmake_opt', 'cmake_opt2', '--', 'tool_opt', 'tool_opt2'],
38     's': None, 'c': ['cmake_opt', 'cmake_opt2', '--', 'tool_opt',
39                      'tool_opt2']},
40    {'r': ['--', 'cmake_opt', 'cmake_opt2', '--', 'tool_opt', 'tool_opt2',
41           '--'],
42     's': None, 'c': ['cmake_opt', 'cmake_opt2', '--', 'tool_opt', 'tool_opt2',
43                      '--']},
44    ]
45
46ARGS = Namespace(board=None, build_dir=None, cmake=False, command='build',
47                 force=False, help=None, target=None, verbose=3, version=False,
48                 zephyr_base=None)
49
50@pytest.mark.parametrize('test_case', TEST_CASES)
51def test_parse_remainder(test_case):
52    b = Build()
53
54    b.args = Namespace()
55    b._parse_remainder(test_case['r'])
56    assert b.args.source_dir == test_case['s']
57    assert b.args.cmake_opts == test_case['c']
58