[Reproducible-commits] [diffoscope] 02/03: Add test for dex comparator
Reiner Herrmann
reiner at reiner-h.de
Sat Nov 21 18:38:56 UTC 2015
This is an automated email from the git hooks/post-receive script.
deki-guest pushed a commit to branch master
in repository diffoscope.
commit a73e92613c368bd7ddf24051327719edbe55f909
Author: Reiner Herrmann <reiner at reiner-h.de>
Date: Sat Nov 21 16:12:27 2015 +0100
Add test for dex comparator
---
tests/comparators/{test_epub.py => test_dex.py} | 55 +++++++++++++-----------
tests/comparators/test_epub.py | 2 +-
tests/data/dex_expected_diffs | 36 ++++++++++++++++
tests/data/test1.dex | Bin 0 -> 2116 bytes
tests/data/test2.dex | Bin 0 -> 2116 bytes
5 files changed, 67 insertions(+), 26 deletions(-)
diff --git a/tests/comparators/test_epub.py b/tests/comparators/test_dex.py
similarity index 57%
copy from tests/comparators/test_epub.py
copy to tests/comparators/test_dex.py
index 7216617..b815096 100644
--- a/tests/comparators/test_epub.py
+++ b/tests/comparators/test_dex.py
@@ -21,48 +21,53 @@ import os.path
import pytest
from diffoscope.comparators import specialize
from diffoscope.comparators.binary import FilesystemFile, NonExistingFile
-from diffoscope.comparators.zip import ZipFile
+from diffoscope.comparators.dex import DexFile
from diffoscope.config import Config
from conftest import tool_missing
-TEST_FILE1_PATH = os.path.join(os.path.dirname(__file__), '../data/test1.epub')
-TEST_FILE2_PATH = os.path.join(os.path.dirname(__file__), '../data/test2.epub')
+TEST_FILE1_PATH = os.path.join(os.path.dirname(__file__), '../data/test1.dex')
+TEST_FILE2_PATH = os.path.join(os.path.dirname(__file__), '../data/test2.dex')
@pytest.fixture
-def epub1():
+def dex1():
return specialize(FilesystemFile(TEST_FILE1_PATH))
@pytest.fixture
-def epub2():
+def dex2():
return specialize(FilesystemFile(TEST_FILE2_PATH))
-def test_identification(epub1):
- assert isinstance(epub1, ZipFile)
+def test_identification(dex1):
+ assert isinstance(dex1, DexFile)
-def test_no_differences(epub1):
- difference = epub1.compare(epub1)
+def test_no_differences(dex1):
+ difference = dex1.compare(dex1)
assert difference is None
@pytest.fixture
-def differences(epub1, epub2):
- return epub1.compare(epub2).details
+def differences(dex1, dex2):
+ return dex1.compare(dex2).details
- at pytest.mark.skipif(tool_missing('zipinfo'), reason='missing zip')
+ at pytest.mark.skipif(tool_missing('enjarify'), reason='missing enjarify')
+ at pytest.mark.skipif(tool_missing('zipinfo'), reason='missing zipinfo')
+ at pytest.mark.skipif(tool_missing('javap'), reason='missing javap')
def test_differences(differences):
- assert differences[0].source1 == 'zipinfo {}'
- assert differences[0].source1 == 'zipinfo {}'
- assert differences[1].source1 == 'ch001.xhtml'
- assert differences[1].source2 == 'ch001.xhtml'
- assert differences[2].source1 == 'content.opf'
- assert differences[2].source2 == 'content.opf'
- assert differences[3].source1 == 'toc.ncx'
- assert differences[3].source2 == 'toc.ncx'
- expected_diff = open(os.path.join(os.path.dirname(__file__), '../data/epub_expected_diffs')).read()
- assert expected_diff == "".join(map(lambda x: x.unified_diff, differences))
+ assert differences[0].source1 == 'test1.jar'
+ assert differences[0].source2 == 'test2.jar'
+ zipinfo = differences[0].details[0]
+ classdiff = differences[0].details[1]
+ assert zipinfo.source1 == 'zipinfo -v {}'
+ assert zipinfo.source2 == 'zipinfo -v {}'
+ assert classdiff.source1 == 'com/example/MainActivity.class'
+ assert classdiff.source2 == 'com/example/MainActivity.class'
+ expected_diff = open(os.path.join(os.path.dirname(__file__), '../data/dex_expected_diffs')).read()
+ found_diff = zipinfo.unified_diff + classdiff.details[0].unified_diff
+ assert expected_diff == found_diff
- at pytest.mark.skipif(tool_missing('zipinfo'), reason='missing zip')
-def test_compare_non_existing(monkeypatch, epub1):
+ at pytest.mark.skipif(tool_missing('enjarify'), reason='missing enjarify')
+ at pytest.mark.skipif(tool_missing('zipinfo'), reason='missing zipinfo')
+ at pytest.mark.skipif(tool_missing('javap'), reason='missing javap')
+def test_compare_non_existing(monkeypatch, dex1):
monkeypatch.setattr(Config.general, 'new_file', True)
- difference = epub1.compare(NonExistingFile('/nonexisting', epub1))
+ difference = dex1.compare(NonExistingFile('/nonexisting', dex1))
assert difference.source2 == '/nonexisting'
assert difference.details[-1].source2 == '/dev/null'
diff --git a/tests/comparators/test_epub.py b/tests/comparators/test_epub.py
index 7216617..80134e1 100644
--- a/tests/comparators/test_epub.py
+++ b/tests/comparators/test_epub.py
@@ -50,7 +50,7 @@ def differences(epub1, epub2):
@pytest.mark.skipif(tool_missing('zipinfo'), reason='missing zip')
def test_differences(differences):
assert differences[0].source1 == 'zipinfo {}'
- assert differences[0].source1 == 'zipinfo {}'
+ assert differences[0].source2 == 'zipinfo {}'
assert differences[1].source1 == 'ch001.xhtml'
assert differences[1].source2 == 'ch001.xhtml'
assert differences[2].source1 == 'content.opf'
diff --git a/tests/data/dex_expected_diffs b/tests/data/dex_expected_diffs
new file mode 100644
index 0000000..28090cc
--- /dev/null
+++ b/tests/data/dex_expected_diffs
@@ -0,0 +1,36 @@
+@@ -54,15 +54,15 @@
+ version of encoding software: 2.0
+ minimum file system compatibility required: MS-DOS, OS/2 or NT FAT
+ minimum software version required to extract: 2.0
+ compression method: none (stored)
+ file security status: not encrypted
+ extended local header: no
+ file last modified on (DOS date/time): 1980 Jan 1 00:00:00
+- 32-bit CRC value (hex): fc227a58
++ 32-bit CRC value (hex): 19c9f64e
+ compressed size: 305 bytes
+ uncompressed size: 305 bytes
+ length of filename: 30 characters
+ length of extra field: 0 bytes
+ length of file comment: 0 characters
+ disk number on which file begins: disk 1
+ apparent file type: binary
+@@ -17,16 +17,16 @@
+ #12 = Methodref #4.#11 // android/app/Activity.onCreate:(Landroid/os/Bundle;)V
+ #13 = Integer 2130903040
+ #14 = Float 1.7412887E38f
+ #15 = Utf8 setContentView
+ #16 = Utf8 (I)V
+ #17 = NameAndType #15:#16 // setContentView:(I)V
+ #18 = Methodref #2.#17 // com/example/MainActivity.setContentView:(I)V
+- #19 = Utf8 Sat Nov 21 14:20:33 CET 2015
+- #20 = String #19 // Sat Nov 21 14:20:33 CET 2015
++ #19 = Utf8 Thu Mar 17 11:54:42 CET 2016
++ #20 = String #19 // Thu Mar 17 11:54:42 CET 2016
+ #21 = Utf8 Code
+ {
+ public com.example.MainActivity();
+ Signature: ()V
+ flags: ACC_PUBLIC
+ Code:
+ stack=300, locals=1, args_size=1
diff --git a/tests/data/test1.dex b/tests/data/test1.dex
new file mode 100644
index 0000000..b53c4d6
Binary files /dev/null and b/tests/data/test1.dex differ
diff --git a/tests/data/test2.dex b/tests/data/test2.dex
new file mode 100644
index 0000000..0065848
Binary files /dev/null and b/tests/data/test2.dex differ
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/diffoscope.git
More information about the Reproducible-commits
mailing list