Files

44 lines
2.3 KiB
Python
Raw Permalink Normal View History

import hashlib
from pathlib import Path
import tempfile
import unittest
from console.settings import Settings
from console.store import Store
from console.catalog import discover
from deploy.refresh_catalog import refresh, restore
class CatalogRefreshTests(unittest.TestCase):
def test_refresh_preserves_options_and_history_and_restores_exactly(self):
with tempfile.TemporaryDirectory() as temporary:
base = Path(temporary); source = base/'source'; source.mkdir()
(source/'old.py').write_text('print(1)')
settings = Settings(base/'runtime', [{'id':'suite','path':str(source)}]); store = Store(settings)
discover(store)
old = store.scripts()[0]; old.update(enabled=True,status='ready',reason='')
old['config']['timeout_seconds'] = 457
store.save_script(old)
old_runs = store.runs()
(source/'old.py').write_text('print(5)')
(source/'new.py').write_text('print(2)'); (source/'blocked.py').write_text('print(3)')
(source/'support.py').write_text('print(4)')
settings.native_catalog['profiles'] = [
{'id':name,'source_group':'suite','entry':name+'.py','cwd':str(source),'interpreter':'/usr/bin/python3',
'user':'root','available':name!='blocked','unavailable_reason':'原服务预设已过期','parameters':[]}
for name in ('old','new','blocked')]
snapshot = base/'migration.json'
self.assertFalse(refresh(store, snapshot)['applied'])
self.assertFalse(snapshot.exists())
refresh(store, snapshot, True)
by_name = {s['name']:s for s in store.scripts()}
self.assertEqual(by_name['old.py']['config']['timeout_seconds'],457)
self.assertFalse(by_name['old.py']['enabled'])
self.assertEqual(by_name['old.py']['version'],2)
self.assertTrue(by_name['new.py']['enabled'])
self.assertFalse(by_name['blocked.py']['enabled'])
self.assertFalse(by_name['support.py']['enabled'])
self.assertEqual(store.runs(),old_runs)
self.assertEqual(refresh(store,base/'again.json',True)['changed'],0)
restore(store,snapshot)
self.assertEqual(store.scripts(),[old])