diff --git a/dciclient/v1/shell_commands/cli.py b/dciclient/v1/shell_commands/cli.py index 1a626fd7..847e1b8a 100644 --- a/dciclient/v1/shell_commands/cli.py +++ b/dciclient/v1/shell_commands/cli.py @@ -533,6 +533,8 @@ def parse_arguments(args, environment={}): p.add_argument("--limit", default=10) p.add_argument("--offset", default=0) p.add_argument("--query", help="Query language dsl", required=True) + _create_array_argument(p, "--includes", help="Comma separated list of fields to include.") + _create_array_argument(p, "--excludes", help="Comma separated list of fields to exclude.") p.set_defaults(command="job-search") p = subparsers.add_parser("job-show", help="Show a job.", parents=[base_parser]) diff --git a/tests/conftest.py b/tests/conftest.py index 4afd3343..1f7b2097 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -235,6 +235,10 @@ def invoke_raw(arguments): args = cli.parse_arguments(arguments, environment) return dci_runner.run(context, args) + def invoke_parse(arguments): + environment = {} + return cli.parse_arguments(arguments, environment) + class Runner(object): pass @@ -245,6 +249,7 @@ class Runner(object): runner.invoke_create_job = invoke_create_job runner.invoke_find_latest_component = invoke_find_latest_component runner.invoke_diff_jobs = invoke_diff_jobs + runner.invoke_parse = invoke_parse return runner diff --git a/tests/shell_commands/test_job.py b/tests/shell_commands/test_job.py index 0cb73e2d..3222d75e 100644 --- a/tests/shell_commands/test_job.py +++ b/tests/shell_commands/test_job.py @@ -285,5 +285,8 @@ def test_job_search(mock_requests, runner_remoteci): mock_requests.get.return_value = res_mock res_mock.json.return_value = {"hits": "jobs"} res_mock.status_code = 200 - jobs = runner_remoteci.invoke_raw(["job-search", "--query=(name='lol')"]) + jobs = runner_remoteci.invoke_raw(["job-search", "--query=(name='lol')", "--includes=name,team", "--excludes=api_secret,remoteci_id"]) assert jobs.json() == {"hits": "jobs"} + parsed_jobs = runner_remoteci.invoke_parse(["job-search", "--query=(name='lol')", "--includes=name,team", "--excludes=api_secret,remoteci_id"]) + assert parsed_jobs.includes == ["name", "team"] + assert parsed_jobs.excludes == ["api_secret", "remoteci_id"]