146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)"""A library for cross-platform browser tests.""" 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)import inspect 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)import logging 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochimport os 107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)import sys 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# Ensure Python >= 2.7. 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)if sys.version_info < (2, 7): 14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch print >> sys.stderr, 'Need Python 2.7 or greater.' 15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch sys.exit(-1) 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochfrom telemetry.util import global_hooks 18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochglobal_hooks.InstallHooks() 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)from telemetry.core.browser import Browser 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)from telemetry.core.browser_options import BrowserFinderOptions 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)from telemetry.core.tab import Tab 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)from telemetry.page.page_measurement import PageMeasurement 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)from telemetry.page.page_runner import Run as RunPage 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)__all__ = [] 297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)# Find all local vars that are classes or functions and make sure they're in the 317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)# __all__ array so they're included in docs. 327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)for x in dir(): 337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if x.startswith('_'): 347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) continue 35424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) if x in (inspect, os, sys): 367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) continue 377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) m = sys.modules[__name__] 387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (inspect.isclass(getattr(m, x)) or 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) inspect.isfunction(getattr(m, x))): 407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) __all__.append(x) 41