| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import pytest
- from opendevin.core.config import get_parser
- def test_help_message(capsys):
- parser = get_parser()
- with pytest.raises(SystemExit): # `--help` causes SystemExit
- parser.parse_args(['--help'])
- captured = capsys.readouterr()
- expected_help_message = """
- usage: pytest [-h] [-d DIRECTORY] [-t TASK] [-f FILE] [-c AGENT_CLS]
- [-m MODEL_NAME] [-i MAX_ITERATIONS] [-n MAX_CHARS]
- [--eval-output-dir EVAL_OUTPUT_DIR]
- [--eval-n-limit EVAL_N_LIMIT]
- [--eval-num-workers EVAL_NUM_WORKERS] [--eval-note EVAL_NOTE]
- [-l LLM_CONFIG]
- Run an agent with a specific task
- options:
- -h, --help show this help message and exit
- -d DIRECTORY, --directory DIRECTORY
- The working directory for the agent
- -t TASK, --task TASK The task for the agent to perform
- -f FILE, --file FILE Path to a file containing the task. Overrides -t if
- both are provided.
- -c AGENT_CLS, --agent-cls AGENT_CLS
- The agent class to use
- -m MODEL_NAME, --model-name MODEL_NAME
- The (litellm) model name to use
- -i MAX_ITERATIONS, --max-iterations MAX_ITERATIONS
- The maximum number of iterations to run the agent
- -n MAX_CHARS, --max-chars MAX_CHARS
- The maximum number of characters to send to and
- receive from LLM per task
- --eval-output-dir EVAL_OUTPUT_DIR
- The directory to save evaluation output
- --eval-n-limit EVAL_N_LIMIT
- The number of instances to evaluate
- --eval-num-workers EVAL_NUM_WORKERS
- The number of workers to use for evaluation
- --eval-note EVAL_NOTE
- The note to add to the evaluation directory
- -l LLM_CONFIG, --llm-config LLM_CONFIG
- The group of llm settings, e.g. a [llama3] section in
- the toml file. Overrides model if both are provided.
- """
- actual_lines = captured.out.strip().split('\n')
- print('\n'.join(actual_lines))
- expected_lines = expected_help_message.strip().split('\n')
- # Ensure both outputs have the same number of lines
- assert len(actual_lines) == len(
- expected_lines
- ), 'The number of lines in the help message does not match.'
- # Compare each line
- for actual, expected in zip(actual_lines, expected_lines):
- assert (
- actual.strip() == expected.strip()
- ), f"Expected '{expected}', got '{actual}'"
|