Make config file a positional argument, as it is required

- Test invalid config file path throws. Remove redundant cli test

- Simplify cli parser code
  - Do not need to explicitly check if args.config_file set.
    argparser checks for positional arguments automatically

- Use standard semantics for cli args
  - All positional args are required. Non positional args are optional

- Improve command line --help description
This commit is contained in:
Debanjum Singh Solanky
2022-08-05 00:24:12 +03:00
parent a3b35fbb6e
commit ca5a8bd113
2 changed files with 13 additions and 23 deletions

View File

@@ -1,5 +1,9 @@
# Standard Modules
from pathlib import Path
from random import random
# External Modules
import pytest
# Internal Packages
from src.utils.cli import cli
@@ -9,7 +13,7 @@ from src.utils.cli import cli
# ----------------------------------------------------------------------------------------------------
def test_cli_minimal_default():
# Act
actual_args = cli(['--config-file=tests/data/config.yml'])
actual_args = cli(['tests/data/config.yml'])
# Assert
assert actual_args.config_file == Path('tests/data/config.yml')
@@ -17,22 +21,15 @@ def test_cli_minimal_default():
assert actual_args.verbose == 0
# ----------------------------------------------------------------------------------------------------
def test_cli_flags():
def test_cli_invalid_config_file_path():
# Act
actual_args = cli(['--config-file=tests/data/config.yml',
'--regenerate',
'-vvv'])
# Assert
assert actual_args.config_file == Path('tests/data/config.yml')
assert actual_args.regenerate == True
assert actual_args.verbose == 3
with pytest.raises(ValueError):
cli([f"non-existent-khoj-{random()}.yml"])
# ----------------------------------------------------------------------------------------------------
def test_cli_config_from_file():
# Act
actual_args = cli(['--config-file=tests/data/config.yml',
actual_args = cli(['tests/data/config.yml',
'--regenerate',
'-vvv'])