public async Task Kernel_can_pound_r_nuget_using_kernel_client() { var kernel = new CompositeKernel { new CSharpKernel().UseNugetDirective(), }; var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteMessage(new SubmitCode(@"#r ""nuget:Microsoft.Spark, 0.4.0"""), 1); writer.WriteMessage(new Quit(), 2); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); var events = text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries) .Select(JObject.Parse).ToList(); events.Should().Contain(e => e["eventType"].Value <string>() == nameof(NuGetPackageAdded)); }
public async Task Kernel_can_be_interacted_using_kernel_client() { var kernel = new CompositeKernel { new CSharpKernel() }; var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteMessage(new SubmitCode(@"var x = 123;"), 1); writer.WriteMessage(new SubmitCode("x"), 2); writer.WriteMessage(new Quit(), 3); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); this.Assent(text, _configuration); }
public async Task Kernel_client_surfaces_code_submission_Errors() { var kernel = new CSharpKernel(); var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteMessage(new SubmitCode(@"var a = 12"), 1); writer.WriteMessage(new Quit(), 2); writer.Flush(); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); var events = text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries) .Select(JObject.Parse).ToList(); events.Should() .Contain(e => e["eventType"].Value <string>() == nameof(IncompleteCodeSubmissionReceived)) .And .Contain(e => e["eventType"].Value <string>() == nameof(CommandFailed)); }
public async Task Kernel_can_be_interacted_using_kernel_client() { var kernel = new CompositeKernel { new CSharpKernel() }; var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteMessage(new SubmitCode(@"var x = 123;")); writer.WriteMessage(new SubmitCode("x")); writer.WriteMessage(new Quit()); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); var events = text.Split(Environment.NewLine) .Select(JsonConvert.DeserializeObject <StreamKernelEvent>); events.Should().Contain(e => e.EventType == "ValueProduced"); }
public static async Task <int> Do( IKernel kernel, IConsole console) { var client = new KernelStreamClient(kernel, Console.In, Console.Out); await client.Start(); return(0); }
public static async Task <int> Do( StartupOptions startupOptions, IKernel kernel, IConsole console) { Program.StartToolLogging(startupOptions); var client = new KernelStreamClient(kernel, Console.In, Console.Out); await client.Start(); return(0); }
public async Task Kernel_can_be_interacted_using_kernel_client() { var receivedOnFakeRepl = new List <IKernelCommand>(); var kernel = new CompositeKernel { new CSharpKernel(), new FakeKernel("fake") { Handle = context => { receivedOnFakeRepl.Add(context.Command); return(Task.CompletedTask); } } }; var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteMessage(new SubmitCode("#kernel csharp")); writer.WriteMessage(new SubmitCode(@"var x = 123;")); writer.WriteMessage(new SubmitCode("x")); writer.WriteMessage(new Quit()); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); var events = text.Split(Environment.NewLine) .Select(e => JsonConvert.DeserializeObject <StreamKernelEvent>(e)); events.Should().Contain(e => e.EventType == "ValueProduced"); }
public KernelClientTests(ITestOutputHelper output) { _output = output; var displayIdSeed = 0; _configuration = new Configuration() .UsingExtension("json"); _configuration = _configuration.SetInteractive(Debugger.IsAttached); Microsoft.DotNet.Interactive.Kernel.DisplayIdGenerator = () => Interlocked.Increment(ref displayIdSeed).ToString(); var kernel = new CompositeKernel { new CSharpKernel() .UseKernelHelpers() .UseNugetDirective() .UseDefaultRendering() }; _io = new IOStreams(); _kernelClient = new KernelStreamClient( kernel, _io, _io); _events = _io.OutputStream .Where(s => !string.IsNullOrWhiteSpace(s)) .Select(JObject.Parse) .ToSubscribedList(); _disposables.Add(_kernelClient); _disposables.Add(_output.SubscribeToPocketLogger()); _disposables.Add(kernel.LogEventsToPocketLogger()); _disposables.Add(kernel); _disposables.Add(() => Microsoft.DotNet.Interactive.Kernel.DisplayIdGenerator = null); }
public async Task Kernel_client_surfaces_json_errors() { var kernel = new CompositeKernel { new CSharpKernel(), new FakeKernel("fake") { Handle = context => Task.CompletedTask } }; var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteLine("{ hello"); writer.WriteMessage(new Quit(), 2); writer.Flush(); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); this.Assent(text, _configuration); }