Skip to content

Commit 0123edd

Browse files
committed
Better error reporting for invalid ANSI escape sequences
1 parent 87af330 commit 0123edd

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

lib/elixir/lib/io/ansi.ex

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,11 @@ defmodule IO.ANSI do
141141
escape_sequence(rest)
142142
end
143143

144+
defp escape_sequence(other) do
145+
[spec|_] = String.split(other, %r/(,|\})/)
146+
raise ArgumentError, message: "invalid ANSI sequence specification: #{spec}"
147+
end
148+
144149
@doc %B"""
145150
Escapes a string coverting named ANSI sequences into actual ANSI codes.
146151

lib/elixir/test/elixir/io/ansi_test.exs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,13 @@ defmodule IO.ANSITest do
3333
test :noop do
3434
assert IO.ANSI.escape("") == ""
3535
end
36+
37+
test :invalid do
38+
assert_raise ArgumentError, "invalid ANSI sequence specification: brigh", fn ->
39+
IO.ANSI.escape("%{brigh}, yes")
40+
end
41+
assert_raise ArgumentError, "invalid ANSI sequence specification: brigh", fn ->
42+
IO.ANSI.escape("%{brigh,red}, yes")
43+
end
44+
end
3645
end

0 commit comments

Comments
 (0)