diff options
Diffstat (limited to 'chrome/test')
-rw-r--r-- | chrome/test/pyautolib/pyauto.py | 12 | ||||
-rw-r--r-- | chrome/test/pyautolib/pyautolib.cc | 17 | ||||
-rw-r--r-- | chrome/test/pyautolib/pyautolib.h | 7 | ||||
-rw-r--r-- | chrome/test/pyautolib/pyautolib.i | 7 | ||||
-rw-r--r-- | chrome/test/ui/ui_test.cc | 4 | ||||
-rw-r--r-- | chrome/test/ui/ui_test.h | 3 | ||||
-rw-r--r-- | chrome/test/unit/chrome_test_suite.h | 10 |
7 files changed, 54 insertions, 6 deletions
diff --git a/chrome/test/pyautolib/pyauto.py b/chrome/test/pyautolib/pyauto.py index 4fee17c..636552a 100644 --- a/chrome/test/pyautolib/pyauto.py +++ b/chrome/test/pyautolib/pyauto.py @@ -39,13 +39,13 @@ def _LocateBinDirs(): _LocateBinDirs() try: - from pyautolib import * + import pyautolib except ImportError: print >>sys.stderr, "Could not locate built libraries. Did you build?" raise -class PyUITest(PyUITestSuite, unittest.TestCase): +class PyUITest(pyautolib.PyUITestSuite, unittest.TestCase): """Base class for UI Test Cases in Python. A browser is created before executing each test, and is destroyed after @@ -64,11 +64,15 @@ class PyUITest(PyUITestSuite, unittest.TestCase): """ def __init__(self, methodName='runTest'): - PyUITestSuite.__init__(self, sys.argv) + pyautolib.PyUITestSuite.__init__(self, sys.argv) + # Figure out path to chromium binaries + browser_dir = os.path.normpath(os.path.dirname(pyautolib.__file__)) + os.environ['PATH'] = browser_dir + os.pathsep + os.environ['PATH'] + self.Initialize(pyautolib.FilePath(browser_dir)) unittest.TestCase.__init__(self, methodName) def __del__(self): - PyUITestSuite.__del__(self) + pyautolib.PyUITestSuite.__del__(self) def run(self, result=None): """The main run method. diff --git a/chrome/test/pyautolib/pyautolib.cc b/chrome/test/pyautolib/pyautolib.cc index 5ebfe0f..b9090e4 100644 --- a/chrome/test/pyautolib/pyautolib.cc +++ b/chrome/test/pyautolib/pyautolib.cc @@ -10,13 +10,18 @@ PyUITestSuite::PyUITestSuite(int argc, char** argv) : UITestSuite(argc, argv), UITestBase() { - UITestSuite::Initialize(); } PyUITestSuite::~PyUITestSuite() { UITestSuite::Shutdown(); } +void PyUITestSuite::Initialize(const FilePath& browser_dir) { + UITestSuite::SetBrowserDirectory(browser_dir); + UITestBase::SetBrowserDirectory(browser_dir); + UITestSuite::Initialize(); +} + void PyUITestSuite::SetUp() { UITestBase::SetUp(); } @@ -48,6 +53,15 @@ bool PyUITestSuite::ApplyAccelerator(int id, int window_index) { return browser_proxy->ApplyAccelerator(id); } +bool PyUITestSuite::RunCommand(int browser_command, int window_index){ + scoped_refptr<BrowserProxy> browser_proxy = + automation()->GetBrowserWindow(window_index); + EXPECT_TRUE(browser_proxy.get()); + if (!browser_proxy.get()) + return false; + return browser_proxy->RunCommand(browser_command); +} + bool PyUITestSuite::ActivateTab(int tab_index, int window_index) { scoped_refptr<BrowserProxy> browser_proxy = automation()->GetBrowserWindow(window_index); @@ -144,4 +158,3 @@ bool PyUITestSuite::WaitForBookmarkBarVisibilityChange(bool wait_for_open) { return completed; } - diff --git a/chrome/test/pyautolib/pyautolib.h b/chrome/test/pyautolib/pyautolib.h index aab4dce..461834a 100644 --- a/chrome/test/pyautolib/pyautolib.h +++ b/chrome/test/pyautolib/pyautolib.h @@ -30,6 +30,10 @@ class PyUITestSuite : public UITestSuite, public UITestBase { PyUITestSuite(int argc, char** argv); ~PyUITestSuite(); + // Initialize the setup. Should be called before launching the browser. + // |browser_dir| is the path to dir containing chromium binaries. + void Initialize(const FilePath& browser_dir); + // SetUp,TearDown is redeclared as public to make it accessible from swig. virtual void SetUp(); virtual void TearDown(); @@ -59,6 +63,9 @@ class PyUITestSuite : public UITestSuite, public UITestBase { // Returns true if the call was successful. bool ApplyAccelerator(int id, int window_index = 0); + // Like ApplyAccelerator except that it waits for the command to execute. + bool RunCommand(int browser_command, int window_index = 0); + // Shows or hides the download shelf. void SetDownloadShelfVisible(bool is_visible, int window_index = 0); diff --git a/chrome/test/pyautolib/pyautolib.i b/chrome/test/pyautolib/pyautolib.i index 28aa983..f1a01f1 100644 --- a/chrome/test/pyautolib/pyautolib.i +++ b/chrome/test/pyautolib/pyautolib.i @@ -81,6 +81,10 @@ class PyUITestSuite { public: PyUITestSuite(int argc, char** argv); + %feature("docstring", "Initialize the entire setup. Should be called " + "before launching the browser. For internal use.") Initialize; + void Initialize(const FilePath& browser_dir); + %feature("docstring", "Fires up the browser and opens a window.") SetUp; virtual void SetUp(); @@ -106,6 +110,9 @@ class PyUITestSuite { "Returns True on success.") ApplyAccelerator; bool ApplyAccelerator(int id, int window_index=0); + %feature("docstring", "Like ApplyAccelerator, except that it waits for " + "the command to execute.") RunCommand; + bool RunCommand(int browser_command, int window_index = 0); // Get/fetch properties %feature("docstring", diff --git a/chrome/test/ui/ui_test.cc b/chrome/test/ui/ui_test.cc index a838327..b436368 100644 --- a/chrome/test/ui/ui_test.cc +++ b/chrome/test/ui/ui_test.cc @@ -1488,6 +1488,10 @@ void UITestBase::UseReferenceBuild() { #elif defined(OS_MACOSX) dir = dir.AppendASCII("chrome_mac"); #endif + SetBrowserDirectory(dir); +} + +void UITestBase::SetBrowserDirectory(const FilePath& dir) { browser_directory_ = dir; } diff --git a/chrome/test/ui/ui_test.h b/chrome/test/ui/ui_test.h index d985026..56c7e9c 100644 --- a/chrome/test/ui/ui_test.h +++ b/chrome/test/ui/ui_test.h @@ -499,6 +499,9 @@ class UITestBase { // Configures the test to use the reference build. void UseReferenceBuild(); + // Use Chromium binaries from the given directory. + void SetBrowserDirectory(const FilePath& dir); + private: // Check that no processes related to Chrome exist, displaying // the given message if any do. diff --git a/chrome/test/unit/chrome_test_suite.h b/chrome/test/unit/chrome_test_suite.h index 28f0b90..42f57b7 100644 --- a/chrome/test/unit/chrome_test_suite.h +++ b/chrome/test/unit/chrome_test_suite.h @@ -119,6 +119,9 @@ class ChromeTestSuite : public TestSuite { if (!user_data_dir.empty()) PathService::Override(chrome::DIR_USER_DATA, user_data_dir); + if (!browser_dir_.empty()) + PathService::Override(base::DIR_EXE, browser_dir_); + #if defined(OS_MACOSX) // Look in the framework bundle for resources. FilePath path; @@ -166,11 +169,18 @@ class ChromeTestSuite : public TestSuite { TestSuite::Shutdown(); } + void SetBrowserDirectory(const FilePath& browser_dir) { + browser_dir_ = browser_dir; + } + StatsTable* stats_table_; // The name used for the stats file so it can be cleaned up on posix during // test shutdown. std::string stats_filename_; + // Alternative path to browser binaries. + FilePath browser_dir_; + ScopedOleInitializer ole_initializer_; scoped_refptr<WarningHostResolverProc> host_resolver_proc_; net::ScopedDefaultHostResolverProc scoped_host_resolver_proc_; |