ObjectverseDiary / tests /test_merge_lora_adapter.py
qqyule's picture
Deploy latest Objectverse Diary from fa09aac
dd6cefc verified
Raw
History Blame Contribute Delete
1.69 kB
"""Tests for LoRA merge helper tooling."""
from __future__ import annotations
import json
import tempfile
import unittest
from pathlib import Path
from scripts.merge_lora_adapter import plan_merge, validate_adapter_source
class MergeLoraAdapterTest(unittest.TestCase):
def test_validate_local_adapter_requires_config_and_weights(self) -> None:
with tempfile.TemporaryDirectory() as tmp_dir:
adapter_dir = Path(tmp_dir)
(adapter_dir / "adapter_config.json").write_text("{}", encoding="utf-8")
with self.assertRaises(ValueError):
validate_adapter_source(adapter_dir, base_model="Qwen/Qwen2.5-1.5B-Instruct")
def test_plan_merge_dry_run_returns_summary_without_loading_model(self) -> None:
with tempfile.TemporaryDirectory() as tmp_dir:
adapter_dir = Path(tmp_dir) / "adapter"
adapter_dir.mkdir()
(adapter_dir / "adapter_config.json").write_text(
json.dumps({"base_model_name_or_path": "Qwen/Qwen2.5-1.5B-Instruct"}),
encoding="utf-8",
)
(adapter_dir / "adapter_model.safetensors").write_text("fake", encoding="utf-8")
summary = plan_merge(
base_model="Qwen/Qwen2.5-1.5B-Instruct",
adapter=adapter_dir,
output=Path(tmp_dir) / "merged",
dry_run=True,
)
self.assertTrue(summary["dry_run"])
self.assertFalse(summary["merged"])
self.assertEqual(summary["base_model"], "Qwen/Qwen2.5-1.5B-Instruct")
self.assertEqual(summary["adapter_type"], "local")
if __name__ == "__main__":
unittest.main()