deb-mock/tests/test_config.py
robojerk 5e7f4b0562
Some checks failed
Build Deb-Mock Package / build (push) Successful in 55s
Lint Code / Lint All Code (push) Failing after 3s
Test Deb-Mock Build / test (push) Failing after 53s
Fix sbuild integration and clean up codebase
- 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
2025-08-04 04:34:32 +00:00

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()