summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDaniel Baumann <mail@daniel-baumann.ch>2023-11-04 18:52:16 +0000
committerDaniel Baumann <mail@daniel-baumann.ch>2023-11-04 18:52:16 +0000
commit61a3777eb82896afbb2472017210c7642751ecc2 (patch)
treefbd20f88f28005e6083560ba65e0194403aa3e42 /tests
parentReleasing debian version 1.13.1-1. (diff)
downloadiredis-61a3777eb82896afbb2472017210c7642751ecc2.tar.xz
iredis-61a3777eb82896afbb2472017210c7642751ecc2.zip
Merging upstream version 1.14.0.
Signed-off-by: Daniel Baumann <mail@daniel-baumann.ch>
Diffstat (limited to 'tests')
-rw-r--r--tests/cli_tests/test_cli_start.py8
-rw-r--r--tests/cli_tests/test_command_input.py8
-rw-r--r--tests/cli_tests/test_command_restore.py6
-rw-r--r--tests/cli_tests/test_completer.py3
-rw-r--r--tests/cli_tests/test_pager.py14
-rw-r--r--tests/conftest.py4
-rw-r--r--tests/unittests/test_client.py61
-rw-r--r--tests/unittests/test_entry.py1
-rw-r--r--tests/unittests/test_markdown_doc_render.py2
9 files changed, 68 insertions, 39 deletions
diff --git a/tests/cli_tests/test_cli_start.py b/tests/cli_tests/test_cli_start.py
index 8045947..819b24f 100644
--- a/tests/cli_tests/test_cli_start.py
+++ b/tests/cli_tests/test_cli_start.py
@@ -1,6 +1,8 @@
+from textwrap import dedent
+
+from packaging.version import parse as version_parse # noqa: F401
import pexpect
import pytest
-from textwrap import dedent
def test_start_on_connection_error():
@@ -29,14 +31,14 @@ def test_short_help_option(config):
c.close()
-@pytest.mark.skipif("int(os.environ['REDIS_VERSION']) != 5")
+@pytest.mark.skipif("version_parse(os.environ['REDIS_VERSION']) != version_parse('5')")
def test_server_version_in_starting_on5():
c = pexpect.spawn("iredis", timeout=2)
c.expect("redis-server 5")
c.close()
-@pytest.mark.skipif("int(os.environ['REDIS_VERSION']) != 6")
+@pytest.mark.skipif("version_parse(os.environ['REDIS_VERSION']) != version_parse('6')")
def test_server_version_in_starting_on6():
c = pexpect.spawn("iredis", timeout=2)
c.expect("redis-server 6")
diff --git a/tests/cli_tests/test_command_input.py b/tests/cli_tests/test_command_input.py
index 75917cb..f0aab4a 100644
--- a/tests/cli_tests/test_command_input.py
+++ b/tests/cli_tests/test_command_input.py
@@ -1,4 +1,6 @@
import os
+
+from packaging.version import parse as version_parse
import pytest
@@ -9,7 +11,7 @@ def test_wrong_select_db_index(cli):
cli.sendline("select 128")
cli.expect(["DB index is out of range", "127.0.0.1:6379[1]>"])
- if int(os.environ["REDIS_VERSION"]) > 5:
+ if version_parse(os.environ["REDIS_VERSION"]) > version_parse("5"):
text = "value is not an integer or out of range"
else:
text = "invalid DB index"
@@ -42,14 +44,14 @@ def test_enter_key_binding(clean_redis, cli):
cli.expect(r"hello")
-@pytest.mark.skipif("int(os.environ['REDIS_VERSION']) < 6")
+@pytest.mark.skipif("version_parse(os.environ['REDIS_VERSION']) < version_parse('6')")
def test_auth_hidden_password_with_username(clean_redis, cli):
cli.send("auth default hello-world")
cli.expect("default")
cli.expect(r"\*{11}")
-@pytest.mark.skipif("int(os.environ['REDIS_VERSION']) > 5")
+@pytest.mark.skipif("version_parse(os.environ['REDIS_VERSION']) > version_parse('5')")
def test_auth_hidden_password(clean_redis, cli):
cli.send("auth hello-world")
cli.expect("auth")
diff --git a/tests/cli_tests/test_command_restore.py b/tests/cli_tests/test_command_restore.py
new file mode 100644
index 0000000..1c34405
--- /dev/null
+++ b/tests/cli_tests/test_command_restore.py
@@ -0,0 +1,6 @@
+def test_restore_command(clean_redis, cli):
+ cli.sendline(r'restore foo1 0 "\x00\x03bar\t\x006L\x18\xac\xba\xe0\x9e\xa6"')
+ cli.expect(["OK", "127.0.0.1"])
+
+ cli.sendline("get foo1")
+ cli.expect('"bar"')
diff --git a/tests/cli_tests/test_completer.py b/tests/cli_tests/test_completer.py
index 4ffd058..adf8040 100644
--- a/tests/cli_tests/test_completer.py
+++ b/tests/cli_tests/test_completer.py
@@ -1,3 +1,4 @@
+from packaging.version import parse as version_parse # noqa: F401
import pytest
@@ -37,7 +38,7 @@ def test_command_completion_when_space_command(cli, clean_redis):
cli.expect("command info")
-@pytest.mark.skipif("int(os.environ['REDIS_VERSION']) < 6")
+@pytest.mark.skipif("version_parse(os.environ['REDIS_VERSION']) < version_parse('6')")
def test_username_completer(cli, iredis_client):
iredis_client.execute("acl setuser", "foo1")
iredis_client.execute("acl setuser", "bar2")
diff --git a/tests/cli_tests/test_pager.py b/tests/cli_tests/test_pager.py
index 38ced31..c3f9fb0 100644
--- a/tests/cli_tests/test_pager.py
+++ b/tests/cli_tests/test_pager.py
@@ -1,10 +1,12 @@
# noqa: F541
+from contextlib import contextmanager
import os
-import sys
-import pexpect
import pathlib
-from contextlib import contextmanager
+import sys
from textwrap import dedent
+from packaging.version import parse as version_parse
+
+import pexpect
TEST_IREDISRC = "/tmp/.iredisrc.test"
@@ -22,6 +24,10 @@ env_pager_numbers = "{0} {1} {2}".format(
TEST_PAGER_BOUNDARY_NUMBER,
)
+long_list_type = "quicklist"
+if version_parse(os.environ["REDIS_VERSION"]) >= version_parse("7"):
+ long_list_type = "listpack"
+
@contextmanager
def pager_enabled_cli():
@@ -60,7 +66,7 @@ def test_pager_works_for_peek(clean_redis):
with pager_enabled_cli() as child:
child.sendline("peek long-list")
child.expect(TEST_PAGER_BOUNDARY)
- child.expect("(quicklist)")
+ child.expect(f"({long_list_type})")
child.expect("value-1")
child.expect(TEST_PAGER_BOUNDARY)
diff --git a/tests/conftest.py b/tests/conftest.py
index b70bf95..593e8a8 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -105,7 +105,7 @@ def cli():
child = pexpect.spawn(f"iredis -n 15 --iredisrc {f.name}", timeout=TIMEOUT, env=env)
child.logfile_read = open("cli_test.log", "ab")
- child.expect(["https://iredis.io/issues", "127.0.0.1"])
+ child.expect(["https://github.com/laixintao/iredis/issues", "127.0.0.1"])
yield child
child.close()
@@ -129,7 +129,7 @@ def raw_cli():
f"iredis --raw -n 15 --iredisrc {TEST_IREDISRC}", timeout=TIMEOUT
)
child.logfile_read = open("cli_test.log", "ab")
- child.expect(["https://iredis.io/issues", "127.0.0.1"])
+ child.expect(["https://github.com/laixintao/iredis/issues", "127.0.0.1"])
yield child
child.close()
diff --git a/tests/unittests/test_client.py b/tests/unittests/test_client.py
index 45f0054..c0f4c07 100644
--- a/tests/unittests/test_client.py
+++ b/tests/unittests/test_client.py
@@ -1,18 +1,20 @@
import os
import re
-import pytest
-import redis
-from unittest.mock import MagicMock, patch
from textwrap import dedent
+from unittest.mock import MagicMock, patch
+from packaging.version import parse as version_parse
from prompt_toolkit.formatted_text import FormattedText
+import pytest
+import redis
from iredis.client import Client
-from iredis.config import config, load_config_files
+from iredis.commands import command2syntax
from iredis.completers import IRedisCompleter
+from iredis.config import config, load_config_files
from iredis.entry import Rainbow, prompt_message
from iredis.exceptions import NotSupport
-from iredis.commands import command2syntax
+
from ..helpers import formatted_text_rematch
@@ -22,8 +24,12 @@ def completer():
zset_type = "ziplist"
-if os.environ["REDIS_VERSION"] == "7":
+hash_type = "hashtable"
+list_type = "quicklist"
+if version_parse(os.environ["REDIS_VERSION"]) >= version_parse("7"):
zset_type = "listpack"
+ hash_type = "listpack"
+ list_type = "listpack"
@pytest.mark.parametrize(
@@ -36,7 +42,7 @@ if os.environ["REDIS_VERSION"] == "7":
],
)
def test_send_command(_input, command_name, expect_args):
- client = Client("127.0.0.1", "6379", None)
+ client = Client("127.0.0.1", 6379, None)
client.execute = MagicMock()
next(client.send_command(_input, None))
args, _ = client.execute.call_args
@@ -176,7 +182,7 @@ def test_not_retry_on_authentication_error(iredis_client, config):
@pytest.mark.skipif(
- "int(os.environ['REDIS_VERSION']) != 6",
+ "version_parse(os.environ['REDIS_VERSION']) != version_parse('6')",
reason="""
in redis7, it will not work if you:
1. connect redis without password
@@ -209,7 +215,7 @@ def test_auto_select_db_and_auth_for_reconnect_only_6(iredis_client, config):
)
-@pytest.mark.skipif("int(os.environ['REDIS_VERSION']) > 5")
+@pytest.mark.skipif("version_parse(os.environ['REDIS_VERSION']) > version_parse('5')")
def test_auto_select_db_and_auth_for_reconnect_only_5(iredis_client, config):
config.retry_times = 2
config.raw = True
@@ -303,7 +309,7 @@ def test_peek_list_fetch_all(iredis_client, clean_redis):
FormattedText(
[
("class:dockey", "key: "),
- ("", r"list \(quicklist\) mem: \d+ bytes, ttl: -1"),
+ ("", rf"list \({list_type}\) mem: \d+ bytes, ttl: -1"),
("", "\n"),
("class:dockey", "llen: "),
("", "5"),
@@ -351,7 +357,7 @@ def test_peek_set_fetch_part(iredis_client, clean_redis):
peek_result = list(iredis_client.do_peek("myset"))
assert peek_result[0][0] == ("class:dockey", "key: ")
- assert peek_result[0][1][1].startswith("set (hashtable) mem: 2")
+ assert peek_result[0][1][1].startswith(f"set ({hash_type}) mem: ")
def test_peek_zset_fetch_all(iredis_client, clean_redis):
@@ -425,7 +431,7 @@ def test_peek_stream(iredis_client, clean_redis):
assert peek_result[0][0] == ("class:dockey", "key: ")
assert re.match(
- r"stream \((stream|unknown)\) mem: 6\d\d bytes, ttl: -1", peek_result[0][1][1]
+ r"stream \((stream|unknown)\) mem: \d+ bytes, ttl: -1", peek_result[0][1][1]
)
assert peek_result[0][2:18] == FormattedText(
[
@@ -550,23 +556,29 @@ def test_version_parse_for_auth(iredis_client):
"info, version",
[
(
- "# Server\r\nredis_version:df--128-NOTFOUND\r\n"
- "redis_mode:standalone\r\narch_bits:64",
+ (
+ "# Server\r\nredis_version:df--128-NOTFOUND\r\n"
+ "redis_mode:standalone\r\narch_bits:64"
+ ),
"df--128-NOTFOUND",
),
(
- "# Server\r\nredis_version:6.2.5\r\n"
- "redis_git_sha1:00000000\r\n"
- "redis_git_dirty:0\r\n"
- "redis_build_id:915e5480613bc9b6\r\n"
- "redis_mode:standalone ",
+ (
+ "# Server\r\nredis_version:6.2.5\r\n"
+ "redis_git_sha1:00000000\r\n"
+ "redis_git_dirty:0\r\n"
+ "redis_build_id:915e5480613bc9b6\r\n"
+ "redis_mode:standalone "
+ ),
"6.2.5",
),
(
- "# Server\r\nredis_version:5.0.14.1\r\n"
- "redis_git_sha1:00000000\r\nredis_git_dirty:0\r\n"
- "redis_build_id:915e5480613bc9b6\r\n"
- "redis_mode:standalone ",
+ (
+ "# Server\r\nredis_version:5.0.14.1\r\n"
+ "redis_git_sha1:00000000\r\nredis_git_dirty:0\r\n"
+ "redis_build_id:915e5480613bc9b6\r\n"
+ "redis_mode:standalone "
+ ),
"5.0.14.1",
),
],
@@ -576,9 +588,10 @@ def test_version_path(info, version):
mock_config.no_info = True
mock_config.pager = "less"
mock_config.version = "5.0.0"
+ mock_config.decode = "utf-8"
with patch("iredis.client.Client.execute") as mock_execute:
mock_execute.return_value = info
- client = Client("127.0.0.1", "6379", None)
+ client = Client("127.0.0.1", 6379)
client.get_server_info()
assert mock_config.version == version
diff --git a/tests/unittests/test_entry.py b/tests/unittests/test_entry.py
index 912aabf..e53861e 100644
--- a/tests/unittests/test_entry.py
+++ b/tests/unittests/test_entry.py
@@ -28,7 +28,6 @@ from iredis.utils import DSN
def test_command_entry_tty(is_tty, raw_arg_is_raw, final_config_is_raw, config):
# is tty + raw -> raw
with patch("sys.stdout.isatty") as patch_tty:
-
patch_tty.return_value = is_tty
if raw_arg_is_raw is None:
call = ["iredis"]
diff --git a/tests/unittests/test_markdown_doc_render.py b/tests/unittests/test_markdown_doc_render.py
index 0538299..0c66260 100644
--- a/tests/unittests/test_markdown_doc_render.py
+++ b/tests/unittests/test_markdown_doc_render.py
@@ -6,7 +6,7 @@ https://github.com/antirez/redis-doc/commit/02b3d1a345093c1794fd86273e9d516fffd3
"""
import pytest
-from importlib_resources import read_text
+from importlib.resources import read_text
from iredis.commands import commands_summary
from iredis.data import commands as commands_data