def test_to_dict_is_a_copy(self): metadata = ExtractedMetadata(summary="summary") metadata_dict = metadata.to_dict() metadata_dict["summary"] = "edited summary" # Ensure the metadata cannot be edited with its dict self.assertThat(metadata.get_summary(), Equals("summary"))
def test_to_dict_complete(self): metadata = ExtractedMetadata(summary="summary", description="description") self.assertThat( metadata.to_dict(), Equals({ "summary": "summary", "description": "description" }), )
def test_getters(self, tmp_work_path, prop, value): metadata = ExtractedMetadata(**{prop: value}) for p in self.properties: gotten = getattr(metadata, "get_{}".format(p))() if p == prop: assert gotten == value else: assert gotten is None
def test_update_merge(self): metadata = ExtractedMetadata(summary="summary") metadata2 = ExtractedMetadata(description="description") metadata.update(metadata2) self.assertThat(metadata.get_summary(), Equals("summary")) self.assertThat(metadata.get_description(), Equals("description"))
def _adopt_keys( config_data: Dict[str, Any], extracted_metadata: _metadata.ExtractedMetadata, prime_dir: str, ) -> Set[str]: ignored_keys = set() metadata_dict = extracted_metadata.to_dict() # desktop_file_paths and common_ids are special cases that will be handled # after all the top level snapcraft.yaml keys. ignore = ("desktop_file_paths", "common_id") overrides = ((k, v) for k, v in metadata_dict.items() if k not in ignore) for key, value in overrides: if key in config_data: ignored_keys.add(key) else: if key == "icon": # Extracted appstream icon paths will be relative to prime. icon = pathlib.Path(prime_dir, str(value)) if not icon.exists(): # Cannot find icon, ignore silently. continue if _find_icon_file() is None: # Already have icon file, do not overwrite. continue config_data[key] = value if "desktop_file_paths" in metadata_dict and "common_id" in metadata_dict: app_name = _get_app_name_from_common_id( config_data, str(metadata_dict["common_id"])) if app_name and not _desktop_file_exists(app_name): for desktop_file_path in [ os.path.join(prime_dir, d) for d in metadata_dict["desktop_file_paths"] ]: if os.path.exists(desktop_file_path): config_data["apps"][app_name][ "desktop"] = desktop_file_path break return ignored_keys
def test_to_dict_partial(self): metadata = ExtractedMetadata(summary="summary") self.assertThat(metadata.to_dict(), Equals({"summary": "summary"}))
def test_len(self): metadata = ExtractedMetadata(version="version") self.assertThat(len(metadata), Equals(1)) metadata = ExtractedMetadata(summary="summary", version="version") self.assertThat(len(metadata), Equals(2))
def test_not_eq(self): metadata1 = ExtractedMetadata(summary="summary") metadata2 = ExtractedMetadata(description="description") self.assertThat(metadata1, Not(Equals(metadata2)))
def test_empty_eq(self): self.assertThat(ExtractedMetadata(), Equals(ExtractedMetadata()))
def test_eq(self): metadata1 = ExtractedMetadata(summary="summary") metadata2 = ExtractedMetadata(summary="summary") self.assertThat(metadata1, Equals(metadata2))
def test_overlap(self): metadata = ExtractedMetadata(summary="summary", description="description") metadata2 = ExtractedMetadata(description="new description") self.assertThat(metadata.overlap(metadata2), Equals({"description"}))
def test_init(self): metadata = ExtractedMetadata(summary="summary") self.assertThat(metadata.get_summary(), Equals("summary")) self.assertThat(metadata.get_description(), Equals(None))