On Wed, Oct 22, 2014 at 07:35:40AM +0200, Alexandre Detiste wrote: > control: reopen -1 > > Since this change, the mail I receive contains the changes from all previous > days. > > See multiple 'Log Started' in attached mail.
Thanks for your bugreport. The attached patch should fix this problem. It will be part of the next upload to unstable. Cheers, Michael
=== modified file 'test/test_mail.py' --- test/test_mail.py 2014-02-06 00:06:25 +0000 +++ test/test_mail.py 2014-10-28 10:49:03 +0000 @@ -5,6 +5,7 @@ import apt_pkg import os import sys +from textwrap import dedent import unittest from io import StringIO @@ -18,9 +19,12 @@ class CommonTestsForMailxAndSendmail(object): EXPECTED_MAIL_CONTENT_STRINGS = [ - "logfile_dpkg text", + "random logfile_dpkg text", "mem_log text", ] + NOT_EXPECTED_MAIL_CONTENT_STRINGS = [ + "old logfile text", + ] def common_setup(self): # monkey patch to make it testable @@ -49,12 +53,25 @@ """) logfile_dpkg = "./apt-term.log" with open("./apt-term.log", "w") as fp: - fp.write("logfile_dpkg text") + # note that we intentionally not have a "Log ended:" here + # because this may happen if something crashes power goes + # down etc + fp.write(dedent("""\ + Log started: 2014-10-28 10:00 + random logfile_dpkg text + + Log started: 2013-01-01 12:00 + old logfile text + Log ended: 2013-01-01 12:20 + """)) return (pkgs, res, pkgs_kept_back, mem_log, logfile_dpkg) def _verify_common_mail_content(self, mail_txt): for expected_string in self.EXPECTED_MAIL_CONTENT_STRINGS: self.assertTrue(expected_string in mail_txt) + for not_expected_string in self.NOT_EXPECTED_MAIL_CONTENT_STRINGS: + self.assertFalse(not_expected_string in mail_txt) + self.assertEqual(mail_txt.count("Log started: "), 1) def test_summary_mail_reboot(self): with open("./reboot-required", "w") as fp: === modified file 'unattended-upgrade' --- unattended-upgrade 2014-10-15 08:05:10 +0000 +++ unattended-upgrade 2014-10-28 10:48:02 +0000 @@ -790,7 +790,10 @@ if os.path.exists(logfile_dpkg): body += _("Package installation log:") + "\n" with open(logfile_dpkg) as fp: - body += fp.read() + for i, line in enumerate(fp.readlines()): + if i > 0 and line.startswith("Log started: "): + break + body += line body += "\n\n" body += _("Unattended-upgrades log:\n") body += mem_log.getvalue()