[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