- Fix environment variable handling in sbuild wrapper - Remove unsupported --log-dir and --env options from sbuild command - Clean up unused imports and fix linting issues - Organize examples directory with official Debian hello package - Fix YAML formatting (trailing spaces, newlines) - Remove placeholder example files - All tests passing (30/30) - Successfully tested build with official Debian hello package
133 lines
4.3 KiB
Python
133 lines
4.3 KiB
Python
"""
|
|
Tests for configuration management
|
|
"""
|
|
|
|
import os
|
|
import tempfile
|
|
import unittest
|
|
|
|
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()
|