Skip to content

Commit 2712b22

Browse files
committed
test: refactor code style and update RPM build dependencies
1 parent ff3b537 commit 2712b22

34 files changed

+663
-571
lines changed

rpm/python3-pybadfish.spec.tpl

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,17 @@ BuildRequires: %{py3_dist setuptools}
2121
BuildRequires: %{py3_dist pip}
2222
BuildRequires: python3-devel
2323
BuildRequires: zlib-devel
24-
BuildRequires: python3-coverage
24+
BuildRequires: python3dist(pytest)
25+
BuildRequires: python3dist(pytest-cov)
26+
BuildRequires: python3dist(codecov)
27+
BuildRequires: python3dist(pytest-asyncio)
28+
BuildRequires: python3dist(pyyaml)
29+
BuildRequires: python3dist(aiohttp)
30+
BuildRequires: python3dist(tox)
31+
BuildRequires: python3dist(coverage)
2532
Provides: badfish = %{version}-%{release}
2633
%generate_buildrequires
27-
%pyproject_buildrequires -t
34+
%pyproject_buildrequires
2835

2936
%description
3037
%{desc}
@@ -39,7 +46,7 @@ Provides: badfish = %{version}-%{release}
3946
%pyproject_install
4047

4148
%check
42-
%tox
49+
tox run-parallel --skip-missing-interpreters false
4350

4451
%files -n %{name}
4552
%doc README.md

tests/config.py

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,12 @@ def render_device_dict(index, device):
9797
"- INFO - Command passed to set BIOS attribute pending values.\n"
9898
)
9999
RESPONSE_BOOT_TO_CUSTOM = (
100-
f"- WARNING - Job queue already cleared for iDRAC host01.example.com, DELETE command will not execute.\n"
100+
"- WARNING - Job queue already cleared for iDRAC host01.example.com, DELETE command will not execute.\n"
101101
"- INFO - Command passed to set BIOS attribute pending values.\n"
102102
)
103-
RESPONSE_BOOT_TO_BAD_TYPE = "- ERROR - Expected values for -t argument are: ['custom', 'director', 'foreman', 'uefi']\n"
103+
RESPONSE_BOOT_TO_BAD_TYPE = (
104+
"- ERROR - Expected values for -t argument are: ['custom', 'director', 'foreman', 'uefi']\n"
105+
)
104106
RESPONSE_BOOT_TO_SERVICE_UNAVAILABLE = (
105107
f"- WARNING - Job queue already cleared for iDRAC {MOCK_HOST}, DELETE command will not execute.\n"
106108
"- ERROR - Command failed, error code is: 503.\n"
@@ -234,7 +236,9 @@ def render_device_dict(index, device):
234236
"- ERROR - PxeDev3EnDis not found. Please check attribute name.\n"
235237
"- ERROR - Attribute not found\n"
236238
)
237-
RESPONSE_CHANGE_BAD_TYPE = "- ERROR - Expected values for -t argument are: ['custom', 'director', 'foreman', 'uefi']\n"
239+
RESPONSE_CHANGE_BAD_TYPE = (
240+
"- ERROR - Expected values for -t argument are: ['custom', 'director', 'foreman', 'uefi']\n"
241+
)
238242
RESPONSE_CHANGE_TO_SAME = "- WARNING - No changes were made since the boot order already matches the requested.\n"
239243
RESPONSE_CHANGE_NO_INT = "- ERROR - You must provide a path to the interfaces yaml via `-i` optional argument.\n"
240244

@@ -581,13 +585,8 @@ def render_device_dict(index, device):
581585
"- INFO - Model: Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz\n"
582586
"- ERROR - There was something wrong getting processor details\n"
583587
)
584-
GPU_SUMMARY_RESP = (
585-
'{"GPUSummary":"AMD Instinct MI300X": 2,}'
586-
587-
)
588-
GPU_SUMMARY_RESP_FAULTY = (
589-
'{"GPUSummary":"Unknown: 1"}'
590-
)
588+
GPU_SUMMARY_RESP = '{"GPUSummary":"AMD Instinct MI300X": 2,}'
589+
GPU_SUMMARY_RESP_FAULTY = '{"GPUSummary":"Unknown: 1"}'
591590
GPU_MEMBERS_RESP = (
592591
'{"Members": ['
593592
'{"@odata.id": "/redfish/v1/Systems/System.Embedded.1/Processors/ProcAccelerator.Slot.21-1"},'
@@ -610,9 +609,7 @@ def render_device_dict(index, device):
610609
'"ProcessorType": "Accelerator",'
611610
'"Id": "ProcAccelerator.Slot.22-1"}'
612611
)
613-
GPU_DATA_RESP_FAULTY = (
614-
'{"GPU":"" }'
615-
)
612+
GPU_DATA_RESP_FAULTY = '{"GPU":"" }'
616613
RESPONSE_LS_GPU = (
617614
"- INFO - GPU Summary:\n"
618615
"- INFO - Model: AMD Instinct MI300X (Count: 2)\n"
@@ -835,12 +832,8 @@ def render_device_dict(index, device):
835832
VMEDIA_OS_DEPLOYMENT_NOT_SUPPORTED_CHECK = (
836833
"- ERROR - There was something wrong trying to check remote image attach status.\n"
837834
)
838-
VMEDIA_OS_DEPLOYMENT_NOT_SUPPORTED_BOOT = (
839-
"- ERROR - Command failed to boot to remote ISO. No job was created.\n"
840-
)
841-
VMEDIA_OS_DEPLOYMENT_NOT_SUPPORTED_DETACH = (
842-
"- INFO - Command to detach remote ISO was successful.\n"
843-
)
835+
VMEDIA_OS_DEPLOYMENT_NOT_SUPPORTED_BOOT = "- ERROR - Command failed to boot to remote ISO. No job was created.\n"
836+
VMEDIA_OS_DEPLOYMENT_NOT_SUPPORTED_DETACH = "- INFO - Command to detach remote ISO was successful.\n"
844837
VMEDIA_REMOTE_CHECK_RESP = """
845838
{
846839
"@Message.ExtendedInfo": [{

tests/test_base.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ async def get_application(self):
2121
def set_mock_response(mock, status, responses, post=False, headers=None):
2222
mock.return_value.__aenter__.return_value.name = responses
2323
status_mock = MagicMock()
24-
if type(status) == list:
24+
if isinstance(status, list):
2525
if post:
2626
dup_stats = [val for val in status for _ in range(2)]
2727
type(status_mock).status = PropertyMock(side_effect=dup_stats)
@@ -31,14 +31,10 @@ def set_mock_response(mock, status, responses, post=False, headers=None):
3131
type(status_mock).status = PropertyMock(return_value=status)
3232
mock.return_value.__aenter__.return_value = status_mock
3333
mock.return_value.__aenter__.return_value.read = AsyncMock()
34-
if type(responses) == list:
35-
mock.return_value.__aenter__.return_value.text = AsyncMock(
36-
side_effect=responses
37-
)
34+
if isinstance(responses, list):
35+
mock.return_value.__aenter__.return_value.text = AsyncMock(side_effect=responses)
3836
else:
39-
mock.return_value.__aenter__.return_value.text = AsyncMock(
40-
return_value=responses
41-
)
37+
mock.return_value.__aenter__.return_value.text = AsyncMock(return_value=responses)
4238
if headers is not None:
4339
mock.return_value.__aenter__.return_value.headers = headers
4440

@@ -88,4 +84,4 @@ async def __aexit__(self, exc_type, exc, tb):
8884
pass
8985

9086
async def __aenter__(self):
91-
return self
87+
return self

tests/test_bios_attributes.py

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,24 @@
11
from unittest.mock import patch
22

3-
from tests.config import (ATTR_VALUE_BAD, ATTR_VALUE_OK, ATTRIBUTE_BAD,
4-
ATTRIBUTE_OK, BIOS_GET_ALL_OK, BIOS_GET_ONE_BAD,
5-
BIOS_GET_ONE_OK, BIOS_REGISTRY_OK, BIOS_RESPONSE_DIS,
6-
BIOS_RESPONSE_OK, BIOS_SET_BAD_ATTR,
7-
BIOS_SET_BAD_VALUE, BIOS_SET_OK, INIT_RESP,
8-
JOB_OK_RESP, RESET_TYPE_RESP, STATE_ON_RESP)
3+
from tests.config import (
4+
ATTR_VALUE_BAD,
5+
ATTR_VALUE_OK,
6+
ATTRIBUTE_BAD,
7+
ATTRIBUTE_OK,
8+
BIOS_GET_ALL_OK,
9+
BIOS_GET_ONE_BAD,
10+
BIOS_GET_ONE_OK,
11+
BIOS_REGISTRY_OK,
12+
BIOS_RESPONSE_DIS,
13+
BIOS_RESPONSE_OK,
14+
BIOS_SET_BAD_ATTR,
15+
BIOS_SET_BAD_VALUE,
16+
BIOS_SET_OK,
17+
INIT_RESP,
18+
JOB_OK_RESP,
19+
RESET_TYPE_RESP,
20+
STATE_ON_RESP,
21+
)
922
from tests.test_base import TestBase
1023

1124

@@ -43,9 +56,7 @@ def test_set_bios_attribute_ok(self, mock_get, mock_patch, mock_post, mock_delet
4356
@patch("aiohttp.ClientSession.post")
4457
@patch("aiohttp.ClientSession.patch")
4558
@patch("aiohttp.ClientSession.get")
46-
def test_set_bios_attribute_bad_value(
47-
self, mock_get, mock_patch, mock_post, mock_delete
48-
):
59+
def test_set_bios_attribute_bad_value(self, mock_get, mock_patch, mock_post, mock_delete):
4960
get_resp = [
5061
BIOS_REGISTRY_OK.replace("'", '"'),
5162
BIOS_RESPONSE_DIS,
@@ -70,9 +81,7 @@ def test_set_bios_attribute_bad_value(
7081
@patch("aiohttp.ClientSession.post")
7182
@patch("aiohttp.ClientSession.patch")
7283
@patch("aiohttp.ClientSession.get")
73-
def test_set_bios_attribute_bad_attr(
74-
self, mock_get, mock_patch, mock_post, mock_delete
75-
):
84+
def test_set_bios_attribute_bad_attr(self, mock_get, mock_patch, mock_post, mock_delete):
7685
get_resp = [
7786
BIOS_REGISTRY_OK.replace("'", '"'),
7887
BIOS_RESPONSE_DIS,

tests/test_bios_password.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
from unittest.mock import patch
22

3-
from tests.config import (BIOS_PASS_CHANGE_CMD_FAILED,
4-
BIOS_PASS_CHANGE_NOT_SUPPORTED, BIOS_PASS_RM_GOOD,
5-
BIOS_PASS_RM_MISS_ARG,
6-
BIOS_PASS_SET_CHECK_JOB_STATUS_BAD_CODE,
7-
BIOS_PASS_SET_CHECK_JOB_STATUS_FAIL_MSG,
8-
BIOS_PASS_SET_GOOD, BIOS_PASS_SET_MISS_ARG,
9-
BLANK_RESP, CHECK_JOB_STATUS_FAIL_MSG,
10-
CHECK_JOB_STATUS_UNEXPECTED_MSG_CONTENT, INIT_RESP,
11-
JOB_OK_RESP, RESET_TYPE_RESP, STATE_OFF_RESP,
12-
TASK_OK_RESP)
3+
from tests.config import (
4+
BIOS_PASS_CHANGE_CMD_FAILED,
5+
BIOS_PASS_CHANGE_NOT_SUPPORTED,
6+
BIOS_PASS_RM_GOOD,
7+
BIOS_PASS_RM_MISS_ARG,
8+
BIOS_PASS_SET_CHECK_JOB_STATUS_BAD_CODE,
9+
BIOS_PASS_SET_CHECK_JOB_STATUS_FAIL_MSG,
10+
BIOS_PASS_SET_GOOD,
11+
BIOS_PASS_SET_MISS_ARG,
12+
BLANK_RESP,
13+
CHECK_JOB_STATUS_FAIL_MSG,
14+
CHECK_JOB_STATUS_UNEXPECTED_MSG_CONTENT,
15+
INIT_RESP,
16+
JOB_OK_RESP,
17+
RESET_TYPE_RESP,
18+
STATE_OFF_RESP,
19+
TASK_OK_RESP,
20+
)
1321
from tests.test_base import TestBase
1422

1523

tests/test_boot_to.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
11
from unittest.mock import patch
22

3-
from tests.config import (BAD_DEVICE_NAME, BLANK_RESP, BOOT_MODE_RESP,
4-
BOOT_SEQ_RESP, BOOT_SEQ_RESPONSE_DIRECTOR,
5-
DEVICE_NIC_2, ERROR_DEV_NO_MATCH, INIT_RESP,
6-
JOB_OK_RESP, RESET_TYPE_RESP, RESPONSE_BOOT_TO,
7-
RESPONSE_BOOT_TO_SERVICE_BAD_REQUEST,
8-
RESPONSE_BOOT_TO_SERVICE_ERR_HANDLER,
9-
RESPONSE_BOOT_TO_SERVICE_UNAVAILABLE, STATE_ON_RESP)
3+
from tests.config import (
4+
BAD_DEVICE_NAME,
5+
BLANK_RESP,
6+
BOOT_MODE_RESP,
7+
BOOT_SEQ_RESP,
8+
BOOT_SEQ_RESPONSE_DIRECTOR,
9+
DEVICE_NIC_2,
10+
ERROR_DEV_NO_MATCH,
11+
INIT_RESP,
12+
JOB_OK_RESP,
13+
RESET_TYPE_RESP,
14+
RESPONSE_BOOT_TO,
15+
RESPONSE_BOOT_TO_SERVICE_BAD_REQUEST,
16+
RESPONSE_BOOT_TO_SERVICE_ERR_HANDLER,
17+
RESPONSE_BOOT_TO_SERVICE_UNAVAILABLE,
18+
STATE_ON_RESP,
19+
)
1020
from tests.test_base import TestBase
1121

1222

@@ -38,9 +48,7 @@ def test_boot_to(self, mock_get, mock_patch, mock_post, mock_delete):
3848
@patch("aiohttp.ClientSession.post")
3949
@patch("aiohttp.ClientSession.patch")
4050
@patch("aiohttp.ClientSession.get")
41-
def test_boot_to_service_unavailable(
42-
self, mock_get, mock_patch, mock_post, mock_delete
43-
):
51+
def test_boot_to_service_unavailable(self, mock_get, mock_patch, mock_post, mock_delete):
4452
boot_seq_resp_fmt = BOOT_SEQ_RESP % str(BOOT_SEQ_RESPONSE_DIRECTOR)
4553
get_resp = [
4654
BOOT_MODE_RESP,
@@ -87,9 +95,7 @@ def test_boot_to_bad_request(self, mock_get, mock_patch, mock_post, mock_delete)
8795
@patch("aiohttp.ClientSession.post")
8896
@patch("aiohttp.ClientSession.patch")
8997
@patch("aiohttp.ClientSession.get")
90-
def test_boot_to_service_err_handler(
91-
self, mock_get, mock_patch, mock_post, mock_delete
92-
):
98+
def test_boot_to_service_err_handler(self, mock_get, mock_patch, mock_post, mock_delete):
9399
boot_seq_resp_fmt = BOOT_SEQ_RESP % str(BOOT_SEQ_RESPONSE_DIRECTOR)
94100
get_resp = [
95101
BOOT_MODE_RESP,

tests/test_boot_to_mac.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
from unittest.mock import patch
22

3-
from tests.config import (BLANK_RESP, BOOT_MODE_RESP, BOOT_SEQ_RESP,
4-
BOOT_SEQ_RESPONSE_DIRECTOR, ETHERNET_INTERFACES_RESP,
5-
INIT_RESP, INTERFACES_PATH, INTERFACES_RESP,
6-
JOB_OK_RESP, MAC_ADDRESS, RESPONSE_BOOT_TO,
7-
RESPONSE_BOOT_TO_BAD_MAC)
3+
from tests.config import (
4+
BLANK_RESP,
5+
BOOT_MODE_RESP,
6+
BOOT_SEQ_RESP,
7+
BOOT_SEQ_RESPONSE_DIRECTOR,
8+
ETHERNET_INTERFACES_RESP,
9+
INIT_RESP,
10+
INTERFACES_PATH,
11+
INTERFACES_RESP,
12+
JOB_OK_RESP,
13+
MAC_ADDRESS,
14+
RESPONSE_BOOT_TO,
15+
RESPONSE_BOOT_TO_BAD_MAC,
16+
)
817
from tests.test_base import TestBase
918

1019

tests/test_boot_to_type.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
11
from unittest.mock import patch
22

3-
from tests.config import (BLANK_RESP, BOOT_MODE_RESP, BOOT_SEQ_RESP,
4-
BOOT_SEQ_RESPONSE_DIRECTOR, INIT_RESP,
5-
INTERFACES_PATH, JOB_OK_RESP, RESET_TYPE_RESP,
6-
RESPONSE_BOOT_TO, RESPONSE_BOOT_TO_BAD_FILE,
7-
RESPONSE_BOOT_TO_BAD_TYPE, RESPONSE_BOOT_TO_CUSTOM, RESPONSE_BOOT_TO_NO_FILE,
8-
STATE_ON_RESP)
3+
from tests.config import (
4+
BLANK_RESP,
5+
BOOT_MODE_RESP,
6+
BOOT_SEQ_RESP,
7+
BOOT_SEQ_RESPONSE_DIRECTOR,
8+
INIT_RESP,
9+
INTERFACES_PATH,
10+
JOB_OK_RESP,
11+
RESET_TYPE_RESP,
12+
RESPONSE_BOOT_TO,
13+
RESPONSE_BOOT_TO_BAD_FILE,
14+
RESPONSE_BOOT_TO_BAD_TYPE,
15+
RESPONSE_BOOT_TO_CUSTOM,
16+
RESPONSE_BOOT_TO_NO_FILE,
17+
STATE_ON_RESP,
18+
)
919
from tests.test_base import TestBase
1020

1121

0 commit comments

Comments
 (0)