deb-mock/tests/test_config.py
2025-08-03 22:16:04 +00:00

141 lines
No EOL
4.6 KiB
Python

"""
Tests for configuration management
"""
import unittest
import tempfile
import os
from pathlib import Path
from deb_mock.config import Config
from deb_mock.exceptions import ConfigurationError
class TestConfig(unittest.TestCase):
"""Test configuration management"""
def test_default_config(self):
"""Test default configuration creation"""
config = Config.default()
self.assertEqual(config.chroot_name, 'bookworm-amd64')
self.assertEqual(config.architecture, 'amd64')
self.assertEqual(config.suite, 'bookworm')
self.assertEqual(config.output_dir, './output')
self.assertFalse(config.keep_chroot)
self.assertFalse(config.verbose)
self.assertFalse(config.debug)
def test_custom_config(self):
"""Test custom configuration creation"""
config = Config(
chroot_name='sid-amd64',
architecture='arm64',
suite='sid',
output_dir='/tmp/build',
keep_chroot=True,
verbose=True
)
self.assertEqual(config.chroot_name, 'sid-amd64')
self.assertEqual(config.architecture, 'arm64')
self.assertEqual(config.suite, 'sid')
self.assertEqual(config.output_dir, '/tmp/build')
self.assertTrue(config.keep_chroot)
self.assertTrue(config.verbose)
def test_config_from_file(self):
"""Test loading configuration from file"""
config_data = """
chroot_name: sid-amd64
architecture: arm64
suite: sid
output_dir: /tmp/build
keep_chroot: true
verbose: true
"""
with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', delete=False) as f:
f.write(config_data)
config_file = f.name
try:
config = Config.from_file(config_file)
self.assertEqual(config.chroot_name, 'sid-amd64')
self.assertEqual(config.architecture, 'arm64')
self.assertEqual(config.suite, 'sid')
self.assertEqual(config.output_dir, '/tmp/build')
self.assertTrue(config.keep_chroot)
self.assertTrue(config.verbose)
finally:
os.unlink(config_file)
def test_config_to_dict(self):
"""Test converting configuration to dictionary"""
config = Config(
chroot_name='test-chroot',
architecture='amd64',
suite='bookworm'
)
config_dict = config.to_dict()
self.assertEqual(config_dict['chroot_name'], 'test-chroot')
self.assertEqual(config_dict['architecture'], 'amd64')
self.assertEqual(config_dict['suite'], 'bookworm')
self.assertIn('output_dir', config_dict)
self.assertIn('keep_chroot', config_dict)
def test_config_save(self):
"""Test saving configuration to file"""
config = Config(
chroot_name='test-chroot',
architecture='amd64',
suite='bookworm'
)
with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', delete=False) as f:
config_file = f.name
try:
config.save(config_file)
# Load the saved configuration
loaded_config = Config.from_file(config_file)
self.assertEqual(loaded_config.chroot_name, config.chroot_name)
self.assertEqual(loaded_config.architecture, config.architecture)
self.assertEqual(loaded_config.suite, config.suite)
finally:
if os.path.exists(config_file):
os.unlink(config_file)
def test_invalid_architecture(self):
"""Test validation of invalid architecture"""
config = Config(architecture='invalid-arch')
with self.assertRaises(ConfigurationError):
config.validate()
def test_invalid_suite(self):
"""Test validation of invalid suite"""
config = Config(suite='invalid-suite')
with self.assertRaises(ConfigurationError):
config.validate()
def test_get_paths(self):
"""Test path generation methods"""
config = Config(
chroot_dir='/var/lib/chroots',
output_dir='./output',
metadata_dir='./metadata'
)
self.assertEqual(config.get_chroot_path(), '/var/lib/chroots/bookworm-amd64')
self.assertEqual(config.get_output_path(), os.path.abspath('./output'))
self.assertEqual(config.get_metadata_path(), os.path.abspath('./metadata'))
if __name__ == '__main__':
unittest.main()