51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
"""项目内置 ADB 路径与完整性检查测试。"""
|
|
|
|
import os
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
from unittest.mock import patch
|
|
|
|
from src.adb_runtime import (
|
|
BundledAdbError,
|
|
REQUIRED_ADB_FILES,
|
|
bundled_adb_path,
|
|
configure_bundled_adb_environment,
|
|
validate_bundled_adb,
|
|
)
|
|
|
|
|
|
class BundledAdbRuntimeTest(unittest.TestCase):
|
|
def test_project_adb_is_complete(self):
|
|
adb_path = validate_bundled_adb()
|
|
|
|
self.assertEqual(adb_path, bundled_adb_path())
|
|
self.assertTrue(adb_path.is_absolute())
|
|
for file_name in REQUIRED_ADB_FILES:
|
|
self.assertTrue((adb_path.parent / file_name).is_file())
|
|
|
|
def test_missing_file_reports_name_without_path_fallback(self):
|
|
with tempfile.TemporaryDirectory() as directory, patch(
|
|
"src.adb_runtime.app_dir", return_value=Path(directory)
|
|
):
|
|
with self.assertRaisesRegex(BundledAdbError, "adb.exe"):
|
|
validate_bundled_adb()
|
|
|
|
def test_configure_forces_adbutils_to_use_project_adb(self):
|
|
old_value = os.environ.get("ADBUTILS_ADB_PATH")
|
|
try:
|
|
configured = configure_bundled_adb_environment()
|
|
self.assertEqual(
|
|
os.environ["ADBUTILS_ADB_PATH"],
|
|
str(configured),
|
|
)
|
|
finally:
|
|
if old_value is None:
|
|
os.environ.pop("ADBUTILS_ADB_PATH", None)
|
|
else:
|
|
os.environ["ADBUTILS_ADB_PATH"] = old_value
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|