cros_install_debug_syms: fix encoding issues

Make sure we read the pickled data as binary as text makes no sense.
Make sure captured output we parse as text uses UTF-8 encoding.

BUG=chromium:997354
TEST=`./run_tests` passes

Change-Id: Ib7a5d62a46d66428f2201bb5bb39d3c521a6d95f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1954633
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/scripts/cros_install_debug_syms_unittest.py b/scripts/cros_install_debug_syms_unittest.py
index bb9d44e..32c95bb 100644
--- a/scripts/cros_install_debug_syms_unittest.py
+++ b/scripts/cros_install_debug_syms_unittest.py
@@ -12,6 +12,7 @@
 
 from chromite.lib import cros_test_lib
 from chromite.scripts import cros_install_debug_syms
+from chromite.utils import outcap
 
 
 SimpleIndex = namedtuple('SimpleIndex', 'header packages')
@@ -78,3 +79,31 @@
                          '/paladin1234/shill-0-r1.debug.tbz2')
     self.assertEqual(cros_install_debug_syms.ListBinhost(binhost),
                      {'chromeos-base/shill-0-r1': debug_symbols_url})
+
+
+class InstallArgsTest(cros_test_lib.MockTestCase):
+  """Test InstallArgs utility funcs."""
+
+  def testListInstallArgs(self):
+    """Check ListInstallArgs behavior."""
+    parser = cros_install_debug_syms.GetParser()
+    opts = parser.parse_args(['--board', 'betty', 'sys-fs/fuse'])
+    self.PatchObject(cros_install_debug_syms, 'GetInstallArgs', return_value=[
+        ('a/b-1', 'gs://bucket/b-1.tbz2'),
+        ('c/d-1', 'gs://bucket/d-1.tbz2'),
+    ])
+    with outcap.OutputCapturer() as cap:
+      cros_install_debug_syms.ListInstallArgs(opts, '/foo')
+    self.assertEqual('a/b-1 gs://bucket/b-1.tbz2\nc/d-1 gs://bucket/d-1.tbz2\n',
+                     cap.GetStdout())
+
+  def testGetInstallArgsList(self):
+    """Check GetInstallArgsList behavior."""
+    stdout = ('sys-apps/which-2.21 gs://bucket/board/which-2.21.debug.tbz2\n'
+              'dev-libs/foo-1-r1 gs://bucket/board/foo-1-r1.debug.tbz2\n')
+    rc = self.StartPatcher(cros_test_lib.RunCommandMock())
+    rc.AddCmdResult(cmd=['foo', '--list'], stdout=stdout)
+    self.assertEqual(
+        [['sys-apps/which-2.21', 'gs://bucket/board/which-2.21.debug.tbz2'],
+         ['dev-libs/foo-1-r1', 'gs://bucket/board/foo-1-r1.debug.tbz2']],
+        cros_install_debug_syms.GetInstallArgsList(['foo']))