On Sun, Feb 26, 2017 at 03:57:00PM +0000, Niels Thykier wrote:
> Please go ahead.
Thank you, uploaded. The final debdiff:
% debdiff -p diffoscope_77.dsc diffoscope_78.dsc
diffstat for diffoscope-77 diffoscope-78
debian/changelog | 18 ++++++++++++++
diffoscope/__init__.py | 2 -
diffoscope/comparators/directory.py | 44 ++++++++++++++++++++----------------
diffoscope/comparators/elf.py | 2 -
diffoscope/comparators/json.py | 2 -
tests/comparators/test_binary.py | 6 ----
tests/comparators/test_device.py | 6 ++--
tests/comparators/test_rpm.py | 4 +--
tests/comparators/utils/data.py | 12 +++++++++
9 files changed, 64 insertions(+), 32 deletions(-)
diff -Nru diffoscope-77/debian/changelog diffoscope-78/debian/changelog
--- diffoscope-77/debian/changelog 2017-02-13 16:25:02.000000000 +0100
+++ diffoscope-78/debian/changelog 2017-02-26 17:26:48.000000000 +0100
@@ -1,3 +1,21 @@
+diffoscope (78) unstable; urgency=medium
+
+ [ Brett Smith ]
+ * comparators.json:
+ + Catch bad JSON errors on Python pre-3.5. Closes: #855233
+
+ [ Chris Lamb ]
+ * tests:
+ + Move normalize_zeros to more generic `utils.data` module.
+ + Fix tests that call xxd fail on jessie due to output change.
+ Closes: #855239
+
+ [ Ed Maste ]
+ * comparators.directory:
+ + Assume BSD-style stat(1) on FreeBSD. Closes: #855169
+
+ -- Mattia Rizzolo <mattia@debian.org> Sun, 26 Feb 2017 17:26:48 +0100
+
diffoscope (77) unstable; urgency=medium
[ Chris Lamb ]
diff -Nru diffoscope-77/diffoscope/comparators/directory.py diffoscope-78/diffoscope/comparators/directory.py
--- diffoscope-77/diffoscope/comparators/directory.py 2017-02-13 13:24:56.000000000 +0100
+++ diffoscope-78/diffoscope/comparators/directory.py 2017-02-26 17:23:10.000000000 +0100
@@ -45,25 +45,31 @@
return all_files
-class Stat(Command):
- @tool_required('stat')
- def cmdline(self):
- return ['stat', self.path]
-
- FILE_RE = re.compile(r'^\s*File:.*$')
- DEVICE_RE = re.compile(r'Device: [0-9a-f]+h/[0-9]+d\s+')
- INODE_RE = re.compile(r'Inode: [0-9]+\s+')
- ACCESS_TIME_RE = re.compile(r'^Access: [0-9]{4}-[0-9]{2}-[0-9]{2}.*$')
- CHANGE_TIME_RE = re.compile(r'^Change: [0-9]{4}-[0-9]{2}-[0-9]{2}.*$')
-
- def filter(self, line):
- line = line.decode('utf-8')
- line = Stat.FILE_RE.sub('', line)
- line = Stat.DEVICE_RE.sub('', line)
- line = Stat.INODE_RE.sub('', line)
- line = Stat.ACCESS_TIME_RE.sub('', line)
- line = Stat.CHANGE_TIME_RE.sub('', line)
- return line.encode('utf-8')
+if os.uname()[0] == 'FreeBSD':
+ class Stat(Command):
+ @tool_required('stat')
+ def cmdline(self):
+ return ['stat', '-t', '%Y-%m-%d %H:%M:%S', '-f', '%Sp %l %Su %Sg %z %Sm %k %b %#Xf', self.path]
+else:
+ class Stat(Command):
+ @tool_required('stat')
+ def cmdline(self):
+ return ['stat', self.path]
+
+ FILE_RE = re.compile(r'^\s*File:.*$')
+ DEVICE_RE = re.compile(r'Device: [0-9a-f]+h/[0-9]+d\s+')
+ INODE_RE = re.compile(r'Inode: [0-9]+\s+')
+ ACCESS_TIME_RE = re.compile(r'^Access: [0-9]{4}-[0-9]{2}-[0-9]{2}.*$')
+ CHANGE_TIME_RE = re.compile(r'^Change: [0-9]{4}-[0-9]{2}-[0-9]{2}.*$')
+
+ def filter(self, line):
+ line = line.decode('utf-8')
+ line = Stat.FILE_RE.sub('', line)
+ line = Stat.DEVICE_RE.sub('', line)
+ line = Stat.INODE_RE.sub('', line)
+ line = Stat.ACCESS_TIME_RE.sub('', line)
+ line = Stat.CHANGE_TIME_RE.sub('', line)
+ return line.encode('utf-8')
@tool_required('lsattr')
diff -Nru diffoscope-77/diffoscope/comparators/elf.py diffoscope-78/diffoscope/comparators/elf.py
--- diffoscope-77/diffoscope/comparators/elf.py 2017-02-10 23:54:34.000000000 +0100
+++ diffoscope-78/diffoscope/comparators/elf.py 2017-02-26 17:23:38.000000000 +0100
@@ -398,7 +398,7 @@
output = output[2:]
output = output[5:]
- # Entires of readelf --section-headers have the following columns:
+ # Entries of readelf --section-headers have the following columns:
# [Nr] Name Type Address Off Size ES Flg Lk Inf Al
self._sections = collections.OrderedDict()
for line in output:
diff -Nru diffoscope-77/diffoscope/comparators/json.py diffoscope-78/diffoscope/comparators/json.py
--- diffoscope-77/diffoscope/comparators/json.py 2017-01-14 11:59:14.000000000 +0100
+++ diffoscope-78/diffoscope/comparators/json.py 2017-02-26 17:23:38.000000000 +0100
@@ -37,7 +37,7 @@
with open(file.path) as f:
try:
file.parsed = json.load(f, object_pairs_hook=collections.OrderedDict)
- except json.JSONDecodeError:
+ except ValueError:
return False
return True
diff -Nru diffoscope-77/diffoscope/__init__.py diffoscope-78/diffoscope/__init__.py
--- diffoscope-77/diffoscope/__init__.py 2017-02-13 15:30:54.000000000 +0100
+++ diffoscope-78/diffoscope/__init__.py 2017-02-26 17:26:48.000000000 +0100
@@ -17,4 +17,4 @@
# You should have received a copy of the GNU General Public License
# along with diffoscope. If not, see <https://www.gnu.org/licenses/>.
-VERSION = "77"
+VERSION = "78"
diff -Nru diffoscope-77/tests/comparators/test_binary.py diffoscope-78/tests/comparators/test_binary.py
--- diffoscope-77/tests/comparators/test_binary.py 2017-02-10 23:54:34.000000000 +0100
+++ diffoscope-78/tests/comparators/test_binary.py 2017-02-26 17:23:38.000000000 +0100
@@ -32,7 +32,7 @@
from diffoscope.comparators.missing_file import MissingFile
from diffoscope.comparators.utils.compare import Xxd
-from utils.data import data, init_fixture, get_data
+from utils.data import data, init_fixture, get_data, normalize_zeros
from utils.tools import skip_unless_tools_exist
@@ -46,10 +46,6 @@
binary1 = init_fixture(TEST_FILE1_PATH)
binary2 = init_fixture(TEST_FILE2_PATH)
-def normalize_zeros(s):
- # older xxd had one zero less. Make sure there are always 8.
- return s.replace('-0000000:', '-00000000:').replace('+0000000:', '+00000000:')
-
def test_same_content(binary1):
assert binary1.has_same_content_as(binary1) is True
diff -Nru diffoscope-77/tests/comparators/test_device.py diffoscope-78/tests/comparators/test_device.py
--- diffoscope-77/tests/comparators/test_device.py 2017-02-10 23:54:40.000000000 +0100
+++ diffoscope-78/tests/comparators/test_device.py 2017-02-26 17:23:38.000000000 +0100
@@ -23,7 +23,7 @@
from diffoscope.comparators.device import Device
from diffoscope.comparators.utils.specialize import specialize
-from utils.data import load_fixture, get_data
+from utils.data import load_fixture, get_data, normalize_zeros
from utils.tools import skip_unless_tools_exist
@@ -47,9 +47,9 @@
@skip_unless_tools_exist('xxd')
def test_diff(differences):
expected_diff = get_data('device_expected_diff')
- assert differences.unified_diff == expected_diff
+ assert normalize_zeros(differences.unified_diff) == expected_diff
@skip_unless_tools_exist('xxd')
def test_diff_reverse(differences_reverse):
expected_diff = get_data('device_expected_diff_reverse')
- assert differences_reverse.unified_diff == expected_diff
+ assert normalize_zeros(differences_reverse.unified_diff) == expected_diff
diff -Nru diffoscope-77/tests/comparators/test_rpm.py diffoscope-78/tests/comparators/test_rpm.py
--- diffoscope-77/tests/comparators/test_rpm.py 2017-02-10 23:54:40.000000000 +0100
+++ diffoscope-78/tests/comparators/test_rpm.py 2017-02-26 17:23:38.000000000 +0100
@@ -23,7 +23,7 @@
from diffoscope.comparators.binary import FilesystemFile
from diffoscope.comparators.utils.specialize import specialize
-from utils.data import load_fixture, data, get_data
+from utils.data import load_fixture, data, get_data, normalize_zeros
from utils.tools import skip_unless_tools_exist, skip_unless_module_exists
from utils.nonexisting import assert_non_existing
@@ -92,4 +92,4 @@
assert rpm2.compare(rpm2) is None
expected_diff = get_data('rpm_fallback_expected_diff')
- assert rpm1.compare(rpm2).unified_diff == expected_diff
+ assert normalize_zeros(rpm1.compare(rpm2).unified_diff) == expected_diff
diff -Nru diffoscope-77/tests/comparators/utils/data.py diffoscope-78/tests/comparators/utils/data.py
--- diffoscope-77/tests/comparators/utils/data.py 2017-02-10 23:54:34.000000000 +0100
+++ diffoscope-78/tests/comparators/utils/data.py 2017-02-26 17:23:38.000000000 +0100
@@ -19,11 +19,16 @@
# along with diffoscope. If not, see <https://www.gnu.org/licenses/>.
import os
+import re
import pytest
from diffoscope.comparators.binary import FilesystemFile
from diffoscope.comparators.utils.specialize import specialize
+re_normalize_zeros = re.compile(
+ r'^(?P<prefix>[ \-\+])(?P<offset>[0-9a-f]+)(?=: )', re.MULTILINE,
+)
+
def init_fixture(filename):
return pytest.fixture(
@@ -47,3 +52,10 @@
def load_fixture(filename):
return init_fixture(data(filename))
+
+
+def normalize_zeros(s):
+ # older xxd had one zero less. Make sure there are always 8.
+ def repl(x):
+ return '{}{:08x}'.format(x.group('prefix'), int(x.group('offset'), 16))
+ return re_normalize_zeros.sub(repl, s)
--
regards,
Mattia Rizzolo
GPG Key: 66AE 2B4A FCCF 3F52 DA18 4D18 4B04 3FCD B944 4540 .''`.
more about me: https://mapreri.org : :' :
Launchpad user: https://launchpad.net/~mapreri `. `'`
Debian QA page: https://qa.debian.org/developer.php?login=mattia `-
Attachment:
signature.asc
Description: PGP signature