diff options
Diffstat (limited to 'tests/Agent.Core.Tests/ConfigurationTests.cs')
| -rw-r--r-- | tests/Agent.Core.Tests/ConfigurationTests.cs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/Agent.Core.Tests/ConfigurationTests.cs b/tests/Agent.Core.Tests/ConfigurationTests.cs index 79c746d..e84d132 100644 --- a/tests/Agent.Core.Tests/ConfigurationTests.cs +++ b/tests/Agent.Core.Tests/ConfigurationTests.cs @@ -44,6 +44,63 @@ public sealed class ConfigurationTests } [Fact] + public void CommandLine_defaults_to_serve_when_command_is_omitted() + { + Assert.Equal(AppCommand.Serve, CommandLine.Parse([]).Command); + CommandLine withOption = CommandLine.Parse(["--lang", "ja"]); + Assert.Equal(AppCommand.Serve, withOption.Command); + Assert.Equal("ja", withOption.Language); + } + + [Fact] + public void Local_configuration_recursively_merges_maps_and_replaces_sequences() + { + using var directory = new TestDirectory(); + string config = CreateValidConfiguration(directory); + directory.File("agent.local.yaml", """ + application: + language: ja + sandbox: + filesystem: + read: [C:/local-only] + """); + + AgentConfiguration result = ConfigurationLoader.Load(config); + + Assert.Equal("ja", result.Application.Language); + Assert.Equal(["C:/local-only"], result.Sandbox.Filesystem.Read); + Assert.Equal("model", result.Ollama.Model); + } + + [Fact] + public void Unknown_local_configuration_property_is_fatal() + { + using var directory = new TestDirectory(); + string config = CreateValidConfiguration(directory); + directory.File("agent.local.yaml", "unknown_local: true\n"); + + Assert.Throws<ConfigurationException>(() => ConfigurationLoader.Load(config)); + } + + [Fact] + public void Execute_file_without_process_approval_reports_canonical_keys() + { + using var directory = new TestDirectory(); + string config = CreateValidConfiguration(directory); + string executable = directory.File("tools/tool.exe", "fixture").Replace('\\', '/'); + directory.File("agent.local.yaml", $$""" + sandbox: + filesystem: + execute: [{{executable}}] + """); + + ConfigurationException error = Assert.Throws<ConfigurationException>(() => ConfigurationLoader.Load(config)); + Assert.Contains("sandbox.filesystem.execute", error.Message, StringComparison.Ordinal); + Assert.Contains("sandbox.process.approvals", error.Message, StringComparison.Ordinal); + Assert.Contains(Path.GetFullPath(executable), error.Message, StringComparison.OrdinalIgnoreCase); + } + + [Fact] public void SkillLoader_loads_standard_skill_directories_only() { using var directory = new TestDirectory(); |
