141 lines
No EOL
4.6 KiB
Python
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() |