diff options
-rw-r--r-- | adb/bugreport.cpp | 24 | ||||
-rw-r--r-- | adb/bugreport.h | 3 | ||||
-rw-r--r-- | adb/bugreport_test.cpp | 22 |
3 files changed, 25 insertions, 24 deletions
diff --git a/adb/bugreport.cpp b/adb/bugreport.cpp index 8a3eb0825..64f01bd8e 100644 --- a/adb/bugreport.cpp +++ b/adb/bugreport.cpp @@ -30,7 +30,12 @@ static constexpr char BUGZ_PROGRESS_SEPARATOR[] = "/"; class BugreportStandardStreamsCallback : public StandardStreamsCallbackInterface { public: BugreportStandardStreamsCallback(const std::string& dest_file, bool show_progress, Bugreport* br) - : br_(br), dest_file_(dest_file), show_progress_(show_progress), status_(-1), line_() { + : br_(br), + dest_file_(dest_file), + line_message_(android::base::StringPrintf("generating %s", dest_file_.c_str())), + show_progress_(show_progress), + status_(-1), + line_() { } void OnStdout(const char* buffer, int length) { @@ -62,12 +67,12 @@ class BugreportStandardStreamsCallback : public StandardStreamsCallbackInterface if (android::base::StartsWith(line, BUGZ_OK_PREFIX)) { if (show_progress_) { // Make sure pull message doesn't conflict with generation message. - br_->UpdateProgress(dest_file_, 100, 100, true); + br_->UpdateProgress(line_message_, 100, 100); } const char* zip_file = &line[strlen(BUGZ_OK_PREFIX)]; std::vector<const char*> srcs{zip_file}; - status_ = br_->DoSyncPull(srcs, dest_file_.c_str(), true, dest_file_.c_str()) ? 0 : 1; + status_ = br_->DoSyncPull(srcs, dest_file_.c_str(), true, line_message_.c_str()) ? 0 : 1; if (status_ != 0) { fprintf(stderr, "Could not copy file '%s' to '%s'\n", zip_file, dest_file_.c_str()); } @@ -96,6 +101,7 @@ class BugreportStandardStreamsCallback : public StandardStreamsCallbackInterface Bugreport* br_; const std::string dest_file_; + const std::string line_message_; bool show_progress_; int status_; @@ -156,15 +162,11 @@ int Bugreport::DoIt(TransportType transport_type, const char* serial, int argc, return SendShellCommand(transport_type, serial, bugz_command, false, &bugz_callback); } -void Bugreport::UpdateProgress(const std::string& file_name, int progress, int total, - bool keep_info_line) { +void Bugreport::UpdateProgress(const std::string& message, int progress, int total) { int progress_percentage = (progress * 100 / total); - line_printer_.Print(android::base::StringPrintf("[%3d%%] generating %s", progress_percentage, - file_name.c_str()), - LinePrinter::INFO); - if (keep_info_line) { - line_printer_.KeepInfoLine(); - } + line_printer_.Print( + android::base::StringPrintf("[%3d%%] %s", progress_percentage, message.c_str()), + LinePrinter::INFO); } int Bugreport::SendShellCommand(TransportType transport_type, const char* serial, diff --git a/adb/bugreport.h b/adb/bugreport.h index fd11a4a2b..ee99cbc22 100644 --- a/adb/bugreport.h +++ b/adb/bugreport.h @@ -43,8 +43,7 @@ class Bugreport { const char* name); private: - virtual void UpdateProgress(const std::string& file_name, int progress, int total, - bool keep_info_line = false); + virtual void UpdateProgress(const std::string& file_name, int progress, int total); LinePrinter line_printer_; DISALLOW_COPY_AND_ASSIGN(Bugreport); }; diff --git a/adb/bugreport_test.cpp b/adb/bugreport_test.cpp index e695b2431..a89d8dc7b 100644 --- a/adb/bugreport_test.cpp +++ b/adb/bugreport_test.cpp @@ -117,7 +117,7 @@ class BugreportMock : public Bugreport { bool disable_shell_protocol, StandardStreamsCallbackInterface* callback)); MOCK_METHOD4(DoSyncPull, bool(const std::vector<const char*>& srcs, const char* dst, bool copy_attrs, const char* name)); - MOCK_METHOD4(UpdateProgress, void(const std::string&, int, int, bool)); + MOCK_METHOD3(UpdateProgress, void(const std::string&, int, int)); }; class BugreportTest : public ::testing::Test { @@ -129,8 +129,8 @@ class BugreportTest : public ::testing::Test { WithArg<4>(ReturnCallbackDone(0)))); } - void ExpectProgress(int progress, int total, bool keep_info_line = false) { - EXPECT_CALL(br_, UpdateProgress(StrEq("file.zip"), progress, total, keep_info_line)); + void ExpectProgress(int progress, int total) { + EXPECT_CALL(br_, UpdateProgress(HasSubstr("file.zip"), progress, total)); } BugreportMock br_; @@ -159,7 +159,7 @@ TEST_F(BugreportTest, OkLegacy) { .WillOnce(DoAll(WithArg<4>(WriteOnStdout("OK:/device/bugreport.zip")), WithArg<4>(ReturnCallbackDone()))); EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"), - true, StrEq("file.zip"))) + true, HasSubstr("file.zip"))) .WillOnce(Return(true)); const char* args[1024] = {"bugreport", "file.zip"}; @@ -175,7 +175,7 @@ TEST_F(BugreportTest, OkLegacySplitBuffer) { WithArg<4>(WriteOnStdout("/bugreport.zip")), WithArg<4>(ReturnCallbackDone()))); EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"), - true, StrEq("file.zip"))) + true, HasSubstr("file.zip"))) .WillOnce(Return(true)); const char* args[1024] = {"bugreport", "file.zip"}; @@ -189,7 +189,7 @@ TEST_F(BugreportTest, Ok) { ExpectProgress(10, 100); ExpectProgress(50, 100); ExpectProgress(99, 100); - ExpectProgress(100, 100, true); + ExpectProgress(100, 100); // clang-format off EXPECT_CALL(br_, SendShellCommand(kTransportLocal, "HannibalLecter", "bugreportz -p", false, _)) .WillOnce(DoAll( @@ -208,7 +208,7 @@ TEST_F(BugreportTest, Ok) { WithArg<4>(WriteOnStdout(".zip")), WithArg<4>(ReturnCallbackDone()))); EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"), - true, StrEq("file.zip"))) + true, HasSubstr("file.zip"))) .WillOnce(Return(true)); const char* args[1024] = {"bugreport", "file.zip"}; @@ -218,12 +218,12 @@ TEST_F(BugreportTest, Ok) { // Tests 'adb bugreport file' when it succeeds TEST_F(BugreportTest, OkNoExtension) { SetBugreportzVersion("1.1"); - ExpectProgress(100, 100, true); + ExpectProgress(100, 100); EXPECT_CALL(br_, SendShellCommand(kTransportLocal, "HannibalLecter", "bugreportz -p", false, _)) .WillOnce(DoAll(WithArg<4>(WriteOnStdout("OK:/device/bugreport.zip\n")), WithArg<4>(ReturnCallbackDone()))); EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"), - true, StrEq("file.zip"))) + true, HasSubstr("file.zip"))) .WillOnce(Return(true)); const char* args[1024] = {"bugreport", "file"}; @@ -294,12 +294,12 @@ TEST_F(BugreportTest, BugreportzFailed) { // Tests 'adb bugreport file.zip' when the bugreport could not be pulled TEST_F(BugreportTest, PullFails) { SetBugreportzVersion("1.1"); - ExpectProgress(100, 100, true); + ExpectProgress(100, 100); EXPECT_CALL(br_, SendShellCommand(kTransportLocal, "HannibalLecter", "bugreportz -p", false, _)) .WillOnce(DoAll(WithArg<4>(WriteOnStdout("OK:/device/bugreport.zip")), WithArg<4>(ReturnCallbackDone()))); EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"), - true, StrEq("file.zip"))) + true, HasSubstr("file.zip"))) .WillOnce(Return(false)); const char* args[1024] = {"bugreport", "file.zip"}; |