summaryrefslogtreecommitdiffstats
path: root/chrome/test
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/test')
-rw-r--r--chrome/test/pyautolib/pyauto.py12
-rw-r--r--chrome/test/pyautolib/pyautolib.cc17
-rw-r--r--chrome/test/pyautolib/pyautolib.h7
-rw-r--r--chrome/test/pyautolib/pyautolib.i7
-rw-r--r--chrome/test/ui/ui_test.cc4
-rw-r--r--chrome/test/ui/ui_test.h3
-rw-r--r--chrome/test/unit/chrome_test_suite.h10
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_;