diff --git a/dbos_transact/dbos_config.py b/dbos_transact/dbos_config.py index cc5e34c..1e557b8 100644 --- a/dbos_transact/dbos_config.py +++ b/dbos_transact/dbos_config.py @@ -97,5 +97,8 @@ def load_config(configFilePath: str = "dbos-config.yaml") -> ConfigFile: f'dbos-config.yaml specifies invalid language { data["language"] }' ) + if "runtimeConfig" not in data or "start" not in data["runtimeConfig"]: + raise DBOSInitializationError(f"dbos-config.yaml must specify a start command") + # Return data as ConfigFile type return data # type: ignore diff --git a/tests/test_config.py b/tests/test_config.py index 0fa57e1..01d04bd 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -27,6 +27,9 @@ def test_valid_config(mocker): mock_config = """ name: "some app" language: "python" + runtimeConfig: + start: + - "python3 main.py" database: hostname: 'some host' port: 1234 @@ -161,3 +164,25 @@ def test_config_bad_language(mocker): dbos_transact.dbos_config.load_config(mock_filename) assert "invalid language" in str(exc_info.value) + + +def test_config_no_start(mocker): + mock_config = """ + name: "some app" + language: python + database: + hostname: 'some host' + port: 1234 + username: 'some user' + password: abc123 + app_db_name: 'some db' + connectionTimeoutMillis: 3000 + """ + mocker.patch( + "builtins.open", side_effect=generate_mock_open(mock_filename, mock_config) + ) + + with pytest.raises(DBOSInitializationError) as exc_info: + dbos_transact.dbos_config.load_config(mock_filename) + + assert "start command" in str(exc_info.value)