forked from yousseb/meld
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_chunk_actions.py
More file actions
58 lines (46 loc) · 1.98 KB
/
Copy pathtest_chunk_actions.py
File metadata and controls
58 lines (46 loc) · 1.98 KB
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from unittest import mock
import pytest
from gi.repository import GtkSource
@pytest.mark.parametrize("text, newline, expected_text", [
# For the following tests, newlines and text match
# Basic CRLF tests
("ree\r\neee", GtkSource.NewlineType.CR_LF, 'ree'),
("ree\r\neee\r\n", GtkSource.NewlineType.CR_LF, 'ree\r\neee'),
# Basic CR tests
("ree\neee", GtkSource.NewlineType.CR, 'ree'),
("ree\neee\n", GtkSource.NewlineType.CR, 'ree\neee'),
# Basic LF tests
("ree\reee", GtkSource.NewlineType.LF, 'ree'),
("ree\reee\r", GtkSource.NewlineType.LF, 'ree\reee'),
# Mismatched newline and text
("ree\r\neee", GtkSource.NewlineType.CR, 'ree'),
# Mismatched newline types within text
("ree\r\neee\n", GtkSource.NewlineType.CR_LF, 'ree\r\neee'),
("ree\r\neee\nqqq", GtkSource.NewlineType.CR_LF, 'ree\r\neee'),
("ree\r\neee\nqqq\r\n", GtkSource.NewlineType.CR_LF, 'ree\r\neee\nqqq'),
])
def test_delete_last_line_crlf(text, newline, expected_text):
import meld.meldbuffer
from meld.filediff import FileDiff
from meld.matchers.myers import DiffChunk
filediff = mock.Mock(FileDiff)
with mock.patch('meld.meldbuffer.bind_settings', mock.DEFAULT):
meldbuffer = meld.meldbuffer.MeldBuffer()
meldbuffer.set_text(text)
def make_last_line_chunk(buf):
end = buf.get_line_count()
last = end - 1
return DiffChunk('delete', last, end, last, end)
start, end = meldbuffer.get_bounds()
buf_text = meldbuffer.get_text(start, end, False)
print(repr(buf_text))
with mock.patch.object(
meldbuffer.data.sourcefile,
'get_newline_type', return_value=newline):
filediff.textbuffer = [meldbuffer]
filediff.textview = [mock.Mock()]
FileDiff.delete_chunk(filediff, 0, make_last_line_chunk(meldbuffer))
start, end = meldbuffer.get_bounds()
buf_text = meldbuffer.get_text(start, end, False)
print(repr(buf_text))
assert buf_text == expected_text