Commit 1f5694c8 authored by Chris Lamb's avatar Chris Lamb 💬

Test that we do not recursively unpack archive quines. See...

Test that we do not recursively unpack archive quines. See <https://research.swtch.com/zip> for more information.
Signed-off-by: Chris Lamb's avatarChris Lamb <lamby@debian.org>
parent bb3555b7
@@ -1 +1 @@
-gzip compressed data, was "recursive", from FAT filesystem (MS-DOS, OS/2, NT)
+Zip archive data, at least v2.0 to extract
# -*- coding: utf-8 -*-
#
# diffoscope: in-depth comparison of files, archives, and directories
#
# Copyright © 2017 Chris Lamb <lamby@debian.org>
#
# diffoscope is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# diffoscope is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with diffoscope. If not, see <https://www.gnu.org/licenses/>.
import pytest
from diffoscope.comparators.zip import ZipFile
from diffoscope.comparators.gzip import GzipFile
from comparators.utils.data import load_fixture, get_data
quine1 = load_fixture('quine.gz')
quine2 = load_fixture('quine.zip')
def test_identification(quine1, quine2):
assert isinstance(quine1, GzipFile)
assert isinstance(quine2, ZipFile)
def test_no_differences(quine1):
difference = quine1.compare(quine1)
assert difference is None
@pytest.fixture
def differences(quine1, quine2):
return quine1.compare(quine2).details
def test_difference(differences):
# Check that we are not recursively unpacking the quines in an infinite
# loop. See <https://research.swtch.com/zip>
expected_diff = get_data('quine_expected_diff')
assert differences[0].unified_diff == expected_diff
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment