From 87a17f1fc586a5f8121509f802408234a4c4819f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20K=C5=82osko?= Date: Wed, 22 Dec 2021 15:48:35 +0100 Subject: [PATCH] Respect \r in individual stdout results --- lib/livebook/session/data.ex | 2 ++ test/livebook/session/data_test.exs | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/lib/livebook/session/data.ex b/lib/livebook/session/data.ex index 31e1ce345..ecad4fb4b 100644 --- a/lib/livebook/session/data.ex +++ b/lib/livebook/session/data.ex @@ -854,6 +854,8 @@ defmodule Livebook.Session.Data do ) end + defp add_output([], output) when is_binary(output), do: [apply_rewind(output)] + defp add_output([], output), do: [output] defp add_output([head | tail], output) when is_binary(head) and is_binary(output) do diff --git a/test/livebook/session/data_test.exs b/test/livebook/session/data_test.exs index 46d19e90e..6ad6bd3cb 100644 --- a/test/livebook/session/data_test.exs +++ b/test/livebook/session/data_test.exs @@ -1814,6 +1814,29 @@ defmodule Livebook.Session.DataTest do }, []} = Data.apply_operation(data, operation) end + test "normalizes individual stdout results to respect CR" do + data = + data_after_operations!([ + {:insert_section, self(), 0, "s1"}, + {:insert_cell, self(), "s1", 0, :elixir, "c1"}, + {:set_runtime, self(), NoopRuntime.new()}, + {:queue_cells_evaluation, self(), ["c1"]} + ]) + + operation = {:add_cell_evaluation_output, self(), "c1", "Hola\rHey"} + + assert {:ok, + %{ + notebook: %{ + sections: [ + %{ + cells: [%{outputs: ["Hey"]}] + } + ] + } + }, []} = Data.apply_operation(data, operation) + end + test "normalizes consecutive stdout results to respect CR" do data = data_after_operations!([