# -*- coding: utf-8 -*- """Pytest fixtures.""" import shutil import pytest from os import path, makedirs TEST_ROOT_PATH: str = path.dirname(path.abspath(__file__)) TEST_FILES_PATH: str = path.join(TEST_ROOT_PATH, 'miot') TEST_CACHE_PATH: str = path.join(TEST_ROOT_PATH, 'test_cache') TEST_LANG: str = 'zh-Hans' TEST_UID: str = '123456789' TEST_CLOUD_SERVER: str = 'cn' @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(TEST_CACHE_PATH, exist_ok=True) makedirs(TEST_FILES_PATH, 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_FILES_PATH, file_name)) print('\nloaded test py files, ', 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_FILES_PATH, 'specs'), dirs_exist_ok=True) print('loaded spec test folder, specs') # Copy lan files to test folder shutil.copytree( src=path.join( TEST_ROOT_PATH, '../custom_components/xiaomi_home/miot/lan'), dst=path.join(TEST_FILES_PATH, 'lan'), dirs_exist_ok=True) print('loaded lan test folder, lan') # Copy i18n files to test folder shutil.copytree( src=path.join( TEST_ROOT_PATH, '../custom_components/xiaomi_home/miot/i18n'), dst=path.join(TEST_FILES_PATH, 'i18n'), dirs_exist_ok=True) print('loaded i18n test folder, i18n') yield if path.exists(TEST_FILES_PATH): shutil.rmtree(TEST_FILES_PATH) print('\nremoved test files, ', TEST_FILES_PATH) if path.exists(TEST_CACHE_PATH): shutil.rmtree(TEST_CACHE_PATH) print('removed test cache, ', TEST_CACHE_PATH) @pytest.fixture(scope='session') def test_root_path() -> str: return TEST_ROOT_PATH @pytest.fixture(scope='session') def test_cache_path() -> str: makedirs(TEST_CACHE_PATH, exist_ok=True) return TEST_CACHE_PATH @pytest.fixture(scope='session') def test_lang() -> str: return TEST_LANG @pytest.fixture(scope='session') def test_uid() -> str: return TEST_UID @pytest.fixture(scope='session') def test_cloud_server() -> str: return TEST_CLOUD_SERVER