def test_test_conditions(self): installer_mock = Mock(spec=installer.Installer) test_conditions = fomod.Conditions() test_conditions["file"] = fomod.FileType.MISSING test_conditions["flag"] = "value" test_conditions[None] = "version" test_conditions[fomod.Conditions()] = None test_conditions.type = fomod.ConditionType.AND installer.Installer._test_conditions(installer_mock, test_conditions) installer_mock._test_file_condition.assert_called_once_with( "file", fomod.FileType.MISSING) installer_mock._test_flag_condition.assert_called_once_with( "flag", "value") installer_mock._test_version_condition.assert_called_once_with( "version") installer_mock._test_conditions.assert_called_once() installer_mock._raise_failed_conditions.assert_not_called() installer_mock.reset_mock() installer_mock._test_file_condition.side_effect = installer._FailedCondition installer.Installer._test_conditions(installer_mock, test_conditions) installer_mock._raise_failed_conditions.assert_called_once() installer_mock.reset_mock() test_conditions.type = fomod.ConditionType.OR installer.Installer._test_conditions(installer_mock, test_conditions) installer_mock._raise_failed_conditions.assert_not_called() installer_mock._test_flag_condition.side_effect = installer._FailedCondition installer_mock._test_version_condition.side_effect = installer._FailedCondition installer_mock._test_conditions.side_effect = installer._FailedCondition installer.Installer._test_conditions(installer_mock, test_conditions) installer_mock._raise_failed_conditions.assert_called_once()
def test_files(self): installer_mock = Mock(spec=installer.Installer) installer_mock.path = None files1 = fomod.Files() file1 = fomod.File("file", attrib={"priority": "2"}) file1.src = "source1" file1.dst = "dest1" files1._file_list = [file1] installer_mock.root = Mock(spec=fomod.Root) installer_mock.root.files = files1 files2 = fomod.Files() file2 = fomod.File("file", attrib={"priority": "0"}) file2.src = "source2" file2.dst = "dest1" file3 = fomod.File("file", attrib={"priority": "0"}) file3.src = "source3" file3.dst = "dest2" files2._file_list = [file2, file3] option2 = fomod.Option() option2.files = files2 installer_mock._previous_pages = OrderedDict([(None, [option2])]) files3 = fomod.Files() file4 = fomod.File("file", attrib={"priority": "1"}) file4.src = "source4" file4.dst = "dest3" files3._file_list = [file4] installer_mock.root.file_patterns = {fomod.Conditions(): files3} expected = {"source1": "dest1", "source3": "dest2", "source4": "dest3"} assert installer.Installer.files(installer_mock) == expected
def test_to_string(self): self.cond.type = fomod.ConditionType.OR self.cond[None] = "1.0" self.cond["boop"] = "beep" nest = fomod.Conditions() nest.type = fomod.ConditionType.AND nest["file"] = fomod.FileType.MISSING self.cond[nest] = None expected = textwrap.dedent("""\ <dependencies operator="Or"> <gameDependency version="1.0"/> <flagDependency flag="boop" value="beep"/> <dependencies operator="And"> <fileDependency file="file" state="Missing"/> </dependencies> </dependencies>""") assert self.cond.to_string() == expected
def test_to_string(self): self.type.default = fomod.OptionType.REQUIRED cond = fomod.Conditions() cond["flag"] = "value" self.type[cond] = fomod.OptionType.RECOMMENDED text = cond.to_string() expected = textwrap.dedent("""\ <dependencyType> <defaultType name="Required"/> <patterns> <pattern> {} <type name="Recommended"/> </pattern> </patterns> </dependencyType>""".format( textwrap.indent(text, " " * 5 + " "))) assert self.type.to_string() == expected
def test_to_string(self): cond = fomod.Conditions() cond["flag"] = "value" cond_text = cond.to_string() files = fomod.Files() files["src"] = "dst" files_text = files.to_string() self.set[cond] = files expected = textwrap.dedent("""\ <conditionalFileInstalls> <patterns> <pattern> {} {} </pattern> </patterns> </conditionalFileInstalls>""".format( textwrap.indent(cond_text, " " * 5 + " "), textwrap.indent(files_text, " " * 5 + " "), )) assert self.set.to_string() == expected
def test_validate(self): expected = fomod.ValidationWarning( "Empty Conditions", "This element should have at least one condition present.", self.cond, critical=True, ) assert expected in self.cond.validate() nest = fomod.Conditions() self.cond[nest] = None expected = fomod.ValidationWarning( "Empty Conditions", "This element should have at least one condition present.", nest, critical=True, ) assert expected in self.cond.validate() self.cond[None] = "" expected = fomod.ValidationWarning( "Empty Version Dependency", "This version dependency is empty and may not work correctly.", self.cond, ) assert expected in self.cond.validate() self.cond[""] = fomod.FileType.ACTIVE expected = fomod.ValidationWarning( "Empty File Dependency", "This file dependency depends on no file, may not work correctly.", self.cond, ) assert expected in self.cond.validate() self.cond._tag = "moduleDependencies" self.cond["boop"] = "beep" expected = fomod.ValidationWarning( "Useless Flags", "Flag boop shouldn't be used here since it can't have been set.", self.cond, ) assert expected in self.cond.validate()
def test_installeroption(): test_option = fomod.Option() test_option.name = "name" test_option.description = "description" test_option.image = "image" test_option.type = fomod.OptionType.REQUIRED inst_option = installer.InstallerOption(None, test_option) assert inst_option._object is test_option assert inst_option._installer is None assert inst_option.name == "name" assert inst_option.description == "description" assert inst_option.image == "image" assert inst_option.type is fomod.OptionType.REQUIRED test_option.type = fomod.Type() test_option.type.default = fomod.OptionType.NOTUSABLE installer_mock = Mock(spec=installer.Installer) inst_option = installer.InstallerOption(installer_mock, test_option) assert inst_option._installer is installer_mock assert inst_option.type is fomod.OptionType.NOTUSABLE test_option.type[fomod.Conditions()] = fomod.OptionType.COULDBEUSABLE inst_option = installer.InstallerOption(installer_mock, test_option) assert inst_option.type is fomod.OptionType.COULDBEUSABLE
def test_conditions(self): test = fomod.Conditions() self.root.conditions = test assert self.root.conditions is test assert self.root._conditions is test assert test._tag == "moduleDependencies"
def test_conditions(self): test = fomod.Conditions() self.page.conditions = test assert self.page.conditions is test assert self.page._conditions is test
def setup_method(self): self.cond = fomod.Conditions()