mirror of
https://github.com/modelscope/modelscope.git
synced 2026-08-29 01:58:59 +02:00
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
import importlib
|
|
import sys
|
|
import unittest
|
|
from unittest import mock
|
|
|
|
|
|
class LegacyCacheGuardTest(unittest.TestCase):
|
|
"""Tests for the modelscope-hub capability guard in the shim.
|
|
|
|
Network-free: only probes whether the loaded modelscope-hub exposes the
|
|
legacy-cache auto-detection capability and warns once when it does not.
|
|
"""
|
|
|
|
def setUp(self):
|
|
# NOTE: ``modelscope.hub.snapshot_download`` the *attribute* is shadowed
|
|
# by the re-exported function in ``modelscope.hub.__init__``; use
|
|
# importlib to obtain the actual submodule object.
|
|
sd = importlib.import_module('modelscope.hub.snapshot_download')
|
|
self.sd = sd
|
|
# Reset the fire-once probe cache before each test.
|
|
sd._legacy_cache_capability = None
|
|
|
|
def tearDown(self):
|
|
self.sd._legacy_cache_capability = None
|
|
|
|
def test_capability_present_no_warning(self):
|
|
sd = self.sd
|
|
# The real modelscope-hub DownloadManager has _find_legacy_repo_dir.
|
|
with mock.patch.object(sd.logger, 'warning') as warn:
|
|
sd._warn_if_legacy_cache_detection_unavailable()
|
|
self.assertTrue(sd._legacy_cache_capability)
|
|
warn.assert_not_called()
|
|
|
|
def test_capability_absent_warns_once(self):
|
|
sd = self.sd
|
|
|
|
class _OldDownloadManager: # lacks _find_legacy_repo_dir
|
|
pass
|
|
|
|
fake_module = mock.MagicMock()
|
|
fake_module.DownloadManager = _OldDownloadManager
|
|
|
|
with mock.patch.dict(sys.modules,
|
|
{'modelscope_hub._download': fake_module}):
|
|
with mock.patch.object(sd.logger, 'warning') as warn:
|
|
sd._warn_if_legacy_cache_detection_unavailable()
|
|
sd._warn_if_legacy_cache_detection_unavailable()
|
|
|
|
self.assertFalse(sd._legacy_cache_capability)
|
|
self.assertEqual(warn.call_count, 1) # fire-once
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|