All checks were successful
Build, test and publish / verify (push) Successful in 1m41s
30 lines
1.5 KiB
Python
30 lines
1.5 KiB
Python
import json
|
|
from pathlib import Path
|
|
import subprocess
|
|
import tempfile
|
|
import unittest
|
|
|
|
SCRIPT = Path(__file__).resolve().parents[1] / 'runner/configure-docker.py'
|
|
|
|
class DockerConfigurationTest(unittest.TestCase):
|
|
def test_merge_preserves_existing_settings_and_is_idempotent(self):
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
path = Path(directory) / 'daemon.json'
|
|
original = {'features': {'buildkit': True}, 'insecure-registries': ['existing:5000']}
|
|
path.write_text(json.dumps(original))
|
|
for _ in range(2):
|
|
result = subprocess.run(['python3', str(SCRIPT), str(path)], capture_output=True, text=True)
|
|
self.assertEqual(0, result.returncode, result.stderr)
|
|
actual = json.loads(path.read_text())
|
|
self.assertEqual(original['features'], actual['features'])
|
|
self.assertEqual(['existing:5000', '192.168.2.28:3000'], actual['insecure-registries'])
|
|
self.assertEqual(original, json.loads(path.with_name('daemon.json.before-agiledancers').read_text()))
|
|
def test_invalid_configuration_is_left_unchanged(self):
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
path = Path(directory) / 'daemon.json'
|
|
original = '{"insecure-registries": "invalid"}'
|
|
path.write_text(original)
|
|
result = subprocess.run(['python3', str(SCRIPT), str(path)], capture_output=True, text=True)
|
|
self.assertNotEqual(0, result.returncode)
|
|
self.assertEqual(original, path.read_text())
|