Skip to content

Commit 6538f33

Browse files
author
Thomaz Leite
committed
Bring back original tests for IO.ANSI
To avoid conflict and preserve compatibilty, the new tests use the functions `IO.ANSI.format/2` and `IO.ANSI.format_fragment/2`.
1 parent fe57a82 commit 6538f33

File tree

1 file changed

+77
-28
lines changed

1 file changed

+77
-28
lines changed

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

Lines changed: 77 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,70 +3,119 @@ Code.require_file "../test_helper.exs", __DIR__
33
defmodule IO.ANSITest do
44
use ExUnit.Case, async: true
55

6-
test :escape_ansicode do
7-
assert IO.ANSI.escape(:green, true) ==
6+
test :format_ansicode do
7+
assert IO.ANSI.format(:green, true) ==
88
"#{IO.ANSI.green}#{IO.ANSI.reset}"
9-
assert IO.ANSI.escape(:green, false) ==
9+
assert IO.ANSI.format(:green, false) ==
1010
""
1111
end
1212

13-
test :escape_binary do
14-
assert IO.ANSI.escape("Hello, world!", true) ==
13+
test :format_binary do
14+
assert IO.ANSI.format("Hello, world!", true) ==
1515
"Hello, world!"
16-
assert IO.ANSI.escape("This is a map: %{foo: :bar}", false) ==
16+
assert IO.ANSI.format("This is a map: %{foo: :bar}", false) ==
1717
"This is a map: %{foo: :bar}"
1818
end
1919

20-
test :escape_empty_list do
21-
assert IO.ANSI.escape([], true) ==
20+
test :format_empty_list do
21+
assert IO.ANSI.format([], true) ==
2222
""
23-
assert IO.ANSI.escape([], false) ==
23+
assert IO.ANSI.format([], false) ==
2424
""
2525
end
2626

27-
test :escape_ansicode_list do
28-
assert IO.ANSI.escape([:red, :bright], true) ==
27+
test :format_ansicode_list do
28+
assert IO.ANSI.format([:red, :bright], true) ==
2929
"#{IO.ANSI.red}#{IO.ANSI.bright}#{IO.ANSI.reset}"
30-
assert IO.ANSI.escape([:red, :bright], false) ==
30+
assert IO.ANSI.format([:red, :bright], false) ==
3131
""
3232
end
3333

34-
test :escape_binary_list do
35-
assert IO.ANSI.escape(["Hello, ", "world!"], true) ==
34+
test :format_binary_list do
35+
assert IO.ANSI.format(["Hello, ", "world!"], true) ==
3636
"Hello, world!"
37-
assert IO.ANSI.escape(["Hello, ", "world!"], false) ==
37+
assert IO.ANSI.format(["Hello, ", "world!"], false) ==
3838
"Hello, world!"
3939
end
4040

41-
test :escape_char_list do
42-
assert IO.ANSI.escape('Hello, world!', true) ==
41+
test :format_char_list do
42+
assert IO.ANSI.format('Hello, world!', true) ==
4343
"Hello, world!"
44-
assert IO.ANSI.escape('Hello, world!', false) ==
44+
assert IO.ANSI.format('Hello, world!', false) ==
4545
"Hello, world!"
4646
end
4747

48-
test :escape_mixed_list do
49-
assert IO.ANSI.escape(["Hello", ?,, 32, :red, "world!"], true) ==
48+
test :format_mixed_list do
49+
assert IO.ANSI.format(["Hello", ?,, 32, :red, "world!"], true) ==
5050
"Hello, #{IO.ANSI.red}world!#{IO.ANSI.reset}"
51-
assert IO.ANSI.escape(["Hello", ?,, 32, :red, "world!"], false) ==
51+
assert IO.ANSI.format(["Hello", ?,, 32, :red, "world!"], false) ==
5252
"Hello, world!"
5353
end
5454

55-
test :escape_nested_list do
56-
assert IO.ANSI.escape(["Hello, ", ["nested", 32, :red, "world!"]], true) ==
55+
test :format_nested_list do
56+
assert IO.ANSI.format(["Hello, ", ["nested", 32, :red, "world!"]], true) ==
5757
"Hello, nested #{IO.ANSI.red}world!#{IO.ANSI.reset}"
58-
assert IO.ANSI.escape(["Hello, ", ["nested", 32, :red, "world!"]], false) ==
58+
assert IO.ANSI.format(["Hello, ", ["nested", 32, :red, "world!"]], false) ==
5959
"Hello, nested world!"
6060
end
6161

62-
test :escape_fragment do
63-
assert IO.ANSI.escape_fragment([:red, "Hello!"], true) ==
62+
test :format_fragment do
63+
assert IO.ANSI.format_fragment([:red, "Hello!"], true) ==
6464
"#{IO.ANSI.red}Hello!"
6565
end
6666

67-
test :invalid_sequence do
67+
test :format_invalid_sequence do
68+
assert_raise ArgumentError, "invalid ANSI sequence specification: brigh", fn ->
69+
IO.ANSI.format([:brigh, "Hello!"], true)
70+
end
71+
end
72+
73+
test :escape_single do
74+
assert IO.ANSI.escape("Hello, %{red}world!", true) ==
75+
"Hello, #{IO.ANSI.red}world!#{IO.ANSI.reset}"
76+
assert IO.ANSI.escape("Hello, %{red}world!", true) ==
77+
"Hello, #{IO.ANSI.red}world!#{IO.ANSI.reset}"
78+
end
79+
80+
test :escape_non_attribute do
81+
assert IO.ANSI.escape("Hello %{clear}world!", true) ==
82+
"Hello #{IO.ANSI.clear}world!#{IO.ANSI.reset}"
83+
assert IO.ANSI.escape("Hello %{home}world!", true) ==
84+
"Hello #{IO.ANSI.home}world!#{IO.ANSI.reset}"
85+
end
86+
87+
test :escape_multiple do
88+
assert IO.ANSI.escape("Hello, %{red,bright}world!", true) ==
89+
"Hello, #{IO.ANSI.red}#{IO.ANSI.bright}world!#{IO.ANSI.reset}"
90+
assert IO.ANSI.escape("Hello, %{red, bright}world!", true) ==
91+
"Hello, #{IO.ANSI.red}#{IO.ANSI.bright}world!#{IO.ANSI.reset}"
92+
assert IO.ANSI.escape("Hello, %{red , bright}world!", true) ==
93+
"Hello, #{IO.ANSI.red}#{IO.ANSI.bright}world!#{IO.ANSI.reset}"
94+
end
95+
96+
test :escape_no_emit do
97+
assert IO.ANSI.escape("Hello, %{}world!", false) ==
98+
"Hello, world!"
99+
100+
assert IO.ANSI.escape("Hello, %{red,bright}world!", false) ==
101+
"Hello, world!"
102+
end
103+
104+
test :escape_fragment do
105+
assert IO.ANSI.escape("%{red}", true) == "#{IO.ANSI.red}#{IO.ANSI.reset}"
106+
assert IO.ANSI.escape_fragment("", true) == ""
107+
end
108+
109+
test :escape_noop do
110+
assert IO.ANSI.escape("") == ""
111+
end
112+
113+
test :escape_invalid do
114+
assert_raise ArgumentError, "invalid ANSI sequence specification: brigh", fn ->
115+
IO.ANSI.escape("%{brigh}, yes")
116+
end
68117
assert_raise ArgumentError, "invalid ANSI sequence specification: brigh", fn ->
69-
IO.ANSI.escape([:brigh, "Hello!"], true)
118+
IO.ANSI.escape("%{brigh,red}, yes")
70119
end
71120
end
72121
end

0 commit comments

Comments
 (0)