OpenHands/tests/unit/test_arg_parser.py
Boxuan Li e7b5ddfe06
Add integration test framework with mock llm (#1301)
* Add integration test framework with mock llm

* Fix MonologueAgent and PlannerAgent tests

* Remove adhoc logging

* Use existing logs

* Fix SWEAgent and PlannerAgent

* Check-in test log files

* conftest: look up under test name folder only

* Add docstring to conftest

* Finish dev doc

* Avoid non-determinism

* Remove dependency on llm embedding model

* Init embedding model only for MonologueAgent

* Add adhoc fix for sandbox discrepancy

* Test ssh and exec sandboxes

* CI: fix missing sandbox type

* conftest: Remove hack

* Reword comment for TODO
2024-04-25 10:56:53 -04:00

43 lines
1.7 KiB
Python

from opendevin.config import get_parser
import pytest
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]
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
"""
actual_lines = captured.out.strip().split('\n')
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}'"