test_termcolors.py 6.3 KB
Newer Older
1 2
import unittest

3 4 5
from django.utils.termcolors import (parse_color_setting, PALETTES,
    DEFAULT_PALETTE, LIGHT_PALETTE, DARK_PALETTE, NOCOLOR_PALETTE, colorize)

6

7
class TermColorTests(unittest.TestCase):
8 9

    def test_empty_string(self):
10
        self.assertEqual(parse_color_setting(''), PALETTES[DEFAULT_PALETTE])
11 12

    def test_simple_palette(self):
13 14 15
        self.assertEqual(parse_color_setting('light'), PALETTES[LIGHT_PALETTE])
        self.assertEqual(parse_color_setting('dark'), PALETTES[DARK_PALETTE])
        self.assertEqual(parse_color_setting('nocolor'), None)
16 17

    def test_fg(self):
18
        self.assertEqual(parse_color_setting('error=green'),
Loic Bistuer's avatar
Loic Bistuer committed
19
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}))
20 21

    def test_fg_bg(self):
22
        self.assertEqual(parse_color_setting('error=green/blue'),
Loic Bistuer's avatar
Loic Bistuer committed
23
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'bg': 'blue'}))
24 25

    def test_fg_opts(self):
26
        self.assertEqual(parse_color_setting('error=green,blink'),
Loic Bistuer's avatar
Loic Bistuer committed
27 28
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'opts': ('blink',)}))

29
        self.assertEqual(parse_color_setting('error=green,bold,blink'),
Loic Bistuer's avatar
Loic Bistuer committed
30
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'opts': ('blink', 'bold')}))
31 32

    def test_fg_bg_opts(self):
33
        self.assertEqual(parse_color_setting('error=green/blue,blink'),
Loic Bistuer's avatar
Loic Bistuer committed
34 35
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'bg': 'blue', 'opts': ('blink',)}))

36
        self.assertEqual(parse_color_setting('error=green/blue,bold,blink'),
Loic Bistuer's avatar
Loic Bistuer committed
37
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'bg': 'blue', 'opts': ('blink', 'bold')}))
38 39

    def test_override_palette(self):
40
        self.assertEqual(parse_color_setting('light;error=green'),
Loic Bistuer's avatar
Loic Bistuer committed
41
            dict(PALETTES[LIGHT_PALETTE], ERROR={'fg': 'green'}))
42 43

    def test_override_nocolor(self):
44
        self.assertEqual(parse_color_setting('nocolor;error=green'),
Loic Bistuer's avatar
Loic Bistuer committed
45
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}))
46 47

    def test_reverse_override(self):
48
        self.assertEqual(parse_color_setting('error=green;light'), PALETTES[LIGHT_PALETTE])
49 50

    def test_multiple_roles(self):
51
        self.assertEqual(parse_color_setting('error=green;sql_field=blue'),
Loic Bistuer's avatar
Loic Bistuer committed
52
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}, SQL_FIELD={'fg': 'blue'}))
53 54

    def test_override_with_multiple_roles(self):
55
        self.assertEqual(parse_color_setting('light;error=green;sql_field=blue'),
Loic Bistuer's avatar
Loic Bistuer committed
56
            dict(PALETTES[LIGHT_PALETTE], ERROR={'fg': 'green'}, SQL_FIELD={'fg': 'blue'}))
57 58

    def test_empty_definition(self):
59 60 61
        self.assertEqual(parse_color_setting(';'), None)
        self.assertEqual(parse_color_setting('light;'), PALETTES[LIGHT_PALETTE])
        self.assertEqual(parse_color_setting(';;;'), None)
62 63

    def test_empty_options(self):
64
        self.assertEqual(parse_color_setting('error=green,'),
Loic Bistuer's avatar
Loic Bistuer committed
65 66
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}))

67
        self.assertEqual(parse_color_setting('error=green,,,'),
Loic Bistuer's avatar
Loic Bistuer committed
68 69
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}))

70
        self.assertEqual(parse_color_setting('error=green,,blink,,'),
Loic Bistuer's avatar
Loic Bistuer committed
71
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'opts': ('blink',)}))
72 73

    def test_bad_palette(self):
74
        self.assertEqual(parse_color_setting('unknown'), None)
75 76

    def test_bad_role(self):
77 78 79
        self.assertEqual(parse_color_setting('unknown='), None)
        self.assertEqual(parse_color_setting('unknown=green'), None)
        self.assertEqual(parse_color_setting('unknown=green;sql_field=blue'),
Loic Bistuer's avatar
Loic Bistuer committed
80
            dict(PALETTES[NOCOLOR_PALETTE], SQL_FIELD={'fg': 'blue'}))
81 82

    def test_bad_color(self):
83 84
        self.assertEqual(parse_color_setting('error='), None)
        self.assertEqual(parse_color_setting('error=;sql_field=blue'),
Loic Bistuer's avatar
Loic Bistuer committed
85 86
            dict(PALETTES[NOCOLOR_PALETTE], SQL_FIELD={'fg': 'blue'}))

87 88
        self.assertEqual(parse_color_setting('error=unknown'), None)
        self.assertEqual(parse_color_setting('error=unknown;sql_field=blue'),
Loic Bistuer's avatar
Loic Bistuer committed
89 90
            dict(PALETTES[NOCOLOR_PALETTE], SQL_FIELD={'fg': 'blue'}))

91
        self.assertEqual(parse_color_setting('error=green/unknown'),
Loic Bistuer's avatar
Loic Bistuer committed
92 93
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}))

94
        self.assertEqual(parse_color_setting('error=green/blue/something'),
Loic Bistuer's avatar
Loic Bistuer committed
95 96
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'bg': 'blue'}))

97
        self.assertEqual(parse_color_setting('error=green/blue/something,blink'),
Loic Bistuer's avatar
Loic Bistuer committed
98
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'bg': 'blue', 'opts': ('blink',)}))
99 100

    def test_bad_option(self):
101
        self.assertEqual(parse_color_setting('error=green,unknown'),
Loic Bistuer's avatar
Loic Bistuer committed
102 103
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}))

104
        self.assertEqual(parse_color_setting('error=green,unknown,blink'),
Loic Bistuer's avatar
Loic Bistuer committed
105
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'opts': ('blink',)}))
106 107

    def test_role_case(self):
108
        self.assertEqual(parse_color_setting('ERROR=green'),
Loic Bistuer's avatar
Loic Bistuer committed
109 110
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}))

111
        self.assertEqual(parse_color_setting('eRrOr=green'),
Loic Bistuer's avatar
Loic Bistuer committed
112
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}))
113 114

    def test_color_case(self):
115
        self.assertEqual(parse_color_setting('error=GREEN'),
Loic Bistuer's avatar
Loic Bistuer committed
116 117
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}))

118
        self.assertEqual(parse_color_setting('error=GREEN/BLUE'),
Loic Bistuer's avatar
Loic Bistuer committed
119
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'bg': 'blue'}))
120

121
        self.assertEqual(parse_color_setting('error=gReEn'),
Loic Bistuer's avatar
Loic Bistuer committed
122 123
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green'}))

124
        self.assertEqual(parse_color_setting('error=gReEn/bLuE'),
Loic Bistuer's avatar
Loic Bistuer committed
125
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'bg': 'blue'}))
126 127

    def test_opts_case(self):
128
        self.assertEqual(parse_color_setting('error=green,BLINK'),
Loic Bistuer's avatar
Loic Bistuer committed
129
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'opts': ('blink',)}))
130

131
        self.assertEqual(parse_color_setting('error=green,bLiNk'),
Loic Bistuer's avatar
Loic Bistuer committed
132
            dict(PALETTES[NOCOLOR_PALETTE], ERROR={'fg': 'green', 'opts': ('blink',)}))
133 134 135 136 137 138 139

    def test_colorize_empty_text(self):
        self.assertEqual(colorize(text=None), '\x1b[m\x1b[0m')
        self.assertEqual(colorize(text=''), '\x1b[m\x1b[0m')

        self.assertEqual(colorize(text=None, opts=('noreset')), '\x1b[m')
        self.assertEqual(colorize(text='', opts=('noreset')), '\x1b[m')