Skip to content

Commit 717db29

Browse files
authored
Merge pull request #590 from Shopify/bostonaholic/fix-colors
fix missing color from list of available colors
2 parents 13d0975 + 2c63139 commit 717db29

File tree

6 files changed

+47
-29
lines changed

6 files changed

+47
-29
lines changed

Gemfile.lock

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
cli-ui (2.3.0)
4+
cli-ui (2.3.1)
55

66
GEM
77
remote: https://rubygems.org/
@@ -14,7 +14,6 @@ GEM
1414
docile (1.4.0)
1515
erubi (1.13.0)
1616
json (2.9.1)
17-
json (2.9.1-java)
1817
language_server-protocol (3.17.0.4)
1918
method_source (1.1.0)
2019
minitest (5.25.4)
@@ -32,7 +31,6 @@ GEM
3231
racc
3332
prism (1.2.0)
3433
racc (1.8.1)
35-
racc (1.8.1-java)
3634
rainbow (3.1.1)
3735
rake (13.2.1)
3836
rbi (0.2.1)
@@ -68,7 +66,6 @@ GEM
6866
sorbet (0.5.11781)
6967
sorbet-static (= 0.5.11781)
7068
sorbet-runtime (0.5.11781)
71-
sorbet-static (0.5.11781-java)
7269
sorbet-static (0.5.11781-universal-darwin)
7370
sorbet-static (0.5.11781-x86_64-linux)
7471
sorbet-static-and-runtime (0.5.11781)

lib/cli/ui/color.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def initialize(sgr, name)
5656
reset: RESET,
5757
bold: BOLD,
5858
gray: GRAY,
59+
orange: ORANGE,
5960
}.freeze
6061

6162
class InvalidColorName < ArgumentError

lib/cli/ui/formatter.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class Formatter
2424
'magenta' => '35',
2525
'cyan' => '36',
2626
'gray' => '38;5;244',
27+
'orange' => '38;5;214',
2728
'white' => '97',
2829
'bold' => '1',
2930
'italic' => '3',

test/cli/ui/color_test.rb

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,30 @@ def test_colors
1515
assert_equal("\x1b[0m", Color::RESET.code)
1616
assert_equal("\x1b[1m", Color::BOLD.code)
1717
assert_equal("\x1b[97m", Color::WHITE.code)
18+
assert_equal("\x1b[38;5;244m", Color::GRAY.code)
19+
assert_equal("\x1b[38;5;214m", Color::ORANGE.code)
1820

1921
assert_equal('36', Color::CYAN.sgr)
2022
assert_equal(:bold, Color::BOLD.name)
2123

22-
assert_equal(Color::BLUE, Color.lookup(:blue))
23-
assert_equal(Color::RESET, Color.lookup(:reset))
24-
2524
assert_raises(Color::InvalidColorName) do
2625
Color.lookup(:foobar)
2726
end
2827
end
2928

29+
def test_all_colors_lookup
30+
Color.available.each do |color_name|
31+
# rubocop:disable Sorbet/ConstantsFromStrings
32+
color_constant = Color.const_get(color_name.to_s.upcase)
33+
# rubocop:enable Sorbet/ConstantsFromStrings
34+
lookup_result = Color.lookup(color_name)
35+
36+
assert_equal(color_constant, lookup_result, "Color lookup failed for #{color_name}")
37+
assert_equal(color_name, lookup_result.name, "Color name mismatch for #{color_name}")
38+
assert_instance_of(Color, lookup_result, "Lookup result is not a Color instance for #{color_name}")
39+
end
40+
end
41+
3042
def test_useful_exception
3143
e = begin
3244
Color.lookup(:foobar)

test/cli/ui/formatter_test.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,17 @@ def test_reset_after_glyph
7676
actual = CLI::UI::Formatter.new(input).format
7777
assert_equal(expected, actual)
7878
end
79+
80+
def test_formatter_with_all_colors
81+
CLI::UI::Color.available.each do |color_name|
82+
input = "test {{#{color_name}:this is #{color_name} text}}"
83+
color = CLI::UI::Color.lookup(color_name)
84+
expected = "\e[0mtest \e[0;#{color.sgr}mthis is #{color_name} text\e[0m"
85+
86+
actual = CLI::UI::Formatter.new(input).format
87+
assert_equal(expected, actual, "Color #{color_name} did not format correctly")
88+
end
89+
end
7990
end
8091
end
8192
end

test/cli/ui/glyph_test.rb

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,8 @@ def test_glyphs
1313
assert_equal("\x1b[31m✗\x1b[0m", Glyph::X.to_s)
1414
assert_equal("\x1b[97m🐛\x1b[0m", Glyph::BUG.to_s)
1515
assert_equal("\x1b[33m»\x1b[0m", Glyph::CHEVRON.to_s)
16-
17-
assert_equal(Glyph::STAR, Glyph.lookup('*'))
18-
assert_equal(Glyph::INFO, Glyph.lookup('i'))
19-
assert_equal(Glyph::QUESTION, Glyph.lookup('?'))
20-
assert_equal(Glyph::CHECK, Glyph.lookup('v'))
21-
assert_equal(Glyph::X, Glyph.lookup('x'))
22-
assert_equal(Glyph::BUG, Glyph.lookup('b'))
23-
assert_equal(Glyph::CHEVRON, Glyph.lookup('>'))
24-
25-
assert_raises(Glyph::InvalidGlyphHandle) do
26-
Glyph.lookup('$')
27-
end
16+
assert_equal("\x1b[38;5;214m⧖\x1b[0m", Glyph::HOURGLASS.to_s)
17+
assert_equal("\x1b[33m⚠️\x1b[0m", Glyph::WARNING.to_s)
2818
end
2919

3020
def test_plain_glyphs
@@ -40,18 +30,24 @@ def test_plain_glyphs
4030
assert_equal("\x1b[31mX\x1b[0m", Glyph::X.to_s)
4131
assert_equal("\x1b[97m!\x1b[0m", Glyph::BUG.to_s)
4232
assert_equal("\x1b[33m»\x1b[0m", Glyph::CHEVRON.to_s)
33+
assert_equal("\x1b[38;5;214mH\x1b[0m", Glyph::HOURGLASS.to_s)
34+
assert_equal("\x1b[33m!\x1b[0m", Glyph::WARNING.to_s)
35+
end
36+
end
4337

44-
assert_equal(Glyph::STAR, Glyph.lookup('*'))
45-
assert_equal(Glyph::INFO, Glyph.lookup('i'))
46-
assert_equal(Glyph::QUESTION, Glyph.lookup('?'))
47-
assert_equal(Glyph::CHECK, Glyph.lookup('v'))
48-
assert_equal(Glyph::X, Glyph.lookup('x'))
49-
assert_equal(Glyph::BUG, Glyph.lookup('b'))
50-
assert_equal(Glyph::CHEVRON, Glyph.lookup('>'))
38+
def test_glyph_lookup
39+
assert_equal(Glyph::STAR, Glyph.lookup('*'))
40+
assert_equal(Glyph::INFO, Glyph.lookup('i'))
41+
assert_equal(Glyph::QUESTION, Glyph.lookup('?'))
42+
assert_equal(Glyph::CHECK, Glyph.lookup('v'))
43+
assert_equal(Glyph::X, Glyph.lookup('x'))
44+
assert_equal(Glyph::BUG, Glyph.lookup('b'))
45+
assert_equal(Glyph::CHEVRON, Glyph.lookup('>'))
46+
assert_equal(Glyph::HOURGLASS, Glyph.lookup('H'))
47+
assert_equal(Glyph::WARNING, Glyph.lookup('!'))
5148

52-
assert_raises(Glyph::InvalidGlyphHandle) do
53-
Glyph.lookup('$')
54-
end
49+
assert_raises(Glyph::InvalidGlyphHandle) do
50+
Glyph.lookup('$')
5551
end
5652
end
5753

0 commit comments

Comments
 (0)