1
0
Fork 0

Fix special commands (#973)

* Add tests for special commands completion.
This commit is contained in:
Amjith Ramanujam 2018-11-27 07:49:54 -08:00 committed by Irina Truong
parent ca2d96825b
commit 3b9041fe36
4 changed files with 29 additions and 3 deletions

View File

@ -1,7 +1,10 @@
Upcoming:
=========
TODO
Internal:
---------
* Added tests for special command completion. (Thanks: `Amjith Ramanujam`_)
2.0.1:
======

View File

@ -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 = [], [], [], [], []

View File

@ -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()

View File

@ -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.')])