#!/usr/bin/env python3 import unittest from jinja2 import Template class TestPackagePreinstall(unittest.TestCase): def setUp(self): """Set up test fixtures.""" # Create a simplified test template with just the packages section self.packages_template = Template(""" packages: - sudo {% if performance_preinstall_packages | default(false) %} # Universal tools always needed by Algo (performance optimization) - git - screen - apparmor-utils - uuid-runtime - coreutils - iptables-persistent - cgroup-tools {% endif %} """) def test_preinstall_disabled_by_default(self): """Test that package pre-installation is disabled by default.""" # Test with default config (performance_preinstall_packages not set) rendered = self.packages_template.render({}) # Should only have sudo package self.assertIn("- sudo", rendered) self.assertNotIn("- git", rendered) self.assertNotIn("- screen", rendered) self.assertNotIn("- apparmor-utils", rendered) def test_preinstall_enabled(self): """Test that package pre-installation works when enabled.""" # Test with pre-installation enabled rendered = self.packages_template.render({"performance_preinstall_packages": True}) # Should have sudo and all universal packages self.assertIn("- sudo", rendered) self.assertIn("- git", rendered) self.assertIn("- screen", rendered) self.assertIn("- apparmor-utils", rendered) self.assertIn("- uuid-runtime", rendered) self.assertIn("- coreutils", rendered) self.assertIn("- iptables-persistent", rendered) self.assertIn("- cgroup-tools", rendered) def test_preinstall_disabled_explicitly(self): """Test that package pre-installation is disabled when set to false.""" # Test with pre-installation explicitly disabled rendered = self.packages_template.render({"performance_preinstall_packages": False}) # Should only have sudo package self.assertIn("- sudo", rendered) self.assertNotIn("- git", rendered) self.assertNotIn("- screen", rendered) self.assertNotIn("- apparmor-utils", rendered) def test_package_count(self): """Test that the correct number of packages are included.""" # Default: should only have sudo (1 package) rendered_default = self.packages_template.render({}) lines_default = [line.strip() for line in rendered_default.split("\n") if line.strip().startswith("- ")] self.assertEqual(len(lines_default), 1) # Enabled: should have sudo + 7 universal packages (8 total) rendered_enabled = self.packages_template.render({"performance_preinstall_packages": True}) lines_enabled = [line.strip() for line in rendered_enabled.split("\n") if line.strip().startswith("- ")] self.assertEqual(len(lines_enabled), 8) if __name__ == "__main__": unittest.main()