As mentioned in the documentation 
<https://hexdocs.pm/ex_unit/ExUnit.Assertions.html#assert_raise/3>, 
`assert_raise/3` in all its glory allows us to supply a `message` as a 
`String` or even as a `Regex`.

I *personally* have a preference to abstract away from specific message 
content in my tests as tests should not fail on account 
of an update to the grammar/phrasal of a given error message. 

To illustrate with a practical example, instead of writing a test like this:
    test "Required presence `Feature`-token" do
      assert_raise(SyntaxError, "Missing `Feature`-token", fn ->
        """
        #language:en
        """
        |> parse
      end)
    end

One could instead abstract away as follows:
    test "Required presence `Feature`-token" do
      assert_raise(SyntaxError, :missing_feature_token, fn ->
        """
        #language:en
        """
        |> parse
      end)
    end

That one `error_code` `:missing_feature_token` essentially summarizes the 
entire error message I may wish to benevolently display to the 
*end-user-in-agony*, 
which may be a short phrase or even a concise paragraph. Whatever may be, 
none of that prose needs to leak inside the dark corners of my test suite 
and an 'error code'
seems to be very helpful to achieve this objective.

My suggestion, if it deems your approval, would require:

   1. Introduction of `error_code`(or whatever is semantically more sane) 
inside 
   the relevant defexception 
   
<https://github.com/elixir-lang/elixir/blob/cd9253d1027bf8c0b0d34cb6ccd98f1a7b872d3e/lib/ex_unit/lib/ex_unit/assertions.ex#L4-L7>
   2. Modification of def assert_raise 
   
<https://github.com/elixir-lang/elixir/blob/cd9253d1027bf8c0b0d34cb6ccd98f1a7b872d3e/lib/ex_unit/lib/ex_unit/assertions.ex#L377-L435>

Above, I have volunteered my suggestion in the context of a practical need 
which happens to be fulfilled by resorting to an `error_code` as an `atom`.
I have a limited imagination, so I hope that others can help explore/share 
better alternatives.


-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/74820552-7c1a-49c6-bf0b-de425cc15cfe%40googlegroups.com.

Reply via email to