This commit is contained in:
riglen
2026-04-21 16:56:06 +08:00
parent 05e0355e14
commit d5cfae22ea
14 changed files with 1404 additions and 15 deletions

61
tests/test_conf_parity.py Normal file
View File

@@ -0,0 +1,61 @@
from __future__ import annotations
import os
import sys
import unittest
from pathlib import Path
from tempfile import TemporaryDirectory
ROOT_DIR = Path(__file__).resolve().parent.parent
if str(ROOT_DIR) not in sys.path:
sys.path.insert(0, str(ROOT_DIR))
def _write_sample_source(path: Path) -> None:
path.write_text(
"\n".join(
[
"proxies:",
" - name: hk-demo",
" type: ss",
" server: 1.1.1.1",
" port: 443",
" cipher: aes-128-gcm",
" password: demo-pass",
" - name: us-demo",
" type: ss",
" server: 2.2.2.2",
" port: 443",
" cipher: aes-128-gcm",
" password: demo-pass",
]
),
encoding="utf-8",
)
class ConfParityTest(unittest.TestCase):
def test_compare_script_core_matches(self) -> None:
with TemporaryDirectory() as tmp:
sample = Path(tmp) / "sample.yaml"
_write_sample_source(sample)
os.environ["AIRPORT_A_URL"] = str(sample)
os.environ["AIRPORT_B_URL"] = str(sample)
os.environ["AIRPORT_C_URL"] = str(sample)
from scripts.compare_conf_outputs import compare_outputs
result = compare_outputs("mihomo", "default", "airport-a,airport-b", sample_source=sample)
self.assertTrue(result["thin"]["proxy_provider_match"])
self.assertTrue(result["thin"]["rule_provider_match"])
self.assertTrue(result["thin"]["group_name_match"])
self.assertTrue(result["bundle"]["group_name_match"])
self.assertTrue(result["bundle"]["proxy_count_match"])
self.assertTrue(result["bundle"]["rules_count_match"])
self.assertEqual(result["thin"]["legacy"]["rules_head"], result["thin"]["conf"]["rules_head"])
self.assertEqual(result["bundle"]["legacy"]["rules_tail"], result["bundle"]["conf"]["rules_tail"])
if __name__ == "__main__":
unittest.main()