Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(549)

Unified Diff: tests/selenium/unpack_firefox.py

Issue 201046: This makes selenium in Firefox work on the Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/o3d/
Patch Set: Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/selenium/selenium.gyp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/selenium/unpack_firefox.py
===================================================================
--- tests/selenium/unpack_firefox.py (revision 0)
+++ tests/selenium/unpack_firefox.py (revision 0)
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+
+import sys
+import os
+import shutil
+import subprocess
+
+script_dir = os.path.normpath(os.path.dirname(os.path.abspath(__file__)))
+o3d_dir = os.path.dirname(os.path.dirname(script_dir))
+src_dir = os.path.dirname(o3d_dir)
+third_party_dir = os.path.join(src_dir, 'third_party')
+internal_dir = os.path.join(src_dir, 'o3d-internal')
+gflags_dir = os.path.join(third_party_dir, 'gflags', 'python')
+sys.path.append(gflags_dir)
+
+import gflags
+
+# Command line flags
+FLAGS = gflags.FLAGS
+gflags.DEFINE_boolean("cleanup", False,
+ "If this is set, then the script cleans up "
+ "instead of unpacking.")
+gflags.DEFINE_string("plugin_path", "", "This is the path to the plugin.")
+gflags.DEFINE_string("product_path", "",
+ "This is the path to the built products.")
+
+if sys.platform != "darwin":
+ print "This script is only for use on Mac OS X"
+ sys.exit(-1)
+
+def Cleanup(dir):
+ shutil.rmtree(dir, ignore_errors=True)
+
+def InstallInternal(internal_firefox_dir, firefox_dir):
+ firefox_app = os.path.join(firefox_dir, 'Firefox.app')
+ firefox_tgz = os.path.join(internal_firefox_dir, 'firefox.tgz')
+ print "Unpacking Firefox in '%s' to staging area." % firefox_tgz
+ os.mkdir(firefox_dir)
+ subprocess.call(['tar', '-C', firefox_dir, 'xfz', firefox_tgz])
+ dest_plugin_path = os.path.join(firefox_app, 'Contents', 'MacOS',
+ 'plugins',
+ os.path.basename(FLAGS.plugin_path))
+ os.symlink(FLAGS.plugin_path, dest_plugin_path)
+ return 0
+
+def Install(firefox_dir):
+ # No hermetic version, look for Firefox.app in /Applications
+ source_app = '/Applications/Firefox.app'
+ print "Copying Firefox in '%s' to staging area." % source_app
+
+ if not os.path.exists(source_app):
+ print "Unable to find Firefox in %s, is it installed?" % source_app
+ sys.exit(-1)
+
+ firefox_app = os.path.join(firefox_dir, 'Firefox.app')
+ dest_plugin_path = os.path.join(firefox_app, 'Contents', 'MacOS',
+ 'plugins',
+ os.path.basename(FLAGS.plugin_path))
+ os.mkdir(firefox_dir)
+ subprocess.call(['ditto', source_app, firefox_app])
+ os.symlink(FLAGS.plugin_path, dest_plugin_path)
+ return 0
+
+def main(args):
+ internal_firefox_dir = os.path.join(internal_dir, 'firefox')
+ if not os.path.exists(FLAGS.plugin_path):
+ print "Plugin '%s' is missing." % FLAGS.plugin_path
+ sys.exit(-1)
+
+ if not os.path.exists(FLAGS.product_path):
+ print "Product path '%s' is missing." % FLAGS.product_path
+ sys.exit(-1)
+
+ # Cleanup any residual stuff.
+ firefox_dir = os.path.join(FLAGS.product_path, 'selenium_firefox')
+ Cleanup(firefox_dir)
+
+ if not FLAGS.cleanup:
+ # if we have a hermetic version of Firefox, then use it.
+ if os.path.exists(internal_firefox_dir):
+ sys.exit(InstallInternal(internal_firefox_dir, firefox_dir))
+ # Otherwise, we just copy what the user has installed.
+ else:
+ if not FLAGS.cleanup:
+ sys.exit(Install(firefox_dir))
+ sys.exit(0)
+
+if __name__ == "__main__":
+ bare_args = FLAGS(sys.argv)
+ main(bare_args)
« no previous file with comments | « tests/selenium/selenium.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698