mirror of
https://github.com/miurahr/aqtinstall.git
synced 2025-12-18 13:14:37 +03:00
archives: do not keep update.xml text in field
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
This commit is contained in:
@@ -38,9 +38,6 @@ class TargetConfig:
|
|||||||
arch: str
|
arch: str
|
||||||
os_name: str
|
os_name: str
|
||||||
|
|
||||||
def __post_init__(self):
|
|
||||||
self.version = str(self.version)
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class QtPackage:
|
class QtPackage:
|
||||||
@@ -225,20 +222,19 @@ class QtArchives:
|
|||||||
f"qt{self.version.major}_{self._version_str()}{self._arch_ext()}",
|
f"qt{self.version.major}_{self._version_str()}{self._arch_ext()}",
|
||||||
)
|
)
|
||||||
update_xml_path = posixpath.join(os_target_folder, "Updates.xml")
|
update_xml_path = posixpath.join(os_target_folder, "Updates.xml")
|
||||||
self._download_update_xml(update_xml_path)
|
update_xml_text = self._download_update_xml(update_xml_path)
|
||||||
self._parse_update_xml(os_target_folder, self._target_packages())
|
self._parse_update_xml(os_target_folder, update_xml_text, self._target_packages())
|
||||||
|
|
||||||
def _download_update_xml(self, update_xml_path):
|
def _download_update_xml(self, update_xml_path):
|
||||||
"""Hook for unit test."""
|
"""Hook for unit test."""
|
||||||
xml_hash = get_hash(update_xml_path, "sha256", self.timeout)
|
xml_hash = get_hash(update_xml_path, "sha256", self.timeout)
|
||||||
update_xml_text = getUrl(posixpath.join(self.base, update_xml_path), self.timeout, xml_hash)
|
return getUrl(posixpath.join(self.base, update_xml_path), self.timeout, xml_hash)
|
||||||
self.update_xml_text = update_xml_text
|
|
||||||
|
|
||||||
def _parse_update_xml(self, os_target_folder, target_packages: Optional[ModuleToPackage]):
|
def _parse_update_xml(self, os_target_folder, update_xml_text, target_packages: Optional[ModuleToPackage]):
|
||||||
if not target_packages:
|
if not target_packages:
|
||||||
target_packages = ModuleToPackage({})
|
target_packages = ModuleToPackage({})
|
||||||
try:
|
try:
|
||||||
self.update_xml = ElementTree.fromstring(self.update_xml_text)
|
self.update_xml = ElementTree.fromstring(update_xml_text)
|
||||||
except ElementTree.ParseError as perror:
|
except ElementTree.ParseError as perror:
|
||||||
raise ArchiveListError(f"Downloaded metadata is corrupted. {perror}") from perror
|
raise ArchiveListError(f"Downloaded metadata is corrupted. {perror}") from perror
|
||||||
|
|
||||||
@@ -324,7 +320,7 @@ class QtArchives:
|
|||||||
:return: configured target and its version with arch
|
:return: configured target and its version with arch
|
||||||
:rtype: TargetConfig object
|
:rtype: TargetConfig object
|
||||||
"""
|
"""
|
||||||
return TargetConfig(self.version, self.target, self.arch, self.os_name)
|
return TargetConfig(str(self.version), self.target, self.arch, self.os_name)
|
||||||
|
|
||||||
|
|
||||||
class SrcDocExamplesArchives(QtArchives):
|
class SrcDocExamplesArchives(QtArchives):
|
||||||
@@ -442,12 +438,12 @@ class ToolArchives(QtArchives):
|
|||||||
self.tool_name,
|
self.tool_name,
|
||||||
)
|
)
|
||||||
update_xml_url = posixpath.join(os_target_folder, "Updates.xml")
|
update_xml_url = posixpath.join(os_target_folder, "Updates.xml")
|
||||||
self._download_update_xml(update_xml_url) # call super method.
|
update_xml_text = self._download_update_xml(update_xml_url) # call super method.
|
||||||
self._parse_update_xml(os_target_folder, None)
|
self._parse_update_xml(os_target_folder, update_xml_text, None)
|
||||||
|
|
||||||
def _parse_update_xml(self, os_target_folder, *ignored):
|
def _parse_update_xml(self, os_target_folder, update_xml_text, *ignored):
|
||||||
try:
|
try:
|
||||||
self.update_xml = ElementTree.fromstring(self.update_xml_text)
|
self.update_xml = ElementTree.fromstring(update_xml_text)
|
||||||
except ElementTree.ParseError as perror:
|
except ElementTree.ParseError as perror:
|
||||||
raise ArchiveListError(f"Downloaded metadata is corrupted. {perror}") from perror
|
raise ArchiveListError(f"Downloaded metadata is corrupted. {perror}") from perror
|
||||||
|
|
||||||
|
|||||||
@@ -29,8 +29,7 @@ def setup():
|
|||||||
)
|
)
|
||||||
def test_parse_update_xml(monkeypatch, os_name, version, arch, datafile):
|
def test_parse_update_xml(monkeypatch, os_name, version, arch, datafile):
|
||||||
def _mock(self, url):
|
def _mock(self, url):
|
||||||
with open(os.path.join(os.path.dirname(__file__), "data", datafile), "r") as f:
|
return (Path(__file__).parent / "data" / datafile).read_text("utf-8")
|
||||||
self.update_xml_text = f.read()
|
|
||||||
|
|
||||||
monkeypatch.setattr(QtArchives, "_download_update_xml", _mock)
|
monkeypatch.setattr(QtArchives, "_download_update_xml", _mock)
|
||||||
|
|
||||||
@@ -101,10 +100,8 @@ def test_qtarchive_parse_corrupt_xmlfile(monkeypatch, corrupt_xmlfile, archives_
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
def test_qt_archives_modules(monkeypatch, arch, requested_module_names, has_nonexistent_modules: bool):
|
def test_qt_archives_modules(monkeypatch, arch, requested_module_names, has_nonexistent_modules: bool):
|
||||||
update_xml = (Path(__file__).parent / "data" / "windows-5140-update.xml").read_text("utf-8")
|
|
||||||
|
|
||||||
def _mock(self, *args):
|
def _mock(self, *args):
|
||||||
self.update_xml_text = update_xml
|
return (Path(__file__).parent / "data" / "windows-5140-update.xml").read_text("utf-8")
|
||||||
|
|
||||||
monkeypatch.setattr(QtArchives, "_download_update_xml", _mock)
|
monkeypatch.setattr(QtArchives, "_download_update_xml", _mock)
|
||||||
|
|
||||||
@@ -194,10 +191,9 @@ def test_qt_archives_modules(monkeypatch, arch, requested_module_names, has_none
|
|||||||
def test_tools_variants(monkeypatch, tool_name, tool_variant_name, is_expect_fail: bool):
|
def test_tools_variants(monkeypatch, tool_name, tool_variant_name, is_expect_fail: bool):
|
||||||
host, target, base = "mac", "desktop", "https://example.com"
|
host, target, base = "mac", "desktop", "https://example.com"
|
||||||
datafile = f"{host}-{target}-{tool_name}"
|
datafile = f"{host}-{target}-{tool_name}"
|
||||||
update_xml = (Path(__file__).parent / "data" / f"{datafile}-update.xml").read_text("utf-8")
|
|
||||||
|
|
||||||
def _mock(self, *args):
|
def _mock(self, *args):
|
||||||
self.update_xml_text = update_xml
|
return (Path(__file__).parent / "data" / f"{datafile}-update.xml").read_text("utf-8")
|
||||||
|
|
||||||
monkeypatch.setattr(QtArchives, "_download_update_xml", _mock)
|
monkeypatch.setattr(QtArchives, "_download_update_xml", _mock)
|
||||||
|
|
||||||
@@ -256,7 +252,7 @@ def to_xml(package_updates: Iterable[Dict]) -> str:
|
|||||||
)
|
)
|
||||||
def test_tool_archive_wrong_version(monkeypatch, tool_name, variant_name, version, actual_version):
|
def test_tool_archive_wrong_version(monkeypatch, tool_name, variant_name, version, actual_version):
|
||||||
def _mock(self, *args):
|
def _mock(self, *args):
|
||||||
self.update_xml_text = to_xml([dict(Name=variant_name, Version=actual_version)])
|
return to_xml([dict(Name=variant_name, Version=actual_version)])
|
||||||
|
|
||||||
monkeypatch.setattr(QtArchives, "_download_update_xml", _mock)
|
monkeypatch.setattr(QtArchives, "_download_update_xml", _mock)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
@@ -21,8 +22,7 @@ def setup():
|
|||||||
)
|
)
|
||||||
def test_parse_update_xml(monkeypatch, os_name, version, flavor, datafile):
|
def test_parse_update_xml(monkeypatch, os_name, version, flavor, datafile):
|
||||||
def _mock(self, url):
|
def _mock(self, url):
|
||||||
with open(os.path.join(os.path.dirname(__file__), "data", datafile), "r") as f:
|
return (Path(__file__).parent / "data" / datafile).read_text("utf-8")
|
||||||
self.update_xml_text = f.read()
|
|
||||||
|
|
||||||
monkeypatch.setattr(QtArchives, "_download_update_xml", _mock)
|
monkeypatch.setattr(QtArchives, "_download_update_xml", _mock)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user