Skip to content

Commit

Permalink
test: add test case for miot event
Browse files Browse the repository at this point in the history
  • Loading branch information
topsworld committed Dec 16, 2024
1 parent adb915d commit 419d76e
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 1 deletion.
6 changes: 5 additions & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,8 @@ jobs:
- name: Check rule format with pytest
run: |
pytest -v -s ./test/check_rule_format.py
pytest -v -s -m github ./test/check_rule_format.py
- name: Unit test with pytest
run: |
pytest -v -s -m github ./test/
3 changes: 3 additions & 0 deletions custom_components/xiaomi_home/miot/miot_ev.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,9 @@ def __set_handler(
if fd is None:
raise MIoTEvError('invalid params')

if not self._poll_fd:
raise MIoTEvError('event loop not started')

fd_key: str = str(id(fd))
fd_handler = self._fd_handlers.get(fd_key, None)

Expand Down
2 changes: 2 additions & 0 deletions test/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
miot
test_cache
5 changes: 5 additions & 0 deletions test/check_rule_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import json
from os import listdir, path
from typing import Optional
import pytest

SOURCE_DIR: str = path.dirname(path.abspath(__file__))

Expand Down Expand Up @@ -85,6 +86,7 @@ def bool_trans(d: dict) -> bool:
return True


@pytest.mark.github
def test_bool_trans():
data: dict = load_json_file(
path.join(
Expand All @@ -94,6 +96,7 @@ def test_bool_trans():
assert bool_trans(data)


@pytest.mark.github
def test_spec_filter():
data: dict = load_json_file(
path.join(
Expand All @@ -103,6 +106,7 @@ def test_spec_filter():
assert spec_filter(data)


@pytest.mark.github
def test_multi_lang():
data: dict = load_json_file(
path.join(
Expand All @@ -112,6 +116,7 @@ def test_multi_lang():
assert nested_3_dict_str_str(data)


@pytest.mark.github
def test_miot_i18n():
i18n_path: str = path.join(
SOURCE_DIR, '../custom_components/xiaomi_home/miot/i18n')
Expand Down
70 changes: 70 additions & 0 deletions test/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# -*- coding: utf-8 -*-
"""Pytest fixtures."""
import shutil
import pytest
from os import path, makedirs

TEST_ROOT_PATH: str = path.dirname(path.abspath(__file__))


@pytest.fixture(scope='session')
def test_lang() -> str:
return 'zh-Hans'


@pytest.fixture(scope='session')
def test_root_path() -> str:
return TEST_ROOT_PATH


@pytest.fixture(scope='session')
def test_cache_path() -> str:
cache_path: str = path.join(TEST_ROOT_PATH, 'test_cache')
makedirs(cache_path, exist_ok=True)
return cache_path


@pytest.fixture(scope='session', autouse=True)
def load_py_file():
# Copy py file to test folder
file_list = [
'common.py',
'const.py',
'miot_cloud.py',
'miot_error.py',
'miot_ev.py',
'miot_i18n.py',
'miot_lan.py',
'miot_mdns.py',
'miot_network.py',
'miot_spec.py',
'miot_storage.py']
makedirs(path.join(TEST_ROOT_PATH, 'miot'), exist_ok=True)
for file_name in file_list:
shutil.copyfile(
path.join(
TEST_ROOT_PATH, '../custom_components/xiaomi_home/miot',
file_name),
path.join(TEST_ROOT_PATH, 'miot', file_name))
print('\nloaded test py file, %s' % file_list)
# Copy spec files to test folder
shutil.copytree(
src=path.join(
TEST_ROOT_PATH, '../custom_components/xiaomi_home/miot/specs'),
dst=path.join(TEST_ROOT_PATH, 'miot/specs'),
dirs_exist_ok=True)
print('\nloaded spec test folder, miot/specs')
# Copy i18n files to test folder
shutil.copytree(
src=path.join(
TEST_ROOT_PATH, '../custom_components/xiaomi_home/miot/i18n'),
dst=path.join(TEST_ROOT_PATH, 'miot/i18n'),
dirs_exist_ok=True)
print('\nloaded i18n test folder, miot/i18n')
yield
# shutil.rmtree(path.join(TEST_ROOT_PATH, 'miot'))
# print('\nremoved test file, %s', file_list)
# shutil.rmtree(path.join(TEST_ROOT_PATH, 'miot/specs'))
# print('\nremoved test folder, %s', 'miot/specs')
# shutil.rmtree(path.join(TEST_ROOT_PATH, 'miot/i18n'))
# print('\nremoved test folder, %s', 'miot/i18n')
3 changes: 3 additions & 0 deletions test/pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[pytest]
markers:
github: tests for github actions

0 comments on commit 419d76e

Please sign in to comment.