-
Notifications
You must be signed in to change notification settings - Fork 819
Expand file tree
/
Copy pathtest_history.py
More file actions
135 lines (93 loc) · 4 KB
/
Copy pathtest_history.py
File metadata and controls
135 lines (93 loc) · 4 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
from __future__ import annotations
from asyncio import run
from prompt_toolkit.history import (
BoundedFileHistory,
FileHistory,
InMemoryHistory,
ThreadedHistory,
)
def _call_history_load(history):
"""
Helper: Call the history "load" method and return the result as a list of strings.
"""
result = []
async def call_load():
async for item in history.load():
result.append(item)
run(call_load())
return result
def test_in_memory_history():
history = InMemoryHistory()
history.append_string("hello")
history.append_string("world")
# Newest should yield first.
assert _call_history_load(history) == ["world", "hello"]
# Test another call.
assert _call_history_load(history) == ["world", "hello"]
history.append_string("test3")
assert _call_history_load(history) == ["test3", "world", "hello"]
# Passing history as a parameter.
history2 = InMemoryHistory(["abc", "def"])
assert _call_history_load(history2) == ["def", "abc"]
def test_file_history(tmpdir):
histfile = tmpdir.join("history")
history = FileHistory(histfile)
history.append_string("hello")
history.append_string("world")
# Newest should yield first.
assert _call_history_load(history) == ["world", "hello"]
# Test another call.
assert _call_history_load(history) == ["world", "hello"]
history.append_string("test3")
assert _call_history_load(history) == ["test3", "world", "hello"]
# Create another history instance pointing to the same file.
history2 = FileHistory(histfile)
assert _call_history_load(history2) == ["test3", "world", "hello"]
def test_bounded_file_history(tmpdir):
histfile = tmpdir.join("history")
history = BoundedFileHistory(histfile, bound=4)
history.append_string("hello")
history.append_string("world")
# Newest should yield first.
assert _call_history_load(history) == ["world", "hello"]
# Test another call.
assert _call_history_load(history) == ["world", "hello"]
history.append_string("test3")
assert _call_history_load(history) == ["test3", "world", "hello"]
history.append_string("test4")
assert _call_history_load(history) == ["test4", "test3", "world", "hello"]
history.append_string("test5")
# In-memory history still can contain more files.
assert _call_history_load(history) == ["test5", "test4", "test3", "world", "hello"]
# The newly loaded history will now only get four files.
new_history = BoundedFileHistory(histfile, bound=4)
assert _call_history_load(new_history) == ["test5", "test4", "test3", "world"]
def test_threaded_file_history(tmpdir):
histfile = tmpdir.join("history")
history = ThreadedHistory(FileHistory(histfile))
history.append_string("hello")
history.append_string("world")
# Newest should yield first.
assert _call_history_load(history) == ["world", "hello"]
# Test another call.
assert _call_history_load(history) == ["world", "hello"]
history.append_string("test3")
assert _call_history_load(history) == ["test3", "world", "hello"]
# Create another history instance pointing to the same file.
history2 = ThreadedHistory(FileHistory(histfile))
assert _call_history_load(history2) == ["test3", "world", "hello"]
def test_threaded_in_memory_history():
# Threaded in memory history is not useful. But testing it anyway, just to
# see whether everything plays nicely together.
history = ThreadedHistory(InMemoryHistory())
history.append_string("hello")
history.append_string("world")
# Newest should yield first.
assert _call_history_load(history) == ["world", "hello"]
# Test another call.
assert _call_history_load(history) == ["world", "hello"]
history.append_string("test3")
assert _call_history_load(history) == ["test3", "world", "hello"]
# Passing history as a parameter.
history2 = ThreadedHistory(InMemoryHistory(["abc", "def"]))
assert _call_history_load(history2) == ["def", "abc"]