deploy_chrome: strip binaries during staging.

So that we support deploying Debug builds of Chrome onto devices.
The script uses the 'strip' binary fetched by ChromeSDK.

BUG=None
TEST=Unit tests, and running locally.

Change-Id: Ieee088fa32735609758396aa6ab5491171325f96
Reviewed-on: https://gerrit.chromium.org/gerrit/43082
Reviewed-by: Ryan Cui <rcui@chromium.org>
Tested-by: Ryan Cui <rcui@chromium.org>
Commit-Queue: Ryan Cui <rcui@chromium.org>
diff --git a/scripts/deploy_chrome_unittest.py b/scripts/deploy_chrome_unittest.py
index 795d8e4..3f877c9 100755
--- a/scripts/deploy_chrome_unittest.py
+++ b/scripts/deploy_chrome_unittest.py
@@ -10,9 +10,11 @@
 sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)),
                                 '..', '..'))
 
+from chromite.cros.commands import cros_chrome_sdk_unittest
 from chromite.lib import chrome_util
 from chromite.lib import cros_build_lib
 from chromite.lib import cros_test_lib
+from chromite.lib import osutils
 from chromite.lib import partial_mock
 from chromite.lib import remote_access_unittest
 from chromite.scripts import deploy_chrome
@@ -36,6 +38,8 @@
 class InterfaceTest(cros_test_lib.OutputTestCase):
   """Tests the commandline interface of the script."""
 
+  BOARD = 'lumpy'
+
   def testGsLocalPathUnSpecified(self):
     """Test no chrome path specified."""
     with self.OutputCapturer():
@@ -65,7 +69,7 @@
   def testStagingFlagsNoStrict(self):
     """Errors out when --staging-flags is set without --strict."""
     argv = ['--staging-only', '--build-dir=/path/to/nowhere',
-            '--staging-flags=highdpi']
+            '--board=%s' % self.BOARD, '--staging-flags=highdpi']
     self.assertParseError(argv)
 
   def testStrictNoBuildDir(self):
@@ -73,6 +77,10 @@
     argv = ['--staging-only', '--strict', '--gs-path', _GS_PATH]
     self.assertParseError(argv)
 
+  def testNoBoardBuildDir(self):
+    argv = ['--staging-only', '--build-dir=/path/to/nowhere']
+    self.assertParseError(argv)
+
 
 class DeployChromeMock(partial_mock.PartialMock):
 
@@ -203,7 +211,13 @@
     self.sudo_cleanup = True
     self.staging_dir = os.path.join(self.tempdir, 'staging')
     self.build_dir = os.path.join(self.tempdir, 'build_dir')
-    self.common_flags = ['--build-dir', self.build_dir, '--staging-only']
+    self.common_flags = ['--build-dir', self.build_dir,
+                         '--board=lumpy', '--staging-only', '--cache-dir',
+                         self.tempdir]
+    self.sdk_mock = self.StartPatcher(cros_chrome_sdk_unittest.ChromeSDKMock())
+    self.PatchObject(
+        osutils, 'SourceEnvironment', autospec=True,
+        return_value={'STRIP': 'x86_64-cros-linux-gnu-strip'})
 
   def testEmptyDeploySuccess(self):
     """User-mode staging - stage whatever we can find."""
@@ -215,6 +229,9 @@
     """ebuild-mode staging - stage only things we want."""
     options, _ = _ParseCommandLine(
         self.common_flags + ['--gyp-defines', 'chromeos=1', '--strict'])
+    chrome_util.MissingPathError(deploy_chrome._PrepareStagingDir,
+        options, self.tempdir, self.staging_dir)
+
     self.assertRaises(
         chrome_util.MissingPathError, deploy_chrome._PrepareStagingDir,
         options, self.tempdir, self.staging_dir)