62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
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()
|