public async Task The_extend_directive_can_be_used_to_load_a_kernel_extension() { var extensionDir = DirectoryUtility.CreateDirectory(); var extensionDllPath = (await KernelExtensionTestHelper.CreateExtension(extensionDir, @"await kernel.SendAsync(new SubmitCode(""using System.Reflection;""));")) .FullName; var kernel = CreateKernel(); using var events = kernel.KernelEvents.ToSubscribedList(); var submitCode = new SubmitCode($"#extend \"{extensionDllPath}\""); await kernel.SendAsync(submitCode); events.Should() .ContainSingle(e => e is ExtensionLoaded && e.As <ExtensionLoaded>().ExtensionPath.FullName.Equals(extensionDllPath)); events.Should() .ContainSingle(e => e is DisplayedValueProduced && e.As <DisplayedValueProduced>() .Value .ToString() .Contains($"Loaded kernel extension TestKernelExtension from assembly {extensionDllPath}")); }
public async Task Gives_kernel_extension_load_exception_event_when_extension_throws_exception_during_load() { var extensionDir = DirectoryUtility.CreateDirectory(); var extensionDllPath = (await KernelExtensionTestHelper.CreateExtension(extensionDir, @"throw new Exception();")).FullName; var kernel = CreateKernel(); using var events = kernel.KernelEvents.ToSubscribedList(); await kernel.SendAsync(new SubmitCode($"#extend \"{extensionDllPath}\"")); events.Should() .ContainSingle(e => e is KernelExtensionLoadException); }