summaryrefslogtreecommitdiff
path: root/tests/Agent.Core.Tests/ConfigurationTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Agent.Core.Tests/ConfigurationTests.cs')
-rw-r--r--tests/Agent.Core.Tests/ConfigurationTests.cs57
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();