diff options
author | Maxim Devaev <[email protected]> | 2024-07-08 03:41:29 +0300 |
---|---|---|
committer | Maxim Devaev <[email protected]> | 2024-12-17 18:20:04 +0200 |
commit | 630610bc532299f15ff7ee12d40f617de450aae0 (patch) | |
tree | ca0a83f1aa5848a4605034c0394f1edfd0bea7ce /testenv | |
parent | e0bbf6968ef8295274793a564e717f95f42983d7 (diff) |
switch
Diffstat (limited to 'testenv')
-rw-r--r-- | testenv/linters/pylint.ini | 1 | ||||
-rw-r--r-- | testenv/linters/vulture-wl.py | 25 | ||||
-rw-r--r-- | testenv/tests/validators/test_switch.py | 180 |
3 files changed, 206 insertions, 0 deletions
diff --git a/testenv/linters/pylint.ini b/testenv/linters/pylint.ini index fd2d8b35..835f8ad2 100644 --- a/testenv/linters/pylint.ini +++ b/testenv/linters/pylint.ini @@ -39,6 +39,7 @@ disable = consider-using-f-string, unnecessary-lambda-assignment, too-many-positional-arguments, + no-else-continue, # https://github.com/PyCQA/pylint/issues/3882 [CLASSES] diff --git a/testenv/linters/vulture-wl.py b/testenv/linters/vulture-wl.py index d8efd97a..32cfdf88 100644 --- a/testenv/linters/vulture-wl.py +++ b/testenv/linters/vulture-wl.py @@ -57,3 +57,28 @@ Dumper.ignore_aliases _auth_server_port_fixture _test_user + +Switch.__x_set_port_names +Switch.__x_set_atx_cp_delays +Switch.__x_set_atx_cpl_delays +Switch.__x_set_atx_cr_delays +Nak.INVALID_COMMAND +Nak.BUSY +Nak.NO_DOWNLINK +Nak.DOWNLINK_OVERFLOW +UnitFlags.flashing_busy +StateCache.get_port_names +StateCache.get_atx_cp_delays +StateCache.get_atx_cpl_delays +StorageContext.write_edids +StorageContext.write_colors +StorageContext.write_port_names +StorageContext.write_atx_cp_delays +StorageContext.write_atx_cpl_delays +StorageContext.write_atx_cr_delays +StorageContext.read_edids +StorageContext.read_colors +StorageContext.read_port_names +StorageContext.read_atx_cp_delays +StorageContext.read_atx_cpl_delays +StorageContext.read_atx_cr_delays diff --git a/testenv/tests/validators/test_switch.py b/testenv/tests/validators/test_switch.py new file mode 100644 index 00000000..6f41c6cf --- /dev/null +++ b/testenv/tests/validators/test_switch.py @@ -0,0 +1,180 @@ +# ========================================================================== # +# # +# KVMD - The main PiKVM daemon. # +# # +# Copyright (C) 2018-2024 Maxim Devaev <[email protected]> # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see <https://www.gnu.org/licenses/>. # +# # +# ========================================================================== # + + +from typing import Any + +import pytest + +from kvmd.validators import ValidatorError +from kvmd.validators.switch import valid_switch_port_name +from kvmd.validators.switch import valid_switch_edid_id +from kvmd.validators.switch import valid_switch_edid_data +from kvmd.validators.switch import valid_switch_color +from kvmd.validators.switch import valid_switch_atx_click_delay + + +# ===== [email protected]("arg, retval", [ + ("\tMac OS Host #1/..", "Mac OS Host #1/.."), + ("\t", ""), + ("", ""), +]) +def test_ok__valid_msd_image_name(arg: Any, retval: str) -> None: + assert valid_switch_port_name(arg) == retval + + [email protected]("arg", [None]) +def test_fail__valid_msd_image_name(arg: Any) -> None: + with pytest.raises(ValidatorError): + valid_switch_port_name(arg) + + +# ===== [email protected]("arg", [ + "550e8400-e29b-41d4-a716-446655440000", + " 00000000-0000-0000-C000-000000000046 ", + " 00000000-0000-0000-0000-000000000000 ", +]) +def test_ok__valid_switch_edid_id__no_default(arg: Any) -> None: + assert valid_switch_edid_id(arg, allow_default=False) == arg.strip().lower() # type: ignore + + [email protected]("arg", [ + "550e8400-e29b-41d4-a716-44665544", + "ffffuuuu-0000-0000-C000-000000000046", + "default", + "", + None, +]) +def test_fail__valid_switch_edid_id__no_default(arg: Any) -> None: + with pytest.raises(ValidatorError): + valid_switch_edid_id(arg, allow_default=False) + + +# ===== [email protected]("arg", [ + "550e8400-e29b-41d4-a716-446655440000", + " 00000000-0000-0000-C000-000000000046 ", + " 00000000-0000-0000-0000-000000000000 ", + " Default", +]) +def test_ok__valid_switch_edid_id__allowed_default(arg: Any) -> None: + assert valid_switch_edid_id(arg, allow_default=True) == arg.strip().lower() # type: ignore + + [email protected]("arg", [ + "550e8400-e29b-41d4-a716-44665544", + "ffffuuuu-0000-0000-C000-000000000046", + "", + None, +]) +def test_fail__valid_switch_edid_id__allowed_default(arg: Any) -> None: + with pytest.raises(ValidatorError): + valid_switch_edid_id(arg, allow_default=True) + + +# ===== [email protected]("arg", [ + "f" * 512, + "0" * 512, + "1a" * 256, +]) +def test_ok__valid_switch_edid_data(arg: Any) -> None: + assert valid_switch_edid_data(arg) == arg.upper() # type: ignore + + [email protected]("arg", [ + "f" * 511, + "0" * 511, + "1a" * 255, + "F" * 513, + "0" * 513, + "1A" * 257, + "", + None, +]) +def test_fail__valid_switch_edid_data(arg: Any) -> None: + with pytest.raises(ValidatorError): + valid_switch_edid_data(arg) + + +# ===== [email protected]("arg, retval", [ + ("000000:00:0000", "000000:00:0000"), + (" 0f0f0f:0f:0f0f ", "0F0F0F:0F:0F0F"), +]) +def test_ok__valid_switch_color__no_default(arg: Any, retval: str) -> None: + assert valid_switch_color(arg, allow_default=False) == retval + + [email protected]("arg", [ + "550e8400-e29b-41d4-a716-44665544", + "ffffuuuu-0000-0000-C000-000000000046", + "000000:00:000000000:00:000G", + "000000:00:000", + "000000:00:000G", + "default", + " Default", + "", + None, +]) +def test_fail__valid_switch_color__no_default(arg: Any) -> None: + with pytest.raises(ValidatorError): + valid_switch_color(arg, allow_default=False) + + +# ===== [email protected]("arg, retval", [ + ("000000:00:0000", "000000:00:0000"), + (" 0f0f0f:0f:0f0f ", "0F0F0F:0F:0F0F"), + (" Default", "default"), +]) +def test_ok__valid_switch_color__allow_default(arg: Any, retval: str) -> None: + assert valid_switch_color(arg, allow_default=True) == retval + + [email protected]("arg", [ + "550e8400-e29b-41d4-a716-44665544", + "ffffuuuu-0000-0000-C000-000000000046", + "000000:00:000000000:00:000G", + "000000:00:000", + "000000:00:000G", + "", + None, +]) +def test_fail__valid_switch_color__allow_default(arg: Any) -> None: + with pytest.raises(ValidatorError): + valid_switch_color(arg, allow_default=True) + + +# ===== [email protected]("arg", [0, 1, 5, "5 ", "5.0 ", " 10"]) +def test_ok__valid_switch_atx_click_delay(arg: Any) -> None: + value = valid_switch_atx_click_delay(arg) + assert type(value) is float # pylint: disable=unidiomatic-typecheck + assert value == float(str(arg).strip()) + + [email protected]("arg", ["test", "", None, -6, "-6", "10.1"]) +def test_fail__valid_switch_atx_click_delay(arg: Any) -> None: + with pytest.raises(ValidatorError): + print(valid_switch_atx_click_delay(arg)) |