That would be lovely as well. My main question there is if there are performance concerns invoking the formatter in such cases? I can't imagine it'd be an issue for test failures, but general pattern match exceptions seem like they might be more sensitive to such things.
And possibly a relevant question in both cases: How well does this work with inspect limits that end up eliding parts of the data? On Sunday, May 28, 2023 at 12:35:40 PM UTC-4 José Valim wrote: > If we are going down this path, then my suggestion would be to add this to > all of Elixir itself, starting with function clause errors. :) If someone > wants to explore this path, please go ahead! > > On Sun, May 28, 2023 at 5:13 PM Ben Wilson <benwil...@gmail.com> wrote: > >> Agreed. Can the formatter get invoked on output like that I wonder? >> >> On Friday, May 26, 2023 at 3:32:02 AM UTC-4 ifu...@gmail.com wrote: >> >>> Consider the following code: >>> >>> setup do >>> %{a: 1} >>> end >>> >>> test "test", %{b: b} do >>> IO.inspect(b) >>> end >>> >>> if we run the test, then it fails with the following error: >>> 1) test test (SandboxTest) >>> test/sandbox_test.exs:8 >>> ** (FunctionClauseError) no function clause matching in >>> SandboxTest."test test"/1 >>> >>> The following arguments were given to SandboxTest."test test"/1: >>> >>> # 1 >>> %{a: 1, async: false, case: SandboxTest, describe: nil, >>> describe_line: nil, file: >>> "/home/artur/projects/sandbox/test/sandbox_test.exs", line: 8, module: >>> SandboxTest, registered: %{}, test: :"test test", test_type: :test} >>> >>> code: test "test", %{b: b} do >>> stacktrace: >>> test/sandbox_test.exs:8: (test) >>> >>> >>> A way better error reporting is present if the test uses assert macro: >>> >>> setup do >>> %{a: 1} >>> end >>> >>> test "test", context do >>> assert %{b: b} = context >>> IO.inspect(b) >>> end >>> >>> Error: >>> 1) test test (SandboxTest) >>> test/sandbox_test.exs:9 >>> match (=) failed >>> code: assert %{b: b} = context >>> left: %{b: b} >>> right: %{ >>> a: 1, >>> async: false, >>> case: SandboxTest, >>> describe: nil, >>> describe_line: nil, >>> file: "/home/artur/projects/sandbox/test/sandbox_test.exs", >>> line: 9, >>> module: SandboxTest, >>> registered: %{}, >>> test: :"test test", >>> test_type: :test >>> } >>> stacktrace: >>> test/sandbox_test.exs:10: (test) >>> >>> It would be great if something similar is reported for the first code >>> snippet. >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "elixir-lang-core" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to elixir-lang-co...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elixir-lang-core/513c8678-e03c-40da-9163-9cfd7e9c943bn%40googlegroups.com >> >> <https://groups.google.com/d/msgid/elixir-lang-core/513c8678-e03c-40da-9163-9cfd7e9c943bn%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/5f8ef0b6-0b6f-41d7-90df-73a24c3226f2n%40googlegroups.com.