| 1547 | |
| 1548 | |
| 1549 | def test_cli_variadic_positional_arg(env): |
| 1550 | class MainRequired(BaseSettings): |
| 1551 | model_config = SettingsConfigDict(cli_parse_args=True) |
| 1552 | |
| 1553 | values: CliPositionalArg[list[int]] |
| 1554 | |
| 1555 | class MainOptional(MainRequired): |
| 1556 | values: CliPositionalArg[list[int]] = [1, 2, 3] |
| 1557 | |
| 1558 | assert CliApp.run(MainOptional, cli_args=[]).model_dump() == {'values': [1, 2, 3]} |
| 1559 | with pytest.raises(SettingsError, match='error parsing CLI: the following arguments are required: VALUES'): |
| 1560 | CliApp.run(MainRequired, cli_args=[], cli_exit_on_error=False) |
| 1561 | |
| 1562 | env.set('VALUES', '[4,5,6]') |
| 1563 | assert CliApp.run(MainOptional, cli_args=[]).model_dump() == {'values': [4, 5, 6]} |
| 1564 | with pytest.raises(SettingsError, match='error parsing CLI: the following arguments are required: VALUES'): |
| 1565 | CliApp.run(MainRequired, cli_args=[], cli_exit_on_error=False) |
| 1566 | |
| 1567 | assert CliApp.run(MainOptional, cli_args=['7', '8', '9']).model_dump() == {'values': [7, 8, 9]} |
| 1568 | assert CliApp.run(MainRequired, cli_args=['7', '8', '9']).model_dump() == {'values': [7, 8, 9]} |
| 1569 | |
| 1570 | |
| 1571 | def test_cli_variadic_positional_arg_custom_type(): |