From e5d665b46f5bbc841ab3eeb2070f390932f1a239 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Tue, 23 May 2017 16:56:47 -0700 Subject: [PATCH] Always print the initial bugreport progress message. Otherwise, it might take seconds to display the initial percentage, and the user might thing something is wrong and CTRL-C the process. Fixes: 62003852 Test: added BugreportTest.OkProgressZeroPercentIsNotIgnored Test: m -j32 adb_test && ./out/host/linux-x86/nativetest64/adb_test/adb_test --gtest_filter=BugreportTest.* Change-Id: I8e7dbb28666c825c1408d5d204f813064fc3048f --- adb/bugreport.cpp | 2 +- adb/bugreport_test.cpp | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/adb/bugreport.cpp b/adb/bugreport.cpp index d0cc072ab..372a3b4aa 100644 --- a/adb/bugreport.cpp +++ b/adb/bugreport.cpp @@ -149,7 +149,7 @@ class BugreportStandardStreamsCallback : public StandardStreamsCallbackInterface int progress = std::stoi(line.substr(idx1, (idx2 - idx1))); int total = std::stoi(line.substr(idx2 + 1)); int progress_percentage = (progress * 100 / total); - if (progress_percentage <= last_progress_percentage_) { + if (progress_percentage != 0 && progress_percentage <= last_progress_percentage_) { // Ignore. return; } diff --git a/adb/bugreport_test.cpp b/adb/bugreport_test.cpp index 2b368d7be..d3787b40a 100644 --- a/adb/bugreport_test.cpp +++ b/adb/bugreport_test.cpp @@ -311,6 +311,29 @@ TEST_F(BugreportTest, OkProgressAlwaysForward) { ASSERT_EQ(0, br_.DoIt(kTransportLocal, "HannibalLecter", 2, args)); } +// Tests 'adb bugreport file.zip' when it succeeds and displays the initial progress of 0% +TEST_F(BugreportTest, OkProgressZeroPercentIsNotIgnored) { + ExpectBugreportzVersion("1.1"); + ExpectProgress(0); + ExpectProgress(1); + // clang-format off + EXPECT_CALL(br_, SendShellCommand(kTransportLocal, "HannibalLecter", "bugreportz -p", false, _)) + // NOTE: DoAll accepts at most 10 arguments, and we're almost reached that limit... + .WillOnce(DoAll( + WithArg<4>(WriteOnStdout("BEGIN:/device/bugreport.zip\n")), + WithArg<4>(WriteOnStdout("PROGRESS:1/100000\n")), + WithArg<4>(WriteOnStdout("PROGRESS:1/100\n")), // 1% + WithArg<4>(WriteOnStdout("OK:/device/bugreport.zip")), + WithArg<4>(ReturnCallbackDone()))); + // clang-format on + EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"), + true, StrEq("pulling file.zip"))) + .WillOnce(Return(true)); + + const char* args[] = {"bugreport", "file.zip"}; + ASSERT_EQ(0, br_.DoIt(kTransportLocal, "HannibalLecter", 2, args)); +} + // Tests 'adb bugreport dir' when it succeeds and destination is a directory. TEST_F(BugreportTest, OkDirectory) { ExpectBugreportzVersion("1.1");