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