Save the target file when applypatch tests fail

Save the target file to tempfile upon unittest failures so that we can
try to decompress the deflate chunks in the flaky unittests. And print
the zlib version in case that gets changed.

Also the SHA1 of the uncompressed data seems correct; so only keep the
final SHA1 to double confirm.

Bug: 67849209
Test: recovery_component_test
Change-Id: Ic6447c2b75c29379d6844cd23a0ff1c4305694a0
diff --git a/applypatch/applypatch.cpp b/applypatch/applypatch.cpp
index 39b8030..14137de 100644
--- a/applypatch/applypatch.cpp
+++ b/applypatch/applypatch.cpp
@@ -672,6 +672,14 @@
          bonus_digest);
     printf("bonus size %zu sha1 %s\n", bonus_data->data.size(), short_sha1(bonus_digest).c_str());
 
+    // TODO(b/67849209) Remove after debugging the unit test flakiness.
+    if (android::base::GetMinimumLogSeverity() <= android::base::LogSeverity::DEBUG) {
+      if (WriteToPartition(reinterpret_cast<const unsigned char*>(memory_sink_str.c_str()),
+                           memory_sink_str.size(), target_filename) != 0) {
+        LOG(DEBUG) << "Failed to write patched data " << target_filename;
+      }
+    }
+
     return 1;
   } else {
     printf("now %s\n", short_sha1(target_sha1).c_str());