Skip to content

Commit 3bf3bf6

Browse files
committed
Always set the canonical version allow_ansi' string value
1 parent 1ca3ce9 commit 3bf3bf6

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

cmd2/cmd2.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,8 +563,9 @@ def allow_ansi(self) -> str:
563563

564564
@allow_ansi.setter
565565
def allow_ansi(self, new_val: str) -> None:
566-
"""Read-only property needed to support do_set when it sets allow_ansi"""
567-
if new_val.lower() not in (ansi.ANSI_TERMINAL.lower(), ansi.ANSI_ALWAYS.lower(), ansi.ANSI_NEVER.lower()):
566+
"""Setter property needed to support do_set when it updates allow_ansi"""
567+
new_val = new_val.capitalize()
568+
if new_val not in (ansi.ANSI_TERMINAL, ansi.ANSI_ALWAYS, ansi.ANSI_NEVER):
568569
self.perror('Invalid value: {} (valid values: {}, {}, {})'.format(new_val, ansi.ANSI_TERMINAL,
569570
ansi.ANSI_ALWAYS, ansi.ANSI_NEVER))
570571
else:

tests/test_cmd2.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -181,18 +181,25 @@ def test_set_quiet(base_app):
181181
out, err = run_cmd(base_app, 'set quiet')
182182
assert out == ['quiet: True']
183183

184-
@pytest.mark.parametrize('new_val, is_valid', [
185-
(ansi.ANSI_NEVER, False),
186-
(ansi.ANSI_TERMINAL, False),
187-
(ansi.ANSI_ALWAYS, False),
188-
('neVeR', False),
189-
('TeRMInal', False),
190-
('AlWaYs', False),
191-
('invalid', True),
184+
@pytest.mark.parametrize('new_val, is_valid, expected', [
185+
(ansi.ANSI_NEVER, False, ansi.ANSI_NEVER),
186+
('neVeR', False, ansi.ANSI_NEVER),
187+
(ansi.ANSI_TERMINAL, False, ansi.ANSI_TERMINAL),
188+
('TeRMInal', False, ansi.ANSI_TERMINAL),
189+
(ansi.ANSI_ALWAYS, False, ansi.ANSI_ALWAYS),
190+
('AlWaYs', False, ansi.ANSI_ALWAYS),
191+
('invalid', True, ansi.ANSI_TERMINAL),
192192
])
193-
def test_set_allow_ansi(base_app, new_val, is_valid):
193+
def test_set_allow_ansi(base_app, new_val, is_valid, expected):
194+
# Initialize allow_ansi for this test
195+
ansi.allow_ansi = ansi.ANSI_TERMINAL
196+
197+
# Use the set command to alter it
194198
out, err = run_cmd(base_app, 'set allow_ansi {}'.format(new_val))
199+
200+
# Verify the results
195201
assert bool(err) == is_valid
202+
assert ansi.allow_ansi == expected
196203

197204
# Reload ansi module to reset allow_ansi to its default since it's an
198205
# application-wide setting that can affect other unit tests.

0 commit comments

Comments
 (0)