diff options
author | Amjith Ramanujam <amjith.r@gmail.com> | 2018-11-27 07:49:54 -0800 |
---|---|---|
committer | Irina Truong <i.chernyavska@gmail.com> | 2018-11-27 07:49:54 -0800 |
commit | 3b9041fe36798639b4316fb3e413ac7a04c43da3 (patch) | |
tree | c30dc0bdfe218b43279bf320197c98cb4de7a4a0 /tests | |
parent | ca2d96825b9444301972f0528eaaa98491bf35c5 (diff) |
Fix special commands (#973)
* Add tests for special commands completion.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/metadata.py | 8 | ||||
-rw-r--r-- | tests/test_naive_completion.py | 10 | ||||
-rw-r--r-- | tests/test_smart_completion_public_schema_only.py | 9 |
3 files changed, 25 insertions, 2 deletions
diff --git a/tests/metadata.py b/tests/metadata.py index 1245a589..782d58d5 100644 --- a/tests/metadata.py +++ b/tests/metadata.py @@ -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 = [], [], [], [], [] diff --git a/tests/test_naive_completion.py b/tests/test_naive_completion.py index 87fc4378..761c8996 100644 --- a/tests/test_naive_completion.py +++ b/tests/test_naive_completion.py @@ -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() diff --git a/tests/test_smart_completion_public_schema_only.py b/tests/test_smart_completion_public_schema_only.py index 76424610..3ccac9e5 100644 --- a/tests/test_smart_completion_public_schema_only.py +++ b/tests/test_smart_completion_public_schema_only.py @@ -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.')]) |