summaryrefslogtreecommitdiff
path: root/apt-private
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-03-15 22:34:54 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2015-04-10 22:29:08 +0200
commitdfad5beea77d75983f6ff8a1b8296b74dd48203e (patch)
tree405a6e037cd162ec45b9757b826619a9d5f9f597 /apt-private
parentb8eba208daebe3e3f235983e44da9c398d6f7a57 (diff)
add a simple unit test for acquire progress
This isn't testing much of the 'complex' parts, but its better than nothing for now. Git-Dch: Ignore
Diffstat (limited to 'apt-private')
-rw-r--r--apt-private/acqprogress.cc53
-rw-r--r--apt-private/acqprogress.h4
-rw-r--r--apt-private/private-install.cc2
-rw-r--r--apt-private/private-update.cc4
4 files changed, 31 insertions, 32 deletions
diff --git a/apt-private/acqprogress.cc b/apt-private/acqprogress.cc
index e834d7d6a..0c606e48e 100644
--- a/apt-private/acqprogress.cc
+++ b/apt-private/acqprogress.cc
@@ -1,10 +1,9 @@
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: acqprogress.cc,v 1.24 2003/04/27 01:56:48 doogie Exp $
/* ######################################################################
- Acquire Progress - Command line progress meter
-
+ Acquire Progress - Command line progress meter
+
##################################################################### */
/*}}}*/
// Include files /*{{{*/
@@ -29,13 +28,11 @@
#include <apti18n.h>
/*}}}*/
-using namespace std;
-
// AcqTextStatus::AcqTextStatus - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
-AcqTextStatus::AcqTextStatus(unsigned int &ScreenWidth,unsigned int const Quiet) :
- pkgAcquireStatus(), ScreenWidth(ScreenWidth), LastLineLength(0), ID(0), Quiet(Quiet)
+AcqTextStatus::AcqTextStatus(std::ostream &out, unsigned int &ScreenWidth,unsigned int const Quiet) :
+ pkgAcquireStatus(), out(out), ScreenWidth(ScreenWidth), LastLineLength(0), ID(0), Quiet(Quiet)
{
// testcases use it to disable pulses without disabling other user messages
if (Quiet == 0 && _config->FindB("quiet::NoUpdate", false) == true)
@@ -62,8 +59,8 @@ void AcqTextStatus::IMSHit(pkgAcquire::ItemDesc &Itm)
clearLastLine();
- cout << _("Hit ") << Itm.Description;
- cout << endl;
+ out << _("Hit ") << Itm.Description;
+ out << std::endl;
Update = true;
}
/*}}}*/
@@ -83,10 +80,10 @@ void AcqTextStatus::Fetch(pkgAcquire::ItemDesc &Itm)
clearLastLine();
- cout << _("Get:") << Itm.Owner->ID << ' ' << Itm.Description;
+ out << _("Get:") << Itm.Owner->ID << ' ' << Itm.Description;
if (Itm.Owner->FileSize != 0)
- cout << " [" << SizeToStr(Itm.Owner->FileSize) << "B]";
- cout << endl;
+ out << " [" << SizeToStr(Itm.Owner->FileSize) << "B]";
+ out << std::endl;
}
/*}}}*/
// AcqTextStatus::Done - Completed a download /*{{{*/
@@ -113,15 +110,15 @@ void AcqTextStatus::Fail(pkgAcquire::ItemDesc &Itm)
if (Itm.Owner->Status == pkgAcquire::Item::StatDone)
{
- cout << _("Ign ") << Itm.Description << endl;
+ out << _("Ign ") << Itm.Description << std::endl;
if (Itm.Owner->ErrorText.empty() == false &&
_config->FindB("Acquire::Progress::Ignore::ShowErrorText", false) == true)
- cout << " " << Itm.Owner->ErrorText << endl;
+ out << " " << Itm.Owner->ErrorText << std::endl;
}
else
{
- cout << _("Err ") << Itm.Description << endl;
- cout << " " << Itm.Owner->ErrorText << endl;
+ out << _("Err ") << Itm.Description << std::endl;
+ out << " " << Itm.Owner->ErrorText << std::endl;
}
Update = true;
@@ -143,7 +140,7 @@ void AcqTextStatus::Stop()
return;
if (FetchedBytes != 0 && _error->PendingError() == false)
- ioprintf(cout,_("Fetched %sB in %s (%sB/s)\n"),
+ ioprintf(out,_("Fetched %sB in %s (%sB/s)\n"),
SizeToStr(FetchedBytes).c_str(),
TimeToStr(ElapsedTime).c_str(),
SizeToStr(CurrentCPS).c_str());
@@ -152,7 +149,7 @@ void AcqTextStatus::Stop()
// AcqTextStatus::Pulse - Regular event pulse /*{{{*/
// ---------------------------------------------------------------------
/* This draws the current progress. Each line has an overall percent
- meter and a per active item status meter along with an overall
+ meter and a per active item status meter along with an overall
bandwidth and ETA indicator. */
bool AcqTextStatus::Pulse(pkgAcquire *Owner)
{
@@ -250,14 +247,14 @@ bool AcqTextStatus::Pulse(pkgAcquire *Owner)
// Draw the current status
if (_config->FindB("Apt::Color", false) == true)
- cout << _config->Find("APT::Color::Yellow");
+ out << _config->Find("APT::Color::Yellow");
if (LastLineLength > Line.length())
clearLastLine();
else
- cout << '\r';
- cout << Line << flush;
+ out << '\r';
+ out << Line << std::flush;
if (_config->FindB("Apt::Color", false) == true)
- cout << _config->Find("APT::Color::Neutral") << flush;
+ out << _config->Find("APT::Color::Neutral") << std::flush;
LastLineLength = Line.length();
Update = false;
@@ -268,7 +265,7 @@ bool AcqTextStatus::Pulse(pkgAcquire *Owner)
// AcqTextStatus::MediaChange - Media need to be swapped /*{{{*/
// ---------------------------------------------------------------------
/* Prompt for a media swap */
-bool AcqTextStatus::MediaChange(string Media,string Drive)
+bool AcqTextStatus::MediaChange(std::string Media, std::string Drive)
{
// If we do not output on a terminal and one of the options to avoid user
// interaction is given, we assume that no user is present who could react
@@ -281,7 +278,7 @@ bool AcqTextStatus::MediaChange(string Media,string Drive)
return false;
clearLastLine();
- ioprintf(cout,_("Media change: please insert the disc labeled\n"
+ ioprintf(out,_("Media change: please insert the disc labeled\n"
" '%s'\n"
"in the drive '%s' and press enter\n"),
Media.c_str(),Drive.c_str());
@@ -301,16 +298,16 @@ bool AcqTextStatus::MediaChange(string Media,string Drive)
}
/*}}}*/
void AcqTextStatus::clearLastLine() { /*{{{*/
- if (Quiet > 0)
+ if (Quiet > 0 || LastLineLength == 0)
return;
// do not try to clear more than the (now smaller) screen
if (LastLineLength > ScreenWidth)
LastLineLength = ScreenWidth;
- std::cout << '\r';
+ out << '\r';
for (size_t i = 0; i < LastLineLength; ++i)
- std::cout << ' ';
- std::cout << '\r' << std::flush;
+ out << ' ';
+ out << '\r' << std::flush;
}
/*}}}*/
diff --git a/apt-private/acqprogress.h b/apt-private/acqprogress.h
index ab8170126..7cf990c65 100644
--- a/apt-private/acqprogress.h
+++ b/apt-private/acqprogress.h
@@ -13,9 +13,11 @@
#include <apt-pkg/macros.h>
#include <string>
+#include <iostream>
class APT_PUBLIC AcqTextStatus : public pkgAcquireStatus
{
+ std::ostream &out;
unsigned int &ScreenWidth;
size_t LastLineLength;
unsigned long ID;
@@ -35,7 +37,7 @@ class APT_PUBLIC AcqTextStatus : public pkgAcquireStatus
bool Pulse(pkgAcquire *Owner);
- AcqTextStatus(unsigned int &ScreenWidth,unsigned int const Quiet);
+ AcqTextStatus(std::ostream &out, unsigned int &ScreenWidth,unsigned int const Quiet);
};
#endif
diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc
index 79a22edf4..acc6d42c2 100644
--- a/apt-private/private-install.cc
+++ b/apt-private/private-install.cc
@@ -116,7 +116,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask, bool Safety)
return false;
// Create the download object
- AcqTextStatus Stat(ScreenWidth,_config->FindI("quiet",0));
+ AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));
pkgAcquire Fetcher(&Stat);
if (_config->FindB("APT::Get::Print-URIs", false) == true)
{
diff --git a/apt-private/private-update.cc b/apt-private/private-update.cc
index df77ac33a..73a82e988 100644
--- a/apt-private/private-update.cc
+++ b/apt-private/private-update.cc
@@ -38,8 +38,8 @@ bool DoUpdate(CommandLine &CmdL)
pkgSourceList *List = Cache.GetSourceList();
// Create the progress
- AcqTextStatus Stat(ScreenWidth,_config->FindI("quiet",0));
-
+ AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));
+
// Just print out the uris an exit if the --print-uris flag was used
if (_config->FindB("APT::Get::Print-URIs") == true)
{