Skip to content
Snippets Groups Projects
Commit 2acff705 authored by Chris Lamb's avatar Chris Lamb :eyes:
Browse files

Actually append the xz --list after the container differences, as it simplifies a lot.

parent a6651ded
No related branches found
No related tags found
No related merge requests found
......@@ -70,9 +70,15 @@ class XzFile(File):
FALLBACK_FILE_EXTENSION_SUFFIX = {".xz"}
FALLBACK_FILE_TYPE_HEADER_PREFIX = b"\xfd7zXZ\x00"
def compare_details(self, other, source=None):
return [
Difference.from_operation(
def compare(self, other, source=None):
difference = super().compare(other, source)
# Append xz --list *after* showing any container differences.
if isinstance(other, XzFile):
xz_list = Difference.from_operation(
XZList, self.path, other.path, source="xz --list"
)
]
if xz_list:
difference.add_details([xz_list])
return difference
......@@ -31,27 +31,36 @@ from ..utils.tools import (
gzip1 = load_fixture("containers/a.tar.gz")
gzip2 = load_fixture("containers/b.tar.gz")
xz1 = load_fixture("containers/a.tar.xz")
xz2 = load_fixture("containers/b.tar.xz")
bzip1 = load_fixture("containers/a.tar.bz2")
bzip2 = load_fixture("containers/b.tar.bz2")
TYPES = "gzip bzip2".split()
TYPES = "gzip bzip2 xz".split()
@pytest.fixture
def set1(gzip1, bzip1):
return dict(zip(TYPES, [gzip1, bzip1]))
def set1(gzip1, bzip1, xz1):
return dict(zip(TYPES, [gzip1, bzip1, xz1]))
@pytest.fixture
def set2(gzip2, bzip2):
return dict(zip(TYPES, [gzip2, bzip2]))
def set2(gzip2, bzip2, xz2):
return dict(zip(TYPES, [gzip2, bzip2, xz2]))
def expected_magic_diff(ext1, ext2):
magic = {
"bzip2": "bzip2 compressed data, block size = 900k\n",
"gzip": "gzip compressed data, last modified: Sun Sep 10 22:19:44 2017, from Unix\n",
"xz": "XZ compressed data",
}
if "xz" in (ext1, ext2):
if file_version_is_ge("5.40"):
magic["xz"] += ", checksum CRC64\n"
else:
magic["xz"] += "\n"
return "@@ -1 +1 @@\n" + "-" + magic[ext1] + "+" + magic[ext2]
......@@ -66,6 +75,7 @@ def expected_type_diff(ext1, ext2):
# Compares same content files, but with different extensions
@skip_unless_tools_exist("xz")
@skip_unless_file_version_is_at_least("5.37")
def test_equal(set1):
for x, y in itertools.product(TYPES, TYPES):
......@@ -83,6 +93,7 @@ def test_equal(set1):
# Compares different content files with different extensions
@skip_unless_tools_exist("xz")
@skip_unless_file_version_is_at_least("5.37")
def test_different(set1, set2):
for x, y in itertools.product(TYPES, TYPES):
......
......@@ -249,7 +249,7 @@ def dbgsym_differences(monkeypatch, dbgsym_dir1, dbgsym_dir2):
@skip_unless_module_exists("debian.deb822")
def test_differences_with_dbgsym(dbgsym_differences):
assert dbgsym_differences.details[2].source1 == "data.tar.xz"
bin_details = dbgsym_differences.details[2].details[1].details[0]
bin_details = dbgsym_differences.details[2].details[0].details[0]
assert bin_details.source1 == "./usr/bin/test"
assert bin_details.details[1].source1.startswith("objdump")
assert (
......@@ -262,7 +262,7 @@ def test_differences_with_dbgsym(dbgsym_differences):
@skip_if_binutils_does_not_support_x86()
@skip_unless_module_exists("debian.deb822")
def test_original_gnu_debuglink(dbgsym_differences):
bin_details = dbgsym_differences.details[2].details[1].details[0]
bin_details = dbgsym_differences.details[2].details[0].details[0]
assert ".gnu_debuglink" in bin_details.details[2].source1
assert_diff(bin_details.details[2], "gnu_debuglink_expected_diff")
......
......@@ -48,10 +48,10 @@ def differences(xz1, xz2):
@skip_unless_tools_exist("xz")
def test_content_source(differences):
assert differences[0].source1 == "xz --list"
assert differences[0].source2 == "xz --list"
assert differences[1].source1 == "test1"
assert differences[1].source2 == "test2"
assert differences[0].source1 == "test1"
assert differences[0].source2 == "test2"
assert differences[1].source1 == "xz --list"
assert differences[1].source2 == "xz --list"
@skip_unless_tools_exist("xz")
......@@ -63,14 +63,16 @@ def test_content_source_without_extension(tmpdir, xz1, xz2):
xz1 = specialize(FilesystemFile(path1))
xz2 = specialize(FilesystemFile(path2))
difference = xz1.compare(xz2).details
assert difference[1].source1 == "test1-content"
assert difference[1].source2 == "test2-content"
assert difference[0].source1 == "test1-content"
assert difference[0].source2 == "test2-content"
assert difference[1].source1 == "xz --list"
assert difference[1].source2 == "xz --list"
@skip_unless_tools_exist("xz")
def test_content_diff(differences):
assert_diff(differences[0], "text_xz_list")
assert_diff(differences[1], "text_ascii_expected_diff")
assert_diff(differences[0], "text_ascii_expected_diff")
assert_diff(differences[1], "text_xz_list")
@skip_unless_tools_exist("xz")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment