deploy_chrome: Default to deploying everything we can find.
The default mode is now to deploy everything we know of that exists.
This mode suits the development workflow better, since developers don't
need to specify extra flags.
BUG=None
TEST=unit tests. Ran with --gs-path and --staging-only.
Change-Id: I8d54daed6c084aee4822d2ee19a4d443f48bee87
Reviewed-on: https://gerrit.chromium.org/gerrit/42561
Reviewed-by: David James <davidjames@chromium.org>
Commit-Queue: Ryan Cui <rcui@chromium.org>
Tested-by: Ryan Cui <rcui@chromium.org>
diff --git a/scripts/deploy_chrome_unittest.py b/scripts/deploy_chrome_unittest.py
index 43409d2..795d8e4 100755
--- a/scripts/deploy_chrome_unittest.py
+++ b/scripts/deploy_chrome_unittest.py
@@ -9,12 +9,15 @@
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)),
'..', '..'))
+
+from chromite.lib import chrome_util
from chromite.lib import cros_build_lib
from chromite.lib import cros_test_lib
from chromite.lib import partial_mock
from chromite.lib import remote_access_unittest
from chromite.scripts import deploy_chrome
+
# TODO(build): Finish test wrapper (http://crosbug.com/37517).
# Until then, this has to be after the chromite imports.
import mock
@@ -52,10 +55,24 @@
def testNoTarget(self):
"""Test no target specified."""
argv = ['--gs-path', _GS_PATH]
+ self.assertParseError(argv)
+
+ def assertParseError(self, argv):
with self.OutputCapturer():
self.assertRaises2(SystemExit, _ParseCommandLine, argv,
check_attrs={'code': 2})
+ def testStagingFlagsNoStrict(self):
+ """Errors out when --staging-flags is set without --strict."""
+ argv = ['--staging-only', '--build-dir=/path/to/nowhere',
+ '--staging-flags=highdpi']
+ self.assertParseError(argv)
+
+ def testStrictNoBuildDir(self):
+ """Errors out when --strict is set without --build-dir."""
+ argv = ['--staging-only', '--strict', '--gs-path', _GS_PATH]
+ self.assertParseError(argv)
+
class DeployChromeMock(partial_mock.PartialMock):
@@ -96,19 +113,19 @@
pass
-class DeployChromeTest(cros_test_lib.MockTempDirTestCase):
-
- def _GetDeployChrome(self):
- options, _ = _ParseCommandLine(list(_REGULAR_TO) + ['--gs-path', _GS_PATH])
+class DeployTest(cros_test_lib.MockTempDirTestCase):
+ def _GetDeployChrome(self, args):
+ options, _ = _ParseCommandLine(args)
return deploy_chrome.DeployChrome(
options, self.tempdir, os.path.join(self.tempdir, 'staging'))
def setUp(self):
self.deploy_mock = self.StartPatcher(DeployChromeMock())
- self.deploy = self._GetDeployChrome()
+ self.deploy = self._GetDeployChrome(
+ list(_REGULAR_TO) + ['--gs-path', _GS_PATH])
-class TestPrepareTarget(DeployChromeTest):
+class TestPrepareTarget(DeployTest):
"""Testing disabling of rootfs verification and RO mode."""
def testSuccess(self):
@@ -142,7 +159,7 @@
"""
-class TestCheckRootfs(DeployChromeTest):
+class TestCheckRootfs(DeployTest):
"""Test Rootfs RW check functionality."""
def setUp(self):
@@ -162,7 +179,7 @@
self.assertTrue(self.deploy._CheckRootfsWriteable())
-class TestUiJobStarted(DeployChromeTest):
+class TestUiJobStarted(DeployTest):
"""Test detection of a running 'ui' job."""
def MockStatusUiCmd(self, output):
@@ -179,5 +196,29 @@
self.assertTrue(self.deploy._CheckUiJobStarted())
+class StagingTest(cros_test_lib.MockTempDirTestCase):
+ """Test user-mode and ebuild-mode staging functionality."""
+
+ def setUp(self):
+ 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']
+
+ def testEmptyDeploySuccess(self):
+ """User-mode staging - stage whatever we can find."""
+ options, _ = _ParseCommandLine(self.common_flags)
+ deploy_chrome._PrepareStagingDir(
+ options, self.tempdir, self.staging_dir)
+
+ def testEmptyDeployStrict(self):
+ """ebuild-mode staging - stage only things we want."""
+ options, _ = _ParseCommandLine(
+ self.common_flags + ['--gyp-defines', 'chromeos=1', '--strict'])
+ self.assertRaises(
+ chrome_util.MissingPathError, deploy_chrome._PrepareStagingDir,
+ options, self.tempdir, self.staging_dir)
+
+
if __name__ == '__main__':
cros_test_lib.main()