update_engine: Fake chromeos-setgoodkernel command for testing.

This patch fakes the chromeos-setgoodkernel command when running
unittests so the command doesn't attempt to run it. It also makes
Subprocess log the error message when there's a failure running
an async process.

BUG=chromium:401866
TEST=cros_workon_make update_engine --test

Change-Id: Ieca3216c57f6f9bc2f71a53e520575ae1fc19c0e
Reviewed-on: https://chromium-review.googlesource.com/212260
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Alex Deymo <deymo@chromium.org>
diff --git a/update_attempter_unittest.cc b/update_attempter_unittest.cc
index 632c297..c9ff687 100644
--- a/update_attempter_unittest.cc
+++ b/update_attempter_unittest.cc
@@ -71,6 +71,12 @@
 
     // Finish initializing the attempter.
     attempter_.Init();
+
+    // We set the set_good_kernel command to a non-existent path so it fails to
+    // run it. This avoids the async call to the command and continues the
+    // update process right away. Tests testing that behavior can override the
+    // default set_good_kernel command if needed.
+    attempter_.set_good_kernel_cmd_ = "/path/to/non-existent/command";
   }
 
   virtual void SetUp() {