# SPDX-License-Identifier: Apache-2.0 import pytest from fastvideo.api import ConfigValidationError, RunConfig, parse_config def test_unknown_field_error_includes_nested_path() -> None: with pytest.raises( ConfigValidationError, match=r"generator\.engine\.bogus: unknown field", ): parse_config( RunConfig, { "generator": { "model_path": "/models/base", "engine": {"bogus": True}, }, "request": {}, }, ) def test_missing_required_field_error_includes_path() -> None: with pytest.raises( ConfigValidationError, match=r"generator\.model_path: missing required field", ): parse_config( RunConfig, { "generator": {}, "request": {}, }, ) def test_invalid_literal_error_includes_path() -> None: with pytest.raises( ConfigValidationError, match=r"generator\.engine\.execution_backend: expected one of \['mp', 'ray'\]", ): parse_config( RunConfig, { "generator": { "model_path": "/models/base", "engine": {"execution_backend": "threaded"}, }, "request": {}, }, ) def test_invalid_nested_type_error_includes_list_path() -> None: with pytest.raises( ConfigValidationError, match=r"request\.plan\.stages\[0\]\.name: expected str", ): parse_config( RunConfig, { "generator": {"model_path": "/models/base"}, "request": { "plan": { "stages": [ { "name": 123, "kind": "sample", } ] } }, }, )