Skip to content

Commit a1576a0

Browse files
committed
Improve tests
1 parent 9e9d9d8 commit a1576a0

1 file changed

Lines changed: 23 additions & 23 deletions

File tree

Lib/test/test_pyrepl/test_pyrepl.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@
3535
multiline_input,
3636
code_to_events,
3737
)
38+
from _colorize import ANSIColors, get_theme
3839
from _pyrepl.console import Event
3940
from _pyrepl.completing_reader import stripcolor
4041
from _pyrepl._module_completer import (
4142
ImportParser,
4243
ModuleCompleter,
4344
HARDCODED_SUBMODULES,
4445
)
45-
from _pyrepl.fancycompleter import Completer as FancyCompleter
46+
from _pyrepl.fancycompleter import Completer as FancyCompleter, colorize_matches
4647
import _pyrepl.readline as pyrepl_readline
4748
from _pyrepl.readline import (
4849
ReadlineAlikeReader,
@@ -1642,38 +1643,37 @@ def test_suggestions_and_messages(self) -> None:
16421643
self.assertSetEqual(new_imports, expected_imports)
16431644

16441645
def test_colorize_import_completions(self) -> None:
1645-
from _colorize import get_theme
1646-
from _pyrepl.fancycompleter import colorize_matches
1647-
from _pyrepl.completing_reader import stripcolor
1648-
16491646
theme = get_theme()
1647+
type_color = theme.fancycompleter.type
1648+
module_color = theme.fancycompleter.module
1649+
R = ANSIColors.RESET
1650+
16501651
colorize = lambda names, values: colorize_matches(names, values, theme)
16511652
config = ReadlineConfig(colorize_completions=colorize)
1652-
16531653
reader = ReadlineAlikeReader(
16541654
console=FakeConsole(events=[]),
16551655
config=config,
16561656
)
16571657

1658-
# Multiple completions should be colorized (contain ANSI codes)
1659-
reader.buffer = list("from collections import d")
1658+
# "from collections import de" -> defaultdict (type) and deque (type)
1659+
reader.buffer = list("from collections import de")
16601660
reader.pos = len(reader.buffer)
1661-
result = reader.get_module_completions()
1662-
self.assertIsNotNone(result)
1663-
names, action = result
1664-
self.assertTrue(len(names) > 1)
1665-
# Colorized names contain ANSI escape sequences
1666-
self.assertTrue(any(name != stripcolor(name) for name in names
1667-
if name.strip()))
1668-
1669-
# Single completion should NOT be colorized
1670-
reader.buffer = list("from collections import Order")
1661+
names, action = reader.get_module_completions()
1662+
self.assertEqual(names, [
1663+
f"{type_color}defaultdict{R}",
1664+
f"{type_color}deque{R}",
1665+
])
1666+
self.assertIsNone(action)
1667+
1668+
# "from importlib.m" has submodule completions colored as modules
1669+
reader.buffer = list("from importlib.m")
16711670
reader.pos = len(reader.buffer)
1672-
result = reader.get_module_completions()
1673-
self.assertIsNotNone(result)
1674-
names, action = result
1675-
self.assertEqual(len(names), 1)
1676-
self.assertEqual(names[0], stripcolor(names[0]))
1671+
names, action = reader.get_module_completions()
1672+
self.assertEqual(names, [
1673+
f"{module_color}importlib.machinery{R}",
1674+
f"{module_color}importlib.metadata{R}",
1675+
])
1676+
self.assertIsNone(action)
16771677

16781678

16791679
# Audit hook used to check for stdlib modules import side-effects

0 commit comments

Comments
 (0)