pushimage: add cli option for forcing channels

This makes it easier to run pushimage by hand and send to a custom channel.

BUG=chromium:728130
TEST=`./scripts/pushimage_unittest` & precq passes

Change-Id: I7b8015b05b5fcfcf23c4ab570ac9ca921bcc0b29
Reviewed-on: https://chromium-review.googlesource.com/647781
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Mattias Nissler <mnissler@chromium.org>
Reviewed-by: Ningning Xia <nxia@chromium.org>
diff --git a/scripts/pushimage_unittest.py b/scripts/pushimage_unittest.py
index a423143..47bfe03 100644
--- a/scripts/pushimage_unittest.py
+++ b/scripts/pushimage_unittest.py
@@ -348,6 +348,19 @@
                                  force_keysets=('key1', 'key2', 'key3'))
     self.assertEqual(urls, EXPECTED)
 
+  def testForceChannel(self):
+    """Verify behavior when user has specified custom channel"""
+    EXPECTED = {
+        'meep': [
+            ('gs://chromeos-releases/meep-channel/test.board/5126.0.0/'
+             'ChromeOS-recovery-R34-5126.0.0-test.board.instructions'),
+        ],
+    }
+    with mock.patch.object(gs.GSContext, 'Exists', return_value=True):
+      urls = pushimage.PushImage('/src', 'test.board', 'R34-5126.0.0',
+                                 force_channels=('meep',))
+    self.assertEqual(urls, EXPECTED)
+
   def testMultipleAltInsns(self):
     """Verify behavior when processing an insn w/multiple insn overlays"""
     EXPECTED = {