123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- #include <config.h>
- #include <apt-pkg/hashes.h>
- #include <apt-pkg/acquire.h>
- #include <apt-pkg/acquire-item.h>
- #include <apt-pkg/configuration.h>
- #include <apt-private/acqprogress.h>
- #include <string>
- #include <sstream>
- #include <gtest/gtest.h>
- class TestItem: public pkgAcquire::Item
- {
- public:
- explicit TestItem(pkgAcquire * const Acq) : pkgAcquire::Item(Acq) {}
- virtual std::string DescURI() const APT_OVERRIDE { return ""; }
- virtual HashStringList GetExpectedHashes() const APT_OVERRIDE { return HashStringList(); }
- };
- TEST(AcqProgress, IMSHit)
- {
- std::ostringstream out;
- unsigned int width = 80;
- AcqTextStatus Stat(out, width, 0);
- Stat.Start();
- pkgAcquire Acq(&Stat);
- pkgAcquire::ItemDesc hit;
- hit.URI = "http://example.org/file";
- hit.Description = "Example File from example.org";
- hit.ShortDesc = "Example File";
- TestItem hitO(&Acq);
- hit.Owner = &hitO;
- EXPECT_EQ("", out.str());
- Stat.IMSHit(hit);
- EXPECT_EQ("Hit:1 Example File from example.org\n", out.str());
- Stat.IMSHit(hit);
- EXPECT_EQ("Hit:1 Example File from example.org\n"
- "Hit:1 Example File from example.org\n", out.str());
- Stat.Stop();
- EXPECT_EQ("Hit:1 Example File from example.org\n"
- "Hit:1 Example File from example.org\n", out.str());
- }
- TEST(AcqProgress, FetchNoFileSize)
- {
- std::ostringstream out;
- unsigned int width = 80;
- AcqTextStatus Stat(out, width, 0);
- Stat.Start();
- pkgAcquire Acq(&Stat);
- pkgAcquire::ItemDesc fetch;
- fetch.URI = "http://example.org/file";
- fetch.Description = "Example File from example.org";
- fetch.ShortDesc = "Example File";
- TestItem fetchO(&Acq);
- fetch.Owner = &fetchO;
- EXPECT_EQ("", out.str());
- Stat.Fetch(fetch);
- EXPECT_EQ("Get:1 Example File from example.org\n", out.str());
- Stat.Fetch(fetch);
- EXPECT_EQ("Get:1 Example File from example.org\n"
- "Get:1 Example File from example.org\n", out.str());
- Stat.Stop();
- EXPECT_EQ("Get:1 Example File from example.org\n"
- "Get:1 Example File from example.org\n", out.str());
- }
- TEST(AcqProgress, FetchFileSize)
- {
- std::ostringstream out;
- unsigned int width = 80;
- AcqTextStatus Stat(out, width, 0);
- Stat.Start();
- pkgAcquire Acq(&Stat);
- pkgAcquire::ItemDesc fetch;
- fetch.URI = "http://example.org/file";
- fetch.Description = "Example File from example.org";
- fetch.ShortDesc = "Example File";
- TestItem fetchO(&Acq);
- fetchO.FileSize = 100;
- fetch.Owner = &fetchO;
- EXPECT_EQ("", out.str());
- Stat.Fetch(fetch);
- EXPECT_EQ("Get:1 Example File from example.org [100 B]\n", out.str());
- fetchO.FileSize = 42;
- Stat.Fetch(fetch);
- EXPECT_EQ("Get:1 Example File from example.org [100 B]\n"
- "Get:1 Example File from example.org [42 B]\n", out.str());
- Stat.Stop();
- EXPECT_EQ("Get:1 Example File from example.org [100 B]\n"
- "Get:1 Example File from example.org [42 B]\n", out.str());
- }
- TEST(AcqProgress, Fail)
- {
- std::ostringstream out;
- unsigned int width = 80;
- AcqTextStatus Stat(out, width, 0);
- Stat.Start();
- pkgAcquire Acq(&Stat);
- pkgAcquire::ItemDesc fetch;
- fetch.URI = "http://example.org/file";
- fetch.Description = "Example File from example.org";
- fetch.ShortDesc = "Example File";
- TestItem fetchO(&Acq);
- fetchO.FileSize = 100;
- fetchO.Status = pkgAcquire::Item::StatIdle;
- fetch.Owner = &fetchO;
- EXPECT_EQ("", out.str());
- Stat.Fail(fetch);
- EXPECT_EQ("Ign:1 Example File from example.org\n", out.str());
- fetchO.Status = pkgAcquire::Item::StatDone;
- Stat.Fail(fetch);
- EXPECT_EQ("Ign:1 Example File from example.org\n"
- "Ign:1 Example File from example.org\n", out.str());
- fetchO.Status = pkgAcquire::Item::StatError;
- fetchO.ErrorText = "An error test!";
- Stat.Fail(fetch);
- EXPECT_EQ("Ign:1 Example File from example.org\n"
- "Ign:1 Example File from example.org\n"
- "Err:1 Example File from example.org\n"
- " An error test!\n", out.str());
- _config->Set("Acquire::Progress::Ignore::ShowErrorText", true);
- fetchO.Status = pkgAcquire::Item::StatDone;
- Stat.Fail(fetch);
- EXPECT_EQ("Ign:1 Example File from example.org\n"
- "Ign:1 Example File from example.org\n"
- "Err:1 Example File from example.org\n"
- " An error test!\n"
- "Ign:1 Example File from example.org\n"
- " An error test!\n", out.str());
- _config->Set("Acquire::Progress::Ignore::ShowErrorText", true);
- Stat.Stop();
- EXPECT_EQ("Ign:1 Example File from example.org\n"
- "Ign:1 Example File from example.org\n"
- "Err:1 Example File from example.org\n"
- " An error test!\n"
- "Ign:1 Example File from example.org\n"
- " An error test!\n", out.str());
- }
- TEST(AcqProgress, Pulse)
- {
- std::ostringstream out;
- unsigned int width = 80;
- AcqTextStatus Stat(out, width, 0);
- _config->Set("APT::Sandbox::User", ""); // ensure we aren't sandboxing
- pkgAcquire Acq(&Stat);
- pkgAcquire::ItemDesc fetch;
- fetch.URI = "http://example.org/file";
- fetch.Description = "Example File from example.org";
- fetch.ShortDesc = "Example File";
- TestItem fetchO(&Acq);
- fetchO.FileSize = 100;
- fetchO.Status = pkgAcquire::Item::StatFetching;
- fetch.Owner = &fetchO;
- // make screen smaller and bigger again while running
- EXPECT_TRUE(Stat.Pulse(&Acq));
- EXPECT_EQ("\r0% [Working]", out.str());
- width = 8;
- EXPECT_TRUE(Stat.Pulse(&Acq));
- EXPECT_EQ("\r0% [Working]"
- "\r "
- "\r0% [Work", out.str());
- width = 80;
- EXPECT_TRUE(Stat.Pulse(&Acq));
- EXPECT_EQ("\r0% [Working]"
- "\r "
- "\r0% [Work"
- "\r0% [Working]", out.str());
- }
|