From af35234f452fde58f2a445b656c7cd334368b301 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 11 Sep 2024 14:10:20 +0200 Subject: Merging upstream version 1.12.3. Signed-off-by: Daniel Baumann --- tests/conftest.py | 2 +- tests/liteclirc | 7 +- tests/test_clistyle.py | 1 + tests/test_completion_engine.py | 64 +++-------- tests/test_completion_refresher.py | 2 +- tests/test_main.py | 5 +- tests/test_smart_completion_public_schema_only.py | 126 +++++----------------- tests/test_sqlexecute.py | 7 +- tests/utils.py | 20 ++-- 9 files changed, 55 insertions(+), 179 deletions(-) (limited to 'tests') diff --git a/tests/conftest.py b/tests/conftest.py index dce0d7e..c6524ca 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -6,7 +6,7 @@ from utils import create_db, db_connection, drop_tables import litecli.sqlexecute -@pytest.yield_fixture(scope="function") +@pytest.fixture(scope="function") def connection(): create_db("_test_db") connection = db_connection("_test_db") diff --git a/tests/liteclirc b/tests/liteclirc index 21a3ef9..91f7df9 100644 --- a/tests/liteclirc +++ b/tests/liteclirc @@ -135,10 +135,5 @@ Token.Toolbar.Arg.Text = nobold [favorite_queries] q_param = select * from test where name=? sh_param = select * from test where id=$1 - -# Startup commands -# litecli commands or sqlite commands to be executed on startup. -# some of them will require you to have a database attached. -# they will be executed in the same order as they appear in the list. [startup_commands] -commands = "create table startupcommands(a text)", "insert into startupcommands values('abc')" +commands = create table startupcommands(a text), insert into startupcommands values('abc') diff --git a/tests/test_clistyle.py b/tests/test_clistyle.py index c1177de..b2b0b92 100644 --- a/tests/test_clistyle.py +++ b/tests/test_clistyle.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- """Test the litecli.clistyle module.""" + import pytest from pygments.style import Style diff --git a/tests/test_completion_engine.py b/tests/test_completion_engine.py index 760f275..b04e184 100644 --- a/tests/test_completion_engine.py +++ b/tests/test_completion_engine.py @@ -32,9 +32,7 @@ def test_select_suggests_cols_with_qualified_table_scope(): def test_order_by_suggests_cols_with_qualified_table_scope(): - suggestions = suggest_type( - "SELECT * FROM sch.tabl ORDER BY ", "SELECT * FROM sch.tabl ORDER BY " - ) + suggestions = suggest_type("SELECT * FROM sch.tabl ORDER BY ", "SELECT * FROM sch.tabl ORDER BY ") assert sorted_dicts(suggestions) == sorted_dicts( [ {"type": "column", "tables": [("sch", "tabl", None)]}, @@ -109,9 +107,7 @@ def test_operand_inside_function_suggests_cols1(): def test_operand_inside_function_suggests_cols2(): - suggestion = suggest_type( - "SELECT MAX(col1 + col2 + FROM tbl", "SELECT MAX(col1 + col2 + " - ) + suggestion = suggest_type("SELECT MAX(col1 + col2 + FROM tbl", "SELECT MAX(col1 + col2 + ") assert suggestion == [{"type": "column", "tables": [(None, "tbl", None)]}] @@ -166,23 +162,17 @@ def test_expression_suggests_tables_views_and_schemas(expression): ) def test_expression_suggests_qualified_tables_views_and_schemas(expression): suggestions = suggest_type(expression, expression) - assert sorted_dicts(suggestions) == sorted_dicts( - [{"type": "table", "schema": "sch"}, {"type": "view", "schema": "sch"}] - ) + assert sorted_dicts(suggestions) == sorted_dicts([{"type": "table", "schema": "sch"}, {"type": "view", "schema": "sch"}]) def test_truncate_suggests_tables_and_schemas(): suggestions = suggest_type("TRUNCATE ", "TRUNCATE ") - assert sorted_dicts(suggestions) == sorted_dicts( - [{"type": "table", "schema": []}, {"type": "schema"}] - ) + assert sorted_dicts(suggestions) == sorted_dicts([{"type": "table", "schema": []}, {"type": "schema"}]) def test_truncate_suggests_qualified_tables(): suggestions = suggest_type("TRUNCATE sch.", "TRUNCATE sch.") - assert sorted_dicts(suggestions) == sorted_dicts( - [{"type": "table", "schema": "sch"}] - ) + assert sorted_dicts(suggestions) == sorted_dicts([{"type": "table", "schema": "sch"}]) def test_distinct_suggests_cols(): @@ -240,9 +230,7 @@ def test_insert_into_lparen_comma_suggests_cols(): def test_partially_typed_col_name_suggests_col_names(): - suggestions = suggest_type( - "SELECT * FROM tabl WHERE col_n", "SELECT * FROM tabl WHERE col_n" - ) + suggestions = suggest_type("SELECT * FROM tabl WHERE col_n", "SELECT * FROM tabl WHERE col_n") assert sorted_dicts(suggestions) == sorted_dicts( [ {"type": "alias", "aliases": ["tabl"]}, @@ -278,9 +266,7 @@ def test_dot_suggests_cols_of_an_alias(): def test_dot_col_comma_suggests_cols_or_schema_qualified_table(): - suggestions = suggest_type( - "SELECT t1.a, t2. FROM tabl1 t1, tabl2 t2", "SELECT t1.a, t2." - ) + suggestions = suggest_type("SELECT t1.a, t2. FROM tabl1 t1, tabl2 t2", "SELECT t1.a, t2.") assert sorted_dicts(suggestions) == sorted_dicts( [ {"type": "column", "tables": [(None, "tabl2", "t2")]}, @@ -349,9 +335,7 @@ def test_sub_select_table_name_completion(expression): def test_sub_select_col_name_completion(): - suggestions = suggest_type( - "SELECT * FROM (SELECT FROM abc", "SELECT * FROM (SELECT " - ) + suggestions = suggest_type("SELECT * FROM (SELECT FROM abc", "SELECT * FROM (SELECT ") assert sorted_dicts(suggestions) == sorted_dicts( [ {"type": "alias", "aliases": ["abc"]}, @@ -364,9 +348,7 @@ def test_sub_select_col_name_completion(): @pytest.mark.xfail def test_sub_select_multiple_col_name_completion(): - suggestions = suggest_type( - "SELECT * FROM (SELECT a, FROM abc", "SELECT * FROM (SELECT a, " - ) + suggestions = suggest_type("SELECT * FROM (SELECT a, FROM abc", "SELECT * FROM (SELECT a, ") assert sorted_dicts(suggestions) == sorted_dicts( [ {"type": "column", "tables": [(None, "abc", None)]}, @@ -376,9 +358,7 @@ def test_sub_select_multiple_col_name_completion(): def test_sub_select_dot_col_name_completion(): - suggestions = suggest_type( - "SELECT * FROM (SELECT t. FROM tabl t", "SELECT * FROM (SELECT t." - ) + suggestions = suggest_type("SELECT * FROM (SELECT t. FROM tabl t", "SELECT * FROM (SELECT t.") assert sorted_dicts(suggestions) == sorted_dicts( [ {"type": "column", "tables": [(None, "tabl", "t")]}, @@ -502,9 +482,7 @@ def test_join_using_suggests_common_columns(col_list): def test_2_statements_2nd_current(): - suggestions = suggest_type( - "select * from a; select * from ", "select * from a; select * from " - ) + suggestions = suggest_type("select * from a; select * from ", "select * from a; select * from ") assert sorted_dicts(suggestions) == sorted_dicts( [ {"type": "table", "schema": []}, @@ -513,9 +491,7 @@ def test_2_statements_2nd_current(): ] ) - suggestions = suggest_type( - "select * from a; select from b", "select * from a; select " - ) + suggestions = suggest_type("select * from a; select from b", "select * from a; select ") assert sorted_dicts(suggestions) == sorted_dicts( [ {"type": "alias", "aliases": ["b"]}, @@ -526,9 +502,7 @@ def test_2_statements_2nd_current(): ) # Should work even if first statement is invalid - suggestions = suggest_type( - "select * from; select * from ", "select * from; select * from " - ) + suggestions = suggest_type("select * from; select * from ", "select * from; select * from ") assert sorted_dicts(suggestions) == sorted_dicts( [ {"type": "table", "schema": []}, @@ -572,9 +546,7 @@ def test_3_statements_2nd_current(): ] ) - suggestions = suggest_type( - "select * from a; select from b; select * from c", "select * from a; select " - ) + suggestions = suggest_type("select * from a; select from b; select * from c", "select * from a; select ") assert sorted_dicts(suggestions) == sorted_dicts( [ {"type": "alias", "aliases": ["b"]}, @@ -586,9 +558,7 @@ def test_3_statements_2nd_current(): def test_create_db_with_template(): - suggestions = suggest_type( - "create database foo with template ", "create database foo with template " - ) + suggestions = suggest_type("create database foo with template ", "create database foo with template ") assert sorted_dicts(suggestions) == sorted_dicts([{"type": "database"}]) @@ -597,9 +567,7 @@ def test_create_db_with_template(): def test_specials_included_for_initial_completion(initial_text): suggestions = suggest_type(initial_text, initial_text) - assert sorted_dicts(suggestions) == sorted_dicts( - [{"type": "keyword"}, {"type": "special"}] - ) + assert sorted_dicts(suggestions) == sorted_dicts([{"type": "keyword"}, {"type": "special"}]) def test_specials_not_included_after_initial_token(): diff --git a/tests/test_completion_refresher.py b/tests/test_completion_refresher.py index 620a364..b566b8f 100644 --- a/tests/test_completion_refresher.py +++ b/tests/test_completion_refresher.py @@ -1,6 +1,6 @@ import time import pytest -from mock import Mock, patch +from unittest.mock import Mock, patch @pytest.fixture diff --git a/tests/test_main.py b/tests/test_main.py index e2f183a..a8fa4ae 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,7 +1,6 @@ import os from collections import namedtuple from textwrap import dedent -from tempfile import NamedTemporaryFile import shutil import click @@ -180,9 +179,7 @@ def output(monkeypatch, terminal_size, testdata, explicit_pager, expect_pager): def test_conditional_pager(monkeypatch): - testdata = "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do".split( - " " - ) + testdata = "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do".split(" ") # User didn't set pager, output doesn't fit screen -> pager output( monkeypatch, diff --git a/tests/test_smart_completion_public_schema_only.py b/tests/test_smart_completion_public_schema_only.py index c8e1be4..6134ff3 100644 --- a/tests/test_smart_completion_public_schema_only.py +++ b/tests/test_smart_completion_public_schema_only.py @@ -1,7 +1,7 @@ # coding: utf-8 from __future__ import unicode_literals import pytest -from mock import patch +from unittest.mock import patch from prompt_toolkit.completion import Completion from prompt_toolkit.document import Document @@ -35,7 +35,7 @@ def completer(): @pytest.fixture def complete_event(): - from mock import Mock + from unittest.mock import Mock return Mock() @@ -43,29 +43,21 @@ def complete_event(): def test_empty_string_completion(completer, complete_event): text = "" position = 0 - 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)) assert list(map(Completion, sorted(completer.keywords))) == result def test_select_keyword_completion(completer, complete_event): text = "SEL" position = len("SEL") - result = completer.get_completions( - Document(text=text, cursor_position=position), complete_event - ) + result = completer.get_completions(Document(text=text, cursor_position=position), complete_event) assert list(result) == list([Completion(text="SELECT", start_position=-3)]) def test_table_completion(completer, complete_event): text = "SELECT * FROM " position = len(text) - result = completer.get_completions( - Document(text=text, cursor_position=position), complete_event - ) + result = completer.get_completions(Document(text=text, cursor_position=position), complete_event) assert list(result) == list( [ Completion(text="`réveillé`", start_position=0), @@ -79,9 +71,7 @@ def test_table_completion(completer, complete_event): def test_function_name_completion(completer, complete_event): text = "SELECT MA" position = len("SELECT MA") - result = completer.get_completions( - Document(text=text, cursor_position=position), complete_event - ) + result = completer.get_completions(Document(text=text, cursor_position=position), complete_event) assert list(result) == list( [ Completion(text="MAX", start_position=-2), @@ -100,11 +90,7 @@ def test_suggested_column_names(completer, complete_event): """ text = "SELECT from users" position = len("SELECT ") - 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)) assert result == list( [ Completion(text="*", start_position=0), @@ -130,9 +116,7 @@ def test_suggested_column_names_in_function(completer, complete_event): """ text = "SELECT MAX( from users" position = len("SELECT MAX(") - result = completer.get_completions( - Document(text=text, cursor_position=position), complete_event - ) + result = completer.get_completions(Document(text=text, cursor_position=position), complete_event) assert list(result) == list( [ Completion(text="*", start_position=0), @@ -154,11 +138,7 @@ def test_suggested_column_names_with_table_dot(completer, complete_event): """ text = "SELECT users. from users" position = len("SELECT users.") - 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)) assert result == list( [ Completion(text="*", start_position=0), @@ -180,11 +160,7 @@ def test_suggested_column_names_with_alias(completer, complete_event): """ text = "SELECT u. from users u" position = len("SELECT u.") - 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)) assert result == list( [ Completion(text="*", start_position=0), @@ -207,11 +183,7 @@ def test_suggested_multiple_column_names(completer, complete_event): """ text = "SELECT id, from users u" position = len("SELECT id, ") - 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)) assert result == list( [ Completion(text="*", start_position=0), @@ -237,11 +209,7 @@ def test_suggested_multiple_column_names_with_alias(completer, complete_event): """ 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 - ) - ) + result = list(completer.get_completions(Document(text=text, cursor_position=position), complete_event)) assert result == list( [ Completion(text="*", start_position=0), @@ -264,11 +232,7 @@ def test_suggested_multiple_column_names_with_dot(completer, complete_event): """ 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 - ) - ) + result = list(completer.get_completions(Document(text=text, cursor_position=position), complete_event)) assert result == list( [ Completion(text="*", start_position=0), @@ -283,37 +247,21 @@ def test_suggested_multiple_column_names_with_dot(completer, complete_event): 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="o", start_position=0), Completion(text="u", start_position=0)] - ) + result = list(completer.get_completions(Document(text=text, cursor_position=position), complete_event)) + assert result == list([Completion(text="o", start_position=0), Completion(text="u", 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="o", start_position=0), Completion(text="u", start_position=0)] - ) + result = list(completer.get_completions(Document(text=text, cursor_position=position), complete_event)) + assert result == list([Completion(text="o", start_position=0), Completion(text="u", 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 - ) - ) + result = list(completer.get_completions(Document(text=text, cursor_position=position), complete_event)) assert result == list( [ Completion(text="orders", start_position=0), @@ -324,14 +272,8 @@ def test_suggested_tables_after_on(completer, complete_event): 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 = " - 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 - ) - ) + 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 list(result) == list( [ Completion(text="orders", start_position=0), @@ -343,11 +285,7 @@ def test_suggested_tables_after_on_right_side(completer, complete_event): 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 - ) - ) + result = list(completer.get_completions(Document(text=text, cursor_position=position), complete_event)) assert list(result) == list( [ Completion(text="`réveillé`", start_position=0), @@ -361,19 +299,13 @@ def test_table_names_after_from(completer, complete_event): 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 - ) - ) + result = list(completer.get_completions(Document(text=text, cursor_position=position), complete_event)) assert result == [ Completion(text="*", start_position=0), Completion(text="`ABC`", start_position=0), Completion(text="`insert`", start_position=0), Completion(text="id", start_position=0), - ] + list(map(Completion, completer.functions)) + [ - Completion(text="select", start_position=0) - ] + list( + ] + list(map(Completion, completer.functions)) + [Completion(text="select", start_position=0)] + list( map(Completion, sorted(completer.keywords)) ) @@ -381,11 +313,7 @@ def test_auto_escaped_col_names(completer, complete_event): 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 - ) - ) + result = list(completer.get_completions(Document(text=text, cursor_position=position), complete_event)) assert result == list( [ Completion(text="*", start_position=0), @@ -420,10 +348,6 @@ def dummy_list_path(dir_name): ) 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 diff --git a/tests/test_sqlexecute.py b/tests/test_sqlexecute.py index cd56683..0181b2c 100644 --- a/tests/test_sqlexecute.py +++ b/tests/test_sqlexecute.py @@ -274,8 +274,7 @@ def test_favorite_query_multiple_statement(executor): results = run( executor, - "\\fs test-ad select * from test where a like 'a%'; " - "select * from test where a like 'd%'", + "\\fs test-ad select * from test where a like 'a%'; " "select * from test where a like 'd%'", ) assert_result_equal(results, status="Saved.") @@ -346,9 +345,7 @@ def test_cd_command_without_a_folder_name(executor): @dbtest def test_system_command_not_found(executor): results = run(executor, "system xyz") - assert_result_equal( - results, status="OSError: No such file or directory", assert_contains=True - ) + assert_result_equal(results, status="OSError: No such file or directory", assert_contains=True) @dbtest diff --git a/tests/utils.py b/tests/utils.py index 41bac9b..4bacc94 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -12,7 +12,7 @@ import pytest from litecli.main import special -DATABASE = os.getenv("PYTEST_DATABASE", "test.sqlite3") +DATABASE = "test.sqlite3" def db_connection(dbname=":memory:"): @@ -23,12 +23,10 @@ def db_connection(dbname=":memory:"): try: db_connection() CAN_CONNECT_TO_DB = True -except Exception as ex: +except Exception: CAN_CONNECT_TO_DB = False -dbtest = pytest.mark.skipif( - not CAN_CONNECT_TO_DB, reason="Error creating sqlite connection" -) +dbtest = pytest.mark.skipif(not CAN_CONNECT_TO_DB, reason="Error creating sqlite connection") def create_db(dbname): @@ -36,7 +34,7 @@ def create_db(dbname): try: cur.execute("""DROP DATABASE IF EXISTS _test_db""") cur.execute("""CREATE DATABASE _test_db""") - except: + except Exception: pass @@ -44,7 +42,7 @@ def drop_tables(dbname): with closing(db_connection().cursor()) as cur: try: cur.execute("""DROP DATABASE IF EXISTS _test_db""") - except: + except Exception: pass @@ -54,9 +52,7 @@ def run(executor, sql, rows_as_list=True): for title, rows, headers, status in executor.run(sql): rows = list(rows) if (rows_as_list and rows) else rows - result.append( - {"title": title, "rows": rows, "headers": headers, "status": status} - ) + result.append({"title": title, "rows": rows, "headers": headers, "status": status}) return result @@ -89,8 +85,6 @@ def send_ctrl_c(wait_seconds): Returns the `multiprocessing.Process` created. """ - ctrl_c_process = multiprocessing.Process( - target=send_ctrl_c_to_pid, args=(os.getpid(), wait_seconds) - ) + ctrl_c_process = multiprocessing.Process(target=send_ctrl_c_to_pid, args=(os.getpid(), wait_seconds)) ctrl_c_process.start() return ctrl_c_process -- cgit v1.2.3