From: David Kalnischkies Date: Thu, 10 Mar 2016 12:06:29 +0000 (+0100) Subject: flush line-clearing on progress stop before post-invoke X-Git-Tag: 1.2.7~15 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/915f4ac6d9ae239bd1aef47892075d019ec8b581 flush line-clearing on progress stop before post-invoke All other interactions with std::cout are flushed directly, just in the stop case we hadn't done it – no problem expect if there is still output coming after apt is done like in the case of a post-invoke script producing output. Closes: 793672 --- diff --git a/apt-pkg/install-progress.cc b/apt-pkg/install-progress.cc index 14409e301..f1a9f42dc 100644 --- a/apt-pkg/install-progress.cc +++ b/apt-pkg/install-progress.cc @@ -333,6 +333,7 @@ void PackageManagerFancy::Stop() // override the progress line (sledgehammer) static const char* clear_screen_below_cursor = "\033[J"; std::cout << clear_screen_below_cursor; + std::flush(std::cout); } child_pty = -1; } diff --git a/test/integration/test-failing-maintainer-scripts b/test/integration/test-failing-maintainer-scripts index 781d06e5c..8cf2380ee 100755 --- a/test/integration/test-failing-maintainer-scripts +++ b/test/integration/test-failing-maintainer-scripts @@ -84,5 +84,8 @@ testdpkginstalled failure-postrm testmyfailure aptget purge failure-postrm -y # FIXME: test with output going to a PTY as it usually does -#cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status -#aptget install failure-preinst -y +if false; then + cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status + apt install dependee -y || true + apt install failure-postinst -y || true +fi