Adding upstream version 1.28.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
5e6d9cc7a9
commit
5bd6a68e8c
16 changed files with 611 additions and 404 deletions
|
@ -89,6 +89,9 @@ keyword_casing = auto
|
|||
# disabled pager on startup
|
||||
enable_pager = True
|
||||
|
||||
# Choose a specific pager
|
||||
pager = less
|
||||
|
||||
# Custom colors for the completion menu, toolbar, etc.
|
||||
[colors]
|
||||
completion-menu.completion.current = "bg:#ffffff #000000"
|
||||
|
|
|
@ -5,17 +5,17 @@ from prompt_toolkit.document import Document
|
|||
import mycli.packages.special.main as special
|
||||
|
||||
metadata = {
|
||||
'users': ['id', 'email', 'first_name', 'last_name'],
|
||||
'orders': ['id', 'ordered_date', 'status'],
|
||||
'select': ['id', 'insert', 'ABC'],
|
||||
'réveillé': ['id', 'insert', 'ABC']
|
||||
"users": ["id", "email", "first_name", "last_name"],
|
||||
"orders": ["id", "ordered_date", "status"],
|
||||
"select": ["id", "insert", "ABC"],
|
||||
"réveillé": ["id", "insert", "ABC"],
|
||||
}
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def completer():
|
||||
|
||||
import mycli.sqlcompleter as sqlcompleter
|
||||
|
||||
comp = sqlcompleter.SQLCompleter(smart_completion=True)
|
||||
|
||||
tables, columns = [], []
|
||||
|
@ -24,10 +24,10 @@ def completer():
|
|||
tables.append((table,))
|
||||
columns.extend([(table, col) for col in cols])
|
||||
|
||||
comp.set_dbname('test')
|
||||
comp.extend_schemata('test')
|
||||
comp.extend_relations(tables, kind='tables')
|
||||
comp.extend_columns(columns, kind='tables')
|
||||
comp.set_dbname("test")
|
||||
comp.extend_schemata("test")
|
||||
comp.extend_relations(tables, kind="tables")
|
||||
comp.extend_columns(columns, kind="tables")
|
||||
comp.extend_special_commands(special.COMMANDS)
|
||||
|
||||
return comp
|
||||
|
@ -36,59 +36,85 @@ def completer():
|
|||
@pytest.fixture
|
||||
def complete_event():
|
||||
from unittest.mock import Mock
|
||||
|
||||
return Mock()
|
||||
|
||||
|
||||
def test_special_name_completion(completer, complete_event):
|
||||
text = '\\d'
|
||||
position = len('\\d')
|
||||
text = "\\d"
|
||||
position = len("\\d")
|
||||
result = completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event)
|
||||
assert result == [Completion(text='\\dt', start_position=-2)]
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
assert result == [Completion(text="\\dt", start_position=-2)]
|
||||
|
||||
|
||||
def test_empty_string_completion(completer, complete_event):
|
||||
text = ''
|
||||
text = ""
|
||||
position = 0
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert list(map(Completion, completer.keywords +
|
||||
completer.special_commands)) == result
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert (
|
||||
list(map(Completion, completer.keywords + completer.special_commands)) == result
|
||||
)
|
||||
|
||||
|
||||
def test_select_keyword_completion(completer, complete_event):
|
||||
text = 'SEL'
|
||||
position = len('SEL')
|
||||
text = "SEL"
|
||||
position = len("SEL")
|
||||
result = completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event)
|
||||
assert list(result) == list([Completion(text='SELECT', start_position=-3)])
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
assert list(result) == list([Completion(text="SELECT", start_position=-3)])
|
||||
|
||||
|
||||
def test_select_star(completer, complete_event):
|
||||
text = "SELECT * "
|
||||
position = len(text)
|
||||
result = completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
assert list(result) == list(map(Completion, completer.keywords))
|
||||
|
||||
|
||||
def test_table_completion(completer, complete_event):
|
||||
text = 'SELECT * FROM '
|
||||
text = "SELECT * FROM "
|
||||
position = len(text)
|
||||
result = completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event)
|
||||
assert list(result) == list([
|
||||
Completion(text='users', start_position=0),
|
||||
Completion(text='orders', start_position=0),
|
||||
Completion(text='`select`', start_position=0),
|
||||
Completion(text='`réveillé`', start_position=0),
|
||||
])
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
assert list(result) == list(
|
||||
[
|
||||
Completion(text="users", start_position=0),
|
||||
Completion(text="orders", start_position=0),
|
||||
Completion(text="`select`", start_position=0),
|
||||
Completion(text="`réveillé`", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_function_name_completion(completer, complete_event):
|
||||
text = 'SELECT MA'
|
||||
position = len('SELECT MA')
|
||||
text = "SELECT MA"
|
||||
position = len("SELECT MA")
|
||||
result = completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event)
|
||||
assert list(result) == list([Completion(text='MAX', start_position=-2),
|
||||
Completion(text='MASTER', start_position=-2),
|
||||
])
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
assert list(result) == list(
|
||||
[
|
||||
Completion(text="MAX", start_position=-2),
|
||||
Completion(text="CHANGE MASTER TO", start_position=-2),
|
||||
Completion(text="CURRENT_TIMESTAMP", start_position=-2),
|
||||
Completion(text="DECIMAL", start_position=-2),
|
||||
Completion(text="FORMAT", start_position=-2),
|
||||
Completion(text="MASTER", start_position=-2),
|
||||
Completion(text="PRIMARY", start_position=-2),
|
||||
Completion(text="ROW_FORMAT", start_position=-2),
|
||||
Completion(text="SMALLINT", start_position=-2),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_column_names(completer, complete_event):
|
||||
|
@ -99,21 +125,25 @@ def test_suggested_column_names(completer, complete_event):
|
|||
:return:
|
||||
|
||||
"""
|
||||
text = 'SELECT from users'
|
||||
position = len('SELECT ')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='*', start_position=0),
|
||||
Completion(text='id', start_position=0),
|
||||
Completion(text='email', start_position=0),
|
||||
Completion(text='first_name', start_position=0),
|
||||
Completion(text='last_name', start_position=0),
|
||||
] +
|
||||
list(map(Completion, completer.functions)) +
|
||||
[Completion(text='users', start_position=0)] +
|
||||
list(map(Completion, completer.keywords)))
|
||||
text = "SELECT from users"
|
||||
position = len("SELECT ")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="*", start_position=0),
|
||||
Completion(text="id", start_position=0),
|
||||
Completion(text="email", start_position=0),
|
||||
Completion(text="first_name", start_position=0),
|
||||
Completion(text="last_name", start_position=0),
|
||||
]
|
||||
+ list(map(Completion, completer.functions))
|
||||
+ [Completion(text="users", start_position=0)]
|
||||
+ list(map(Completion, completer.keywords))
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_column_names_in_function(completer, complete_event):
|
||||
|
@ -125,17 +155,20 @@ def test_suggested_column_names_in_function(completer, complete_event):
|
|||
:return:
|
||||
|
||||
"""
|
||||
text = 'SELECT MAX( from users'
|
||||
position = len('SELECT MAX(')
|
||||
text = "SELECT MAX( from users"
|
||||
position = len("SELECT MAX(")
|
||||
result = completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event)
|
||||
assert list(result) == list([
|
||||
Completion(text='*', start_position=0),
|
||||
Completion(text='id', start_position=0),
|
||||
Completion(text='email', start_position=0),
|
||||
Completion(text='first_name', start_position=0),
|
||||
Completion(text='last_name', start_position=0)])
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
assert list(result) == list(
|
||||
[
|
||||
Completion(text="*", start_position=0),
|
||||
Completion(text="id", start_position=0),
|
||||
Completion(text="email", start_position=0),
|
||||
Completion(text="first_name", start_position=0),
|
||||
Completion(text="last_name", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_column_names_with_table_dot(completer, complete_event):
|
||||
|
@ -146,17 +179,22 @@ def test_suggested_column_names_with_table_dot(completer, complete_event):
|
|||
:return:
|
||||
|
||||
"""
|
||||
text = 'SELECT users. from users'
|
||||
position = len('SELECT users.')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='*', start_position=0),
|
||||
Completion(text='id', start_position=0),
|
||||
Completion(text='email', start_position=0),
|
||||
Completion(text='first_name', start_position=0),
|
||||
Completion(text='last_name', start_position=0)])
|
||||
text = "SELECT users. from users"
|
||||
position = len("SELECT users.")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="*", start_position=0),
|
||||
Completion(text="id", start_position=0),
|
||||
Completion(text="email", start_position=0),
|
||||
Completion(text="first_name", start_position=0),
|
||||
Completion(text="last_name", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_column_names_with_alias(completer, complete_event):
|
||||
|
@ -167,17 +205,22 @@ def test_suggested_column_names_with_alias(completer, complete_event):
|
|||
:return:
|
||||
|
||||
"""
|
||||
text = 'SELECT u. from users u'
|
||||
position = len('SELECT u.')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='*', start_position=0),
|
||||
Completion(text='id', start_position=0),
|
||||
Completion(text='email', start_position=0),
|
||||
Completion(text='first_name', start_position=0),
|
||||
Completion(text='last_name', start_position=0)])
|
||||
text = "SELECT u. from users u"
|
||||
position = len("SELECT u.")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="*", start_position=0),
|
||||
Completion(text="id", start_position=0),
|
||||
Completion(text="email", start_position=0),
|
||||
Completion(text="first_name", start_position=0),
|
||||
Completion(text="last_name", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_multiple_column_names(completer, complete_event):
|
||||
|
@ -189,20 +232,25 @@ def test_suggested_multiple_column_names(completer, complete_event):
|
|||
:return:
|
||||
|
||||
"""
|
||||
text = 'SELECT id, from users u'
|
||||
position = len('SELECT id, ')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='*', start_position=0),
|
||||
Completion(text='id', start_position=0),
|
||||
Completion(text='email', start_position=0),
|
||||
Completion(text='first_name', start_position=0),
|
||||
Completion(text='last_name', start_position=0)] +
|
||||
list(map(Completion, completer.functions)) +
|
||||
[Completion(text='u', start_position=0)] +
|
||||
list(map(Completion, completer.keywords)))
|
||||
text = "SELECT id, from users u"
|
||||
position = len("SELECT id, ")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="*", start_position=0),
|
||||
Completion(text="id", start_position=0),
|
||||
Completion(text="email", start_position=0),
|
||||
Completion(text="first_name", start_position=0),
|
||||
Completion(text="last_name", start_position=0),
|
||||
]
|
||||
+ list(map(Completion, completer.functions))
|
||||
+ [Completion(text="u", start_position=0)]
|
||||
+ list(map(Completion, completer.keywords))
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_multiple_column_names_with_alias(completer, complete_event):
|
||||
|
@ -214,17 +262,22 @@ def test_suggested_multiple_column_names_with_alias(completer, complete_event):
|
|||
:return:
|
||||
|
||||
"""
|
||||
text = 'SELECT u.id, u. from users u'
|
||||
position = len('SELECT u.id, u.')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='*', start_position=0),
|
||||
Completion(text='id', start_position=0),
|
||||
Completion(text='email', start_position=0),
|
||||
Completion(text='first_name', start_position=0),
|
||||
Completion(text='last_name', start_position=0)])
|
||||
text = "SELECT u.id, u. from users u"
|
||||
position = len("SELECT u.id, u.")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="*", start_position=0),
|
||||
Completion(text="id", start_position=0),
|
||||
Completion(text="email", start_position=0),
|
||||
Completion(text="first_name", start_position=0),
|
||||
Completion(text="last_name", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_multiple_column_names_with_dot(completer, complete_event):
|
||||
|
@ -236,154 +289,185 @@ def test_suggested_multiple_column_names_with_dot(completer, complete_event):
|
|||
:return:
|
||||
|
||||
"""
|
||||
text = 'SELECT users.id, users. from users u'
|
||||
position = len('SELECT users.id, users.')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='*', start_position=0),
|
||||
Completion(text='id', start_position=0),
|
||||
Completion(text='email', start_position=0),
|
||||
Completion(text='first_name', start_position=0),
|
||||
Completion(text='last_name', start_position=0)])
|
||||
text = "SELECT users.id, users. from users u"
|
||||
position = len("SELECT users.id, users.")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="*", start_position=0),
|
||||
Completion(text="id", start_position=0),
|
||||
Completion(text="email", start_position=0),
|
||||
Completion(text="first_name", start_position=0),
|
||||
Completion(text="last_name", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_aliases_after_on(completer, complete_event):
|
||||
text = 'SELECT u.name, o.id FROM users u JOIN orders o ON '
|
||||
position = len('SELECT u.name, o.id FROM users u JOIN orders o ON ')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='u', start_position=0),
|
||||
Completion(text='o', start_position=0),
|
||||
])
|
||||
text = "SELECT u.name, o.id FROM users u JOIN orders o ON "
|
||||
position = len("SELECT u.name, o.id FROM users u JOIN orders o ON ")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="u", start_position=0),
|
||||
Completion(text="o", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_aliases_after_on_right_side(completer, complete_event):
|
||||
text = 'SELECT u.name, o.id FROM users u JOIN orders o ON o.user_id = '
|
||||
position = len(
|
||||
'SELECT u.name, o.id FROM users u JOIN orders o ON o.user_id = ')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='u', start_position=0),
|
||||
Completion(text='o', start_position=0),
|
||||
])
|
||||
text = "SELECT u.name, o.id FROM users u JOIN orders o ON o.user_id = "
|
||||
position = len("SELECT u.name, o.id FROM users u JOIN orders o ON o.user_id = ")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="u", start_position=0),
|
||||
Completion(text="o", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_tables_after_on(completer, complete_event):
|
||||
text = 'SELECT users.name, orders.id FROM users JOIN orders ON '
|
||||
position = len('SELECT users.name, orders.id FROM users JOIN orders ON ')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='users', start_position=0),
|
||||
Completion(text='orders', start_position=0),
|
||||
])
|
||||
text = "SELECT users.name, orders.id FROM users JOIN orders ON "
|
||||
position = len("SELECT users.name, orders.id FROM users JOIN orders ON ")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="users", start_position=0),
|
||||
Completion(text="orders", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_suggested_tables_after_on_right_side(completer, complete_event):
|
||||
text = 'SELECT users.name, orders.id FROM users JOIN orders ON orders.user_id = '
|
||||
text = "SELECT users.name, orders.id FROM users JOIN orders ON orders.user_id = "
|
||||
position = len(
|
||||
'SELECT users.name, orders.id FROM users JOIN orders ON orders.user_id = ')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='users', start_position=0),
|
||||
Completion(text='orders', start_position=0),
|
||||
])
|
||||
"SELECT users.name, orders.id FROM users JOIN orders ON orders.user_id = "
|
||||
)
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="users", start_position=0),
|
||||
Completion(text="orders", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_table_names_after_from(completer, complete_event):
|
||||
text = 'SELECT * FROM '
|
||||
position = len('SELECT * FROM ')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='users', start_position=0),
|
||||
Completion(text='orders', start_position=0),
|
||||
Completion(text='`select`', start_position=0),
|
||||
Completion(text='`réveillé`', start_position=0),
|
||||
])
|
||||
text = "SELECT * FROM "
|
||||
position = len("SELECT * FROM ")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="users", start_position=0),
|
||||
Completion(text="orders", start_position=0),
|
||||
Completion(text="`select`", start_position=0),
|
||||
Completion(text="`réveillé`", start_position=0),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_auto_escaped_col_names(completer, complete_event):
|
||||
text = 'SELECT from `select`'
|
||||
position = len('SELECT ')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
text = "SELECT from `select`"
|
||||
position = len("SELECT ")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == [
|
||||
Completion(text='*', start_position=0),
|
||||
Completion(text='id', start_position=0),
|
||||
Completion(text='`insert`', start_position=0),
|
||||
Completion(text='`ABC`', start_position=0),
|
||||
] + \
|
||||
list(map(Completion, completer.functions)) + \
|
||||
[Completion(text='select', start_position=0)] + \
|
||||
list(map(Completion, completer.keywords))
|
||||
Completion(text="*", start_position=0),
|
||||
Completion(text="id", start_position=0),
|
||||
Completion(text="`insert`", start_position=0),
|
||||
Completion(text="`ABC`", start_position=0),
|
||||
] + list(map(Completion, completer.functions)) + [
|
||||
Completion(text="select", start_position=0)
|
||||
] + list(map(Completion, completer.keywords))
|
||||
|
||||
|
||||
def test_un_escaped_table_names(completer, complete_event):
|
||||
text = 'SELECT from réveillé'
|
||||
position = len('SELECT ')
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
assert result == list([
|
||||
Completion(text='*', start_position=0),
|
||||
Completion(text='id', start_position=0),
|
||||
Completion(text='`insert`', start_position=0),
|
||||
Completion(text='`ABC`', start_position=0),
|
||||
] +
|
||||
list(map(Completion, completer.functions)) +
|
||||
[Completion(text='réveillé', start_position=0)] +
|
||||
list(map(Completion, completer.keywords)))
|
||||
text = "SELECT from réveillé"
|
||||
position = len("SELECT ")
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
assert result == list(
|
||||
[
|
||||
Completion(text="*", start_position=0),
|
||||
Completion(text="id", start_position=0),
|
||||
Completion(text="`insert`", start_position=0),
|
||||
Completion(text="`ABC`", start_position=0),
|
||||
]
|
||||
+ list(map(Completion, completer.functions))
|
||||
+ [Completion(text="réveillé", start_position=0)]
|
||||
+ list(map(Completion, completer.keywords))
|
||||
)
|
||||
|
||||
|
||||
def dummy_list_path(dir_name):
|
||||
dirs = {
|
||||
'/': [
|
||||
'dir1',
|
||||
'file1.sql',
|
||||
'file2.sql',
|
||||
"/": [
|
||||
"dir1",
|
||||
"file1.sql",
|
||||
"file2.sql",
|
||||
],
|
||||
'/dir1': [
|
||||
'subdir1',
|
||||
'subfile1.sql',
|
||||
'subfile2.sql',
|
||||
"/dir1": [
|
||||
"subdir1",
|
||||
"subfile1.sql",
|
||||
"subfile2.sql",
|
||||
],
|
||||
'/dir1/subdir1': [
|
||||
'lastfile.sql',
|
||||
"/dir1/subdir1": [
|
||||
"lastfile.sql",
|
||||
],
|
||||
}
|
||||
return dirs.get(dir_name, [])
|
||||
|
||||
|
||||
@patch('mycli.packages.filepaths.list_path', new=dummy_list_path)
|
||||
@pytest.mark.parametrize('text,expected', [
|
||||
# ('source ', [('~', 0),
|
||||
# ('/', 0),
|
||||
# ('.', 0),
|
||||
# ('..', 0)]),
|
||||
('source /', [('dir1', 0),
|
||||
('file1.sql', 0),
|
||||
('file2.sql', 0)]),
|
||||
('source /dir1/', [('subdir1', 0),
|
||||
('subfile1.sql', 0),
|
||||
('subfile2.sql', 0)]),
|
||||
('source /dir1/subdir1/', [('lastfile.sql', 0)]),
|
||||
])
|
||||
@patch("mycli.packages.filepaths.list_path", new=dummy_list_path)
|
||||
@pytest.mark.parametrize(
|
||||
"text,expected",
|
||||
[
|
||||
# ('source ', [('~', 0),
|
||||
# ('/', 0),
|
||||
# ('.', 0),
|
||||
# ('..', 0)]),
|
||||
("source /", [("dir1", 0), ("file1.sql", 0), ("file2.sql", 0)]),
|
||||
("source /dir1/", [("subdir1", 0), ("subfile1.sql", 0), ("subfile2.sql", 0)]),
|
||||
("source /dir1/subdir1/", [("lastfile.sql", 0)]),
|
||||
],
|
||||
)
|
||||
def test_file_name_completion(completer, complete_event, text, expected):
|
||||
position = len(text)
|
||||
result = list(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
result = list(
|
||||
completer.get_completions(
|
||||
Document(text=text, cursor_position=position), complete_event
|
||||
)
|
||||
)
|
||||
expected = list((Completion(txt, pos) for txt, pos in expected))
|
||||
assert result == expected
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue