public async Task It_loads_extensions_in_specified_directory_via_a_command(Language language) { var projectDir = DirectoryUtility.CreateDirectory(); var dllDir = projectDir.CreateSubdirectory("extension"); var code = language switch { Language.CSharp => $@"await kernel.SendAsync(new SubmitCode(""display(\""{language} extension installed\"");""));", Language.FSharp => $@"await kernel.SendAsync(new SubmitCode(""display(\""{language} extension installed\"");""));", _ => throw new NotSupportedException("This test does not support the specified language.") }; await KernelExtensionTestHelper.CreateExtensionAssembly( projectDir, code, dllDir); var kernel = CreateKernel(language); await using var context = KernelInvocationContext.Establish(new SubmitCode("")); using var events = context.KernelEvents.ToSubscribedList(); await kernel.LoadExtensionsFromDirectoryAsync( dllDir, context); events.Should() .NotContain(e => e is CommandFailed) .And .ContainSingle <DisplayedValueProduced>(v => v.FormattedValues.Single().Value == $"{language} extension installed"); }
public async Task It_throws_when_extension_throws_during_load(Language language) { var projectDir = DirectoryUtility.CreateDirectory(); var dllDir = projectDir.CreateSubdirectory("extension"); await KernelExtensionTestHelper.CreateExtensionAssembly( projectDir, "throw new Exception();", dllDir); var kernel = CreateKernel(language); await using var context = KernelInvocationContext.Establish(new SubmitCode("")); using var events = context.KernelEvents.ToSubscribedList(); await kernel.LoadExtensionsFromDirectoryAsync( dllDir, context); events.Should() .ContainSingle <CommandFailed>(cf => cf.Exception is KernelExtensionLoadException); }