def system_test(self): conf = AnacondaConfiguration.from_defaults() opts, _deprecated = self._parseCmdline([]) conf.set_from_opts(opts) self.assertEqual(conf.system._is_boot_iso, True) self.assertEqual(conf.system._is_live_os, False) self.assertEqual(conf.system._is_unknown, False) opts, _deprecated = self._parseCmdline(['--liveinst']) conf.set_from_opts(opts) self.assertEqual(conf.system._is_boot_iso, False) self.assertEqual(conf.system._is_live_os, True) self.assertEqual(conf.system._is_unknown, False) opts, _deprecated = self._parseCmdline(['--dirinstall=/what/ever']) conf.set_from_opts(opts) self.assertEqual(conf.system._is_boot_iso, False) self.assertEqual(conf.system._is_live_os, False) self.assertEqual(conf.system._is_unknown, True) opts, _deprecated = self._parseCmdline(['--image=/what/ever.img']) conf.set_from_opts(opts) self.assertEqual(conf.system._is_boot_iso, False) self.assertEqual(conf.system._is_live_os, False) self.assertEqual(conf.system._is_unknown, True)
def target_test(self): conf = AnacondaConfiguration.from_defaults() opts, _deprecated = self._parseCmdline([]) conf.set_from_opts(opts) self.assertEqual(conf.target.is_hardware, True) self.assertEqual(conf.target.is_image, False) self.assertEqual(conf.target.is_directory, False) self.assertEqual(conf.target.physical_root, "/mnt/sysimage") opts, _deprecated = self._parseCmdline(['--image=/what/ever.img']) conf.set_from_opts(opts) self.assertEqual(conf.target.is_hardware, False) self.assertEqual(conf.target.is_image, True) self.assertEqual(conf.target.is_directory, False) self.assertEqual(conf.target.physical_root, "/mnt/sysimage") opts, _deprecated = self._parseCmdline(['--dirinstall=/what/ever']) conf.set_from_opts(opts) self.assertEqual(conf.target.is_hardware, False) self.assertEqual(conf.target.is_image, False) self.assertEqual(conf.target.is_directory, True) self.assertEqual(conf.target.physical_root, "/what/ever")
def default_write_test(self): conf = AnacondaConfiguration.from_defaults() with tempfile.NamedTemporaryFile("r+") as f: conf.write(f.name) f.flush() self.assertTrue(f.read(), "The file shouldn't be empty.")
def storage_test(self): conf = AnacondaConfiguration.from_defaults() opts, _deprecated = self._parseCmdline([]) conf.set_from_opts(opts) self.assertEqual(conf.storage.dmraid, True) self.assertEqual(conf.storage.ibft, True) opts, _deprecated = self._parseCmdline(['--nodmraid', '--ibft']) conf.set_from_opts(opts) self.assertEqual(conf.storage.dmraid, False) self.assertEqual(conf.storage.ibft, True)
def _check_default_product(self, product_name, variant_name, file_names): """Check a default product.""" self._check_product( product_name, variant_name, [os.path.join(PRODUCT_DIR, path) for path in file_names] ) config = AnacondaConfiguration.from_defaults() paths = self._loader.collect_configurations(product_name, variant_name) for path in paths: config.read(path) config.validate()
def kickstart_modules_test(self): conf = AnacondaConfiguration.from_defaults() self.assertEqual( set(conf.anaconda.kickstart_modules), set(service.service_name for service in ( services.TIMEZONE, services.NETWORK, services.LOCALIZATION, services.SECURITY, services.USERS, services.PAYLOAD, services.STORAGE, services.SERVICES )) )
def set_from_files_test(self): conf = AnacondaConfiguration.from_defaults() paths = [] with tempfile.TemporaryDirectory() as d: # Add nonexistent file. nonexistent = os.path.join(d, "nonexistent") paths.append(nonexistent) # Add empty directory. empty_dir = os.path.join(d, "empty") os.mkdir(empty_dir) paths.append(empty_dir) # Add existing file. existing = os.path.join(d, "a.conf") paths.append(existing) with open(existing, mode="w") as f: f.write("") # Add non-empty directory. conf_dir = os.path.join(d, "conf.d") os.mkdir(conf_dir) paths.append(conf_dir) for name in ["b.conf", "c.conf", "d"]: with open(os.path.join(conf_dir, name), mode="w") as f: f.write("") # Check the paths. self.assertEqual( [os.path.relpath(path, d) for path in paths], ["nonexistent", "empty", "a.conf", "conf.d"] ) conf._sources = [] conf.set_from_files(paths) # Check the loaded files. self.assertEqual( [os.path.relpath(path, d) for path in conf.get_sources()], ["a.conf", "conf.d/b.conf", "conf.d/c.conf"] )
def default_validation_test(self): conf = AnacondaConfiguration.from_defaults() conf.validate() # Set invalid value. parser = conf.get_parser() parser["Anaconda"]["debug"] = "string" with self.assertRaises(ConfigurationError): conf.validate() # Remove a required option. parser.remove_option("Anaconda", "debug") with self.assertRaises(ConfigurationError): conf.validate() # Remove a required section. parser.remove_section("Anaconda") with self.assertRaises(ConfigurationError): conf.validate()
def test_set_from_requested_profile(self): conf = AnacondaConfiguration.from_defaults() # Test an unknown requested profile. with self.assertRaises(ConfigurationError) as cm: conf.set_from_profile("unknown-profile") expected = "Unable to find any suitable configuration files " \ "for the 'unknown-profile' profile." self.assertEqual(str(cm.exception), expected) # Test a known requested profile. conf.set_from_profile("fedora-workstation") self._check_configuration_sources(conf, [ "anaconda.conf", "profile.d/fedora.conf", "profile.d/fedora-workstation.conf" ])
def test_set_from_detected_profile(self): conf = AnacondaConfiguration.from_defaults() # Test unknown os-release values. with self.assertLogs(level="WARNING") as cm: conf.set_from_detected_profile("unknown-os", "unknown-variant") expected = \ "Unable to find any suitable configuration files for the detected " \ "os-release values. No profile configuration will be used." self.assertIn(expected, "\n".join(cm.output)) # Test known os-release values. conf.set_from_detected_profile("fedora", "workstation") self._check_configuration_sources(conf, [ "anaconda.conf", "profile.d/fedora.conf", "profile.d/fedora-workstation.conf" ])
def test_default_password_policies(self): conf = AnacondaConfiguration.from_defaults() self.assertEqual(conf.ui.password_policies, [ { 'name': 'root', "quality": 1, "length": 6, }, { 'name': 'user', "quality": 1, "length": 6, "empty": True, }, { 'name': 'luks', "quality": 1, "length": 6, }, ])
def test_target_nosave(self): conf = AnacondaConfiguration.from_defaults() opts, _removed = self._parseCmdline([]) conf.set_from_opts(opts) assert conf.target.can_copy_input_kickstart is True assert conf.target.can_save_installation_logs is True assert conf.target.can_save_output_kickstart is True conf = AnacondaConfiguration.from_defaults() opts, _removed = self._parseCmdline(['--nosave=all']) conf.set_from_opts(opts) assert conf.target.can_copy_input_kickstart is False assert conf.target.can_save_installation_logs is False assert conf.target.can_save_output_kickstart is False conf = AnacondaConfiguration.from_defaults() opts, _removed = self._parseCmdline(['--nosave=all_ks']) conf.set_from_opts(opts) assert conf.target.can_copy_input_kickstart is False assert conf.target.can_save_installation_logs is True assert conf.target.can_save_output_kickstart is False conf = AnacondaConfiguration.from_defaults() opts, _removed = self._parseCmdline(['--nosave=logs']) conf.set_from_opts(opts) assert conf.target.can_copy_input_kickstart is True assert conf.target.can_save_installation_logs is False assert conf.target.can_save_output_kickstart is True conf = AnacondaConfiguration.from_defaults() opts, _removed = self._parseCmdline(['--nosave=input_ks']) conf.set_from_opts(opts) assert conf.target.can_copy_input_kickstart is False assert conf.target.can_save_installation_logs is True assert conf.target.can_save_output_kickstart is True conf = AnacondaConfiguration.from_defaults() opts, _removed = self._parseCmdline(['--nosave=output_ks']) conf.set_from_opts(opts) assert conf.target.can_copy_input_kickstart is True assert conf.target.can_save_installation_logs is True assert conf.target.can_save_output_kickstart is False
def test_kickstart_modules(self): """Test the kickstart_modules option.""" message = \ "The kickstart_modules configuration option is " \ "deprecated and will be removed in in the future." conf = AnacondaConfiguration.from_defaults() assert conf.anaconda.activatable_modules == [ "org.fedoraproject.Anaconda.Modules.*", "org.fedoraproject.Anaconda.Addons.*" ] parser = conf.get_parser() parser.read_string( dedent(""" [Anaconda] kickstart_modules = org.fedoraproject.Anaconda.Modules.Timezone org.fedoraproject.Anaconda.Modules.Localization org.fedoraproject.Anaconda.Modules.Security """)) with pytest.warns(DeprecationWarning, match=message): activatable_modules = conf.anaconda.activatable_modules assert activatable_modules == [ "org.fedoraproject.Anaconda.Modules.Timezone", "org.fedoraproject.Anaconda.Modules.Localization", "org.fedoraproject.Anaconda.Modules.Security", "org.fedoraproject.Anaconda.Addons.*" ] for pattern in activatable_modules: self._check_pattern(pattern)
def test_optional_modules(self): """Test the optional_modules option.""" conf = AnacondaConfiguration.from_defaults() for pattern in conf.anaconda.optional_modules: self._check_pattern(pattern)
def bootloader_test(self): conf = AnacondaConfiguration.from_defaults() self.assertIn("selinux", conf.bootloader.preserved_arguments)
def default_read_test(self): AnacondaConfiguration.from_defaults()
def test_addons_enabled_modules(self): """Test the addons_enabled option.""" message = \ "The addons_enabled configuration option is " \ "deprecated and will be removed in in the future." conf = AnacondaConfiguration.from_defaults() assert conf.anaconda.forbidden_modules == [] parser = conf.get_parser() parser.read_string( dedent(""" [Anaconda] forbidden_modules = org.fedoraproject.Anaconda.Modules.Timezone org.fedoraproject.Anaconda.Modules.Localization org.fedoraproject.Anaconda.Modules.Security """)) assert conf.anaconda.forbidden_modules == [ "org.fedoraproject.Anaconda.Modules.Timezone", "org.fedoraproject.Anaconda.Modules.Localization", "org.fedoraproject.Anaconda.Modules.Security", ] parser.read_string( dedent(""" [Anaconda] addons_enabled = True """)) with pytest.warns(DeprecationWarning, match=message): forbidden_modules = conf.anaconda.forbidden_modules assert forbidden_modules == [ "org.fedoraproject.Anaconda.Modules.Timezone", "org.fedoraproject.Anaconda.Modules.Localization", "org.fedoraproject.Anaconda.Modules.Security", ] parser.read_string( dedent(""" [Anaconda] addons_enabled = False """)) with pytest.warns(DeprecationWarning, match=message): forbidden_modules = conf.anaconda.forbidden_modules assert forbidden_modules == [ "org.fedoraproject.Anaconda.Addons.*", "org.fedoraproject.Anaconda.Modules.Timezone", "org.fedoraproject.Anaconda.Modules.Localization", "org.fedoraproject.Anaconda.Modules.Security", ] for pattern in forbidden_modules: self._check_pattern(pattern)
def default_source_test(self): conf = AnacondaConfiguration.from_defaults() sources = conf.get_sources() self.assertEqual(len(sources), 1) self.assertEqual(sources[0], os.environ.get("ANACONDA_CONFIG_TMP"))
def source_test(self): conf = AnacondaConfiguration() sources = conf.get_sources() self.assertEqual(sources, [])
def test_default_installation_source(self): conf = AnacondaConfiguration.from_defaults() self.assertEqual(conf.payload.default_source, SOURCE_TYPE_CLOSEST_MIRROR)
def test_default_read(self): AnacondaConfiguration.from_defaults()
def test_set_from_detected_product(self): conf = AnacondaConfiguration.from_defaults() conf.set_from_product(get_os_release_value("NAME"))
def test_bootloader(self): conf = AnacondaConfiguration.from_defaults() assert "selinux" in conf.bootloader.preserved_arguments
def test_source(self): conf = AnacondaConfiguration() sources = conf.get_sources() assert sources == []
def test_default_source(self): conf = AnacondaConfiguration.from_defaults() sources = conf.get_sources() assert len(sources) == 1 assert sources[0] == os.environ.get("ANACONDA_CONFIG_TMP")