Chromium Code Reviews| Index: tools/telemetry/telemetry/core/backends/chrome/android_browser_backend_unittest.py |
| diff --git a/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend_unittest.py b/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend_unittest.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..059b5ca70419f69c1b6764f24bd7606811dc0661 |
| --- /dev/null |
| +++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend_unittest.py |
| @@ -0,0 +1,69 @@ |
| +# Copyright 2013 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +import unittest |
| + |
| +from telemetry.core import browser_options |
| +from telemetry.core import util |
| +from telemetry.core.backends.chrome import android_browser_backend |
| +from telemetry.core.platform import android_device |
| +from telemetry.core.platform import android_platform_backend |
| + |
| +util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android') |
| +from pylib.device import device_errors |
| +from pylib.device import device_utils |
| + |
| +util.AddDirToPythonPath(util.GetChromiumSrcDir(), |
| + 'third_party', 'pymock') |
| +import mock # pylint: disable=import-error |
| + |
| + |
| +class MockBrowserBackend(android_browser_backend.AndroidBrowserBackend): |
| + """Mock of an AndroidBrowserBackend with a custom device object""" |
| + |
| + def __init__(self, device): |
| + platform_backend = mock.Mock( |
| + spec=android_platform_backend.AndroidPlatformBackend) |
| + platform_backend.adb.device.return_value = device |
| + browser_opts = browser_options.BrowserOptions() |
| + browser_opts.browser_type = 'android-chrome-shell' |
| + super(MockBrowserBackend, self).__init__( |
| + android_platform_backend=platform_backend, |
| + browser_options=browser_opts, |
| + backend_settings=android_browser_backend.ChromeShellBackendSettings( |
| + 'test.package.name'), |
| + use_rndis_forwarder=False, |
| + output_profile_path=None, |
| + extensions_to_load=[], |
| + target_arch=None) |
| + |
| +class AndroidBrowserBackendTest(unittest.TestCase): |
| + """Test Chrome command line set-up/restore.""" |
| + |
| + def testRestoreOldCommandLine_restoreExisting(self): |
| + old_command_line = 'chrome_shell --with --some --old --options' |
| + device = mock.Mock(spec=device_utils.DeviceUtils) |
| + device.old_interface = mock.Mock() |
| + device.ReadFile.return_value = old_command_line |
| + browser_backend = MockBrowserBackend(device) |
| + browser_backend._SetUpCommandLine() |
| + device.WriteFile.assert_called_once_with(mock.ANY, mock.ANY, as_root=True) |
|
tonyg
2015/01/05 17:28:43
I think these mock-style unittests are just closel
jbudorick
2015/01/05 17:50:42
We've generally been switching to this style of te
|
| + device.WriteFile.reset_mock() |
| + browser_backend._RestoreCommandLine() |
| + device.WriteFile.assert_called_once_with(mock.ANY, old_command_line, |
| + as_root=True) |
| + |
| + def testRestoreOldCommandLine_didNotExist(self): |
| + device = mock.Mock(spec=device_utils.DeviceUtils) |
| + device.old_interface = mock.Mock() |
| + device.ReadFile.side_effect = device_errors.CommandFailedError( |
| + 'File not found', str(device)) |
| + browser_backend = MockBrowserBackend(device) |
| + browser_backend._SetUpCommandLine() |
| + device.WriteFile.assert_called_once_with(mock.ANY, mock.ANY, as_root=True) |
| + device.WriteFile.reset_mock() |
| + browser_backend._RestoreCommandLine() |
| + self.assertFalse(device.WriteFile.called) |
| + device.RunShellCommand.assert_called_once_with(['rm', mock.ANY], |
| + as_root=True) |