Source: diffoscope Version: 226 Severity: serious User: debian...@lists.debian.org Usertags: regression
Dear maintainer(s),With a recent upload of diffoscope the autopkgtest of diffoscope fails in testing when that autopkgtest is run with the binary packages of diffoscope from unstable. It passes when run with only packages from testing. In tabular form:
pass fail diffoscope from testing 226 versioned deps [0] from testing from unstable all others from testing from testing I copied some of the output at the bottom of this report.Currently this regression is blocking the migration to testing [1]. Can you please investigate the situation and fix it?
More information about this bug and the reason for filing it can be found on https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation Paul[0] You can see what packages were added from the second line of the log file quoted below. The migration software adds source package from unstable to the list if they are needed to install packages from diffoscope/226. I.e. due to versioned dependencies or breaks/conflicts.
[1] https://qa.debian.org/excuses.php?package=diffoscope https://ci.debian.net/data/autopkgtest/testing/amd64/d/diffoscope/28319467/log.gz=================================== FAILURES =================================== _____________________________ test_no_differences ______________________________
self = <<class 'abc.HtmlFile'> /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html> other = <<class 'abc.HtmlFile'> /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html>
source = None def compare(self, other, source=None): difference = super().compare(other, source) # Show text-only differences as a sub-diff. try:
text = Difference.from_operation(Htmltotext, self.path, other.path)
__class__ = <class 'diffoscope.comparators.html.HtmlFile'> difference = Noneother = <<class 'abc.HtmlFile'> /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html> self = <<class 'abc.HtmlFile'> /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html>
source = None/usr/lib/python3/dist-packages/diffoscope/comparators/html.py:44: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
klass = <class 'diffoscope.comparators.html.Htmltotext'>path1 = '/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html' path2 = '/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html'
args = (), kwargs = {} @staticmethod def from_operation(klass, path1, path2, *args, **kwargs):
return Difference.from_operation_exc(
klass, path1, path2, *args, **kwargs )[0] args = () klass = <class 'diffoscope.comparators.html.Htmltotext'> kwargs = {}path1 = '/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html' path2 = '/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html'
/usr/lib/python3/dist-packages/diffoscope/difference.py:267: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
klass = <class 'diffoscope.comparators.html.Htmltotext'>path1 = '/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html' path2 = '/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html'
args = (), kwargs = {}, ignore_returncodes = ()operation_and_feeder = <function Difference.from_operation_exc.<locals>.operation_and_feeder at 0x7f3447054a60>
@staticmethod def from_operation_exc(klass, path1, path2, *args, **kwargs): operation_args = kwargs.pop("operation_args", []) ignore_returncodes = kwargs.pop("ignore_returncodes", ()) def operation_and_feeder(path): operation = None if path == "/dev/null": feeder = feeders.empty() else: operation = klass(path, *operation_args) feeder = feeders.from_operation(operation) if operation_excluded(operation.full_name()): return None, None, True operation.start() return feeder, operation, False > feeder1, operation1, excluded1 = operation_and_feeder(path1) args = () ignore_returncodes = () klass = <class 'diffoscope.comparators.html.Htmltotext'> kwargs = {}operation_and_feeder = <function Difference.from_operation_exc.<locals>.operation_and_feeder at 0x7f3447054a60>
operation_args = []path1 = '/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html' path2 = '/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html'
/usr/lib/python3/dist-packages/diffoscope/difference.py:288: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ path = '/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html'
def operation_and_feeder(path): operation = None if path == "/dev/null": feeder = feeders.empty() else: operation = klass(path, *operation_args) feeder = feeders.from_operation(operation)
if operation_excluded(operation.full_name()):
feeder = <function from_operation.<locals>.feeder at 0x7f3447056e60> klass = <class 'diffoscope.comparators.html.Htmltotext'>operation = <diffoscope.comparators.html.Htmltotext object at 0x7f344d280a00>
operation_args = []path = '/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html'
/usr/lib/python3/dist-packages/diffoscope/difference.py:283: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <diffoscope.comparators.html.Htmltotext object at 0x7f344d280a00> args = ()kwargs = {'replace': ('/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html',)}
def full_name(self, *args, **kwargs): kwargs.setdefault("replace", (self.path,))
return format_cmdline(self.cmdline(), *args, **kwargs)
args = ()kwargs = {'replace': ('/tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html',)} self = <diffoscope.comparators.html.Htmltotext object at 0x7f344d280a00>
/usr/lib/python3/dist-packages/diffoscope/comparators/utils/command.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
args = (<diffoscope.comparators.html.Htmltotext object at 0x7f344d280a00>,) kwargs = {} @functools.wraps(fn) def tool_check(*args, **kwargs): """ Due to the way decorators are executed at import-time we defer the execution of `find_executable` until we actually run the decorated function (instead of prematurely returning a different version of `tool_check`). This ensures that any os.environ['PATH'] modifications are performed prior to the `find_executable` tests. """ if not tool_check_installed(command):
raise RequiredToolNotFound(command)
E diffoscope.exc.RequiredToolNotFound RequiredToolNotFound = <class 'diffoscope.exc.RequiredToolNotFound'>args = (<diffoscope.comparators.html.Htmltotext object at 0x7f344d280a00>,)
command = 'html2text' fn = <function Htmltotext.cmdline at 0x7f344d4629e0> kwargs = {} /usr/lib/python3/dist-packages/diffoscope/tools.py:137: RequiredToolNotFound During handling of the above exception, another exception occurred:html1 = <<class 'abc.HtmlFile'> /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html>
def test_no_differences(html1):
assert html1.compare(html1) is None
html1 = <<class 'abc.HtmlFile'> /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html>
tests/comparators/test_html.py:36: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <<class 'abc.HtmlFile'> /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html> other = <<class 'abc.HtmlFile'> /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html>
source = None def compare(self, other, source=None): difference = super().compare(other, source) # Show text-only differences as a sub-diff. try:text = Difference.from_operation(Htmltotext, self.path, other.path)
if text is not None: difference.add_details([text]) except RequiredToolNotFound as exc: # noqa
difference.add_comment(exc.get_comment())
E AttributeError: 'NoneType' object has no attribute 'add_comment' __class__ = <class 'diffoscope.comparators.html.HtmlFile'> difference = Noneother = <<class 'abc.HtmlFile'> /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html> self = <<class 'abc.HtmlFile'> /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html>
source = None/usr/lib/python3/dist-packages/diffoscope/comparators/html.py:48: AttributeError __________________________________ test_diff ___________________________________
differences = <Difference /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html -- /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test2.html []>
def test_diff(differences): assert_diff(differences, "html_expected_diff")
assert_diff(differences.details[0], "html_text_expected_diff")
E IndexError: list index out of rangedifferences = <Difference /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test1.html -- /tmp/autopkgtest-lxc.0soup5pu/downtmp/autopkgtest_tmp/tests/data/test2.html []>
tests/comparators/test_html.py:46: IndexError
OpenPGP_signature
Description: OpenPGP digital signature
_______________________________________________ Reproducible-builds mailing list Reproducible-builds@alioth-lists.debian.net https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/reproducible-builds