Index: tools/telemetry/telemetry/core/backends/chrome/android_browser_finder_unittest.py |
diff --git a/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder_unittest.py b/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder_unittest.py |
index 98b84da2124815dab7a037d0ea5a18dd61728f50..073062becc14511665e52c0d26d2bc0d13a1b82c 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder_unittest.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder_unittest.py |
@@ -6,6 +6,7 @@ import unittest |
from telemetry.core import browser_options |
from telemetry.core.backends.chrome import android_browser_finder |
+from telemetry.unittest_util import system_stub |
class FakeAndroidPlatform(): |
@@ -21,13 +22,37 @@ class AndroidBrowserFinderTest(unittest.TestCase): |
def setUp(self): |
self.finder_options = browser_options.BrowserFinderOptions() |
+ # Mock out what's needed for testing with exact APKs |
+ self._android_browser_finder_stub = system_stub.Override( |
+ android_browser_finder, ['adb_commands', 'os']) |
+ |
+ def tearDown(self): |
+ self._android_browser_finder_stub.Restore() |
+ |
def testNoPlatformReturnsEmptyList(self): |
fake_platform = None |
possible_browsers = android_browser_finder._FindAllPossibleBrowsers( |
self.finder_options, fake_platform) |
self.assertEqual([], possible_browsers) |
- def testCanLaunchAlwaysTrueReturnsAll(self): |
+ def testCanLaunchAlwaysTrueReturnsAllExceptExact(self): |
+ fake_platform = FakeAndroidPlatform(can_launch=True) |
+ all_types = set( |
+ android_browser_finder.FindAllBrowserTypes(self.finder_options)) |
+ expected_types = all_types - set(('exact',)) |
+ possible_browsers = android_browser_finder._FindAllPossibleBrowsers( |
+ self.finder_options, fake_platform) |
+ self.assertEqual( |
+ expected_types, |
+ set([b.browser_type for b in possible_browsers])) |
+ |
+ def testCanLaunchAlwaysTrueWithExactApkReturnsAll(self): |
+ self._android_browser_finder_stub.os.path.files.append( |
+ '/foo/content-shell.apk') |
+ self.finder_options.browser_executable = '/foo/content-shell.apk' |
+ self._android_browser_finder_stub.adb_commands.apk_package_name = \ |
+ 'org.chromium.content_shell_apk' |
+ |
fake_platform = FakeAndroidPlatform(can_launch=True) |
expected_types = set( |
android_browser_finder.FindAllBrowserTypes(self.finder_options)) |
@@ -37,6 +62,26 @@ class AndroidBrowserFinderTest(unittest.TestCase): |
expected_types, |
set([b.browser_type for b in possible_browsers])) |
+ def testErrorWithUnknownExactApk(self): |
+ self._android_browser_finder_stub.os.path.files.append( |
+ '/foo/content-shell.apk') |
+ self.finder_options.browser_executable = '/foo/content-shell.apk' |
+ self._android_browser_finder_stub.adb_commands.apk_package_name = \ |
+ 'org.unknown.app' |
+ |
+ fake_platform = FakeAndroidPlatform(can_launch=True) |
+ self.assertRaises(Exception, |
+ android_browser_finder._FindAllPossibleBrowsers, |
+ self.finder_options, fake_platform) |
+ |
+ def testErrorWithNonExistantExactApk(self): |
+ self.finder_options.browser_executable = '/foo/content-shell.apk' |
+ |
+ fake_platform = FakeAndroidPlatform(can_launch=True) |
+ self.assertRaises(Exception, |
+ android_browser_finder._FindAllPossibleBrowsers, |
+ self.finder_options, fake_platform) |
+ |
class FakePossibleBrowser(object): |
def __init__(self, last_modification_time): |