| | """Env vars related tests for the EventStreamRuntime, which connects to the ActionExecutor running in the sandbox."""
|
| |
|
| | import os
|
| | from unittest.mock import patch
|
| |
|
| | from conftest import _close_test_runtime, _load_runtime
|
| |
|
| | from openhands.events.action import CmdRunAction
|
| | from openhands.events.observation import CmdOutputObservation
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| | def test_env_vars_os_environ(temp_dir, runtime_cls, run_as_openhands):
|
| | with patch.dict(os.environ, {'SANDBOX_ENV_FOOBAR': 'BAZ'}):
|
| | runtime = _load_runtime(temp_dir, runtime_cls, run_as_openhands)
|
| |
|
| | obs: CmdOutputObservation = runtime.run_action(CmdRunAction(command='env'))
|
| | print(obs)
|
| |
|
| | obs: CmdOutputObservation = runtime.run_action(
|
| | CmdRunAction(command='echo $FOOBAR')
|
| | )
|
| | print(obs)
|
| | assert obs.exit_code == 0, 'The exit code should be 0.'
|
| | assert (
|
| | obs.content.strip().split('\n\r')[0].strip() == 'BAZ'
|
| | ), f'Output: [{obs.content}] for {runtime_cls}'
|
| |
|
| | _close_test_runtime(runtime)
|
| |
|
| |
|
| | def test_env_vars_runtime_operations(temp_dir, runtime_cls):
|
| | runtime = _load_runtime(temp_dir, runtime_cls)
|
| |
|
| |
|
| | runtime.add_env_vars({'QUUX': 'abc"def'})
|
| | obs = runtime.run_action(CmdRunAction(command='echo $QUUX'))
|
| | assert (
|
| | obs.exit_code == 0 and obs.content.strip().split('\r\n')[0].strip() == 'abc"def'
|
| | )
|
| |
|
| |
|
| | runtime.add_env_vars({'FOOBAR': 'xyz'})
|
| | obs = runtime.run_action(CmdRunAction(command='echo $QUUX $FOOBAR'))
|
| | assert (
|
| | obs.exit_code == 0
|
| | and obs.content.strip().split('\r\n')[0].strip() == 'abc"def xyz'
|
| | )
|
| |
|
| |
|
| | prev_env = runtime.run_action(CmdRunAction(command='env')).content
|
| | runtime.add_env_vars({})
|
| | current_env = runtime.run_action(CmdRunAction(command='env')).content
|
| | assert prev_env == current_env
|
| |
|
| |
|
| | runtime.add_env_vars({'QUUX': 'new_value'})
|
| | obs = runtime.run_action(CmdRunAction(command='echo $QUUX'))
|
| | assert (
|
| | obs.exit_code == 0
|
| | and obs.content.strip().split('\r\n')[0].strip() == 'new_value'
|
| | )
|
| |
|
| | _close_test_runtime(runtime)
|
| |
|
| |
|
| | def test_env_vars_added_by_config(temp_dir, runtime_cls):
|
| | runtime = _load_runtime(
|
| | temp_dir,
|
| | runtime_cls,
|
| | runtime_startup_env_vars={'ADDED_ENV_VAR': 'added_value'},
|
| | )
|
| |
|
| |
|
| | obs = runtime.run_action(CmdRunAction(command='echo $ADDED_ENV_VAR'))
|
| | assert (
|
| | obs.exit_code == 0
|
| | and obs.content.strip().split('\r\n')[0].strip() == 'added_value'
|
| | )
|
| | _close_test_runtime(runtime)
|
| |
|