mirror of https://github.com/dbcli/pgcli
Fix special commands (#973)
* Add tests for special commands completion.
This commit is contained in:
parent
ca2d96825b
commit
3b9041fe36
|
@ -1,7 +1,10 @@
|
|||
Upcoming:
|
||||
=========
|
||||
|
||||
TODO
|
||||
Internal:
|
||||
---------
|
||||
|
||||
* Added tests for special command completion. (Thanks: `Amjith Ramanujam`_)
|
||||
|
||||
2.0.1:
|
||||
======
|
||||
|
|
|
@ -6,6 +6,7 @@ from pgcli.packages.parseutils.meta import FunctionMetadata, ForeignKey
|
|||
from prompt_toolkit.completion import Completion
|
||||
from prompt_toolkit.document import Document
|
||||
from mock import Mock
|
||||
from six import iteritems
|
||||
import pytest
|
||||
|
||||
parametrize = pytest.mark.parametrize
|
||||
|
@ -78,6 +79,9 @@ class MetaData(object):
|
|||
def keywords(self, pos=0):
|
||||
return [keyword(kw, pos) for kw in self.completer.keywords_tree.keys()]
|
||||
|
||||
def specials(self, pos=0):
|
||||
return [Completion(text=k, start_position=pos, display_meta=v.description) for k, v in iteritems(self.completer.pgspecial.commands)]
|
||||
|
||||
def columns(self, tbl, parent='public', typ='tables', pos=0):
|
||||
if typ == 'functions':
|
||||
fun = [x for x in self.metadata[typ][parent] if x[0] == tbl][0]
|
||||
|
@ -200,7 +204,9 @@ class MetaData(object):
|
|||
def get_completer(self, settings=None, casing=None):
|
||||
metadata = self.metadata
|
||||
from pgcli.pgcompleter import PGCompleter
|
||||
comp = PGCompleter(smart_completion=True, settings=settings)
|
||||
from pgspecial import PGSpecial
|
||||
comp = PGCompleter(smart_completion=True,
|
||||
settings=settings, pgspecial=PGSpecial())
|
||||
|
||||
schemata, tables, tbl_cols, views, view_cols = [], [], [], [], []
|
||||
|
||||
|
|
|
@ -78,3 +78,13 @@ def test_alter_well_known_keywords_completion(completer, complete_event):
|
|||
Completion(text="SYSTEM", display_meta='keyword'),
|
||||
])
|
||||
assert Completion(text="CREATE", display_meta="keyword") not in result
|
||||
|
||||
|
||||
def test_special_name_completion(completer, complete_event):
|
||||
text = '\\'
|
||||
position = len('\\')
|
||||
result = set(completer.get_completions(
|
||||
Document(text=text, cursor_position=position),
|
||||
complete_event))
|
||||
# Special commands will NOT be suggested during naive completion mode.
|
||||
assert result == set()
|
||||
|
|
|
@ -99,7 +99,7 @@ def test_drop_alter_function(completer, action):
|
|||
@parametrize('completer', completers())
|
||||
def test_empty_string_completion(completer):
|
||||
result = result_set(completer, '')
|
||||
assert set(testdata.keywords()) == result
|
||||
assert set(testdata.keywords() + testdata.specials()) == result
|
||||
|
||||
|
||||
@parametrize('completer', completers())
|
||||
|
@ -929,3 +929,10 @@ def test_set_schema(completer):
|
|||
result = result_set(completer, text)
|
||||
expected = set([schema(u"'public'")])
|
||||
assert result == expected
|
||||
|
||||
|
||||
@parametrize('completer', completers())
|
||||
def test_special_name_completion(completer):
|
||||
result = result_set(completer, '\\t')
|
||||
assert result == set([Completion(
|
||||
text='\\timing', start_position=-2, display_meta='Toggle timing of commands.')])
|
||||
|
|
Loading…
Reference in New Issue