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