File: test_shortcuts.py

package info (click to toggle)
ipython 8.5.0-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 11,184 kB
  • sloc: python: 36,444; sh: 407; makefile: 243
file content (40 lines) | stat: -rw-r--r-- 1,302 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import pytest
from IPython.terminal.shortcuts import _apply_autosuggest

from unittest.mock import Mock


def make_event(text, cursor, suggestion):
    event = Mock()
    event.current_buffer = Mock()
    event.current_buffer.suggestion = Mock()
    event.current_buffer.cursor_position = cursor
    event.current_buffer.suggestion.text = suggestion
    event.current_buffer.document = Mock()
    event.current_buffer.document.get_end_of_line_position = Mock(return_value=0)
    event.current_buffer.document.text = text
    event.current_buffer.document.cursor_position = cursor
    return event


@pytest.mark.parametrize(
    "text, cursor, suggestion, called",
    [
        ("123456", 6, "123456789", True),
        ("123456", 3, "123456789", False),
        ("123456   \n789", 6, "123456789", True),
    ],
)
def test_autosuggest_at_EOL(text, cursor, suggestion, called):
    """
    test that autosuggest is only applied at end of line.
    """

    event = make_event(text, cursor, suggestion)
    event.current_buffer.insert_text = Mock()
    _apply_autosuggest(event)
    if called:
        event.current_buffer.insert_text.assert_called()
    else:
        event.current_buffer.insert_text.assert_not_called()
        # event.current_buffer.document.get_end_of_line_position.assert_called()