IC for JSOP_CALLELEM (bug 604031, r=dmandelin).
[mozilla-central.git] / build / leaktest.py.in
bloba36a23cacc7360885eb250d07b9eb5098a69d3c5
1 #literal #!/usr/bin/python
3 # ***** BEGIN LICENSE BLOCK *****
4 # Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 # The contents of this file are subject to the Mozilla Public License Version
7 # 1.1 (the "License"); you may not use this file except in compliance with
8 # the License. You may obtain a copy of the License at
9 # http://www.mozilla.org/MPL/
11 # Software distributed under the License is distributed on an "AS IS" basis,
12 # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 # for the specific language governing rights and limitations under the
14 # License.
16 # The Original Code is mozilla.org code.
18 # The Initial Developer of the Original Code is
19 # Mozilla Foundation.
20 # Portions created by the Initial Developer are Copyright (C) 1998
21 # the Initial Developer. All Rights Reserved.
23 # Contributor(s):
24 # Robert Sayre <sayrer@gmail.com>
25 # Jeff Walden <jwalden+bmo@mit.edu>
26 # Ben Hearsum <bhearsum@mozilla.com>
28 # Alternatively, the contents of this file may be used under the terms of
29 # either the GNU General Public License Version 2 or later (the "GPL"), or
30 # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
31 # in which case the provisions of the GPL or the LGPL are applicable instead
32 # of those above. If you wish to allow use of your version of this file only
33 # under the terms of either the GPL or the LGPL, and not to allow others to
34 # use your version of this file under the terms of the MPL, indicate your
35 # decision by deleting the provisions above and replace them with the notice
36 # and other provisions required by the GPL or the LGPL. If you do not delete
37 # the provisions above, a recipient may use your version of this file under
38 # the terms of any one of the MPL, the GPL or the LGPL.
40 # ***** END LICENSE BLOCK *****
42 import SimpleHTTPServer
43 import SocketServer
44 import threading
45 import os
46 import sys
47 import logging
48 from getopt import getopt
49 from automation import Automation
51 PORT = 8888
52 SCRIPT_DIR = os.path.abspath(os.path.realpath(os.path.dirname(sys.argv[0])))
53 PROFILE_DIRECTORY = os.path.abspath(os.path.join(SCRIPT_DIR, "./leakprofile"))
54 os.chdir(SCRIPT_DIR)
56 class EasyServer(SocketServer.TCPServer):
57 allow_reuse_address = True
59 if __name__ == '__main__':
60 automation = Automation()
61 DIST_BIN = os.path.join(SCRIPT_DIR, automation.DIST_BIN)
62 opts, extraArgs = getopt(sys.argv[1:], 'l:')
63 if len(opts) > 0:
64 try:
65 automation.log.addHandler(logging.FileHandler(opts[0][1], "w"))
66 except:
67 automation.log.info("Unable to open logfile " + opts[0][1] + \
68 "ONLY logging to stdout.")
70 httpd = EasyServer(("", PORT), SimpleHTTPServer.SimpleHTTPRequestHandler)
71 t = threading.Thread(target=httpd.serve_forever)
72 t.setDaemon(True)
73 t.start()
75 automation.setServerInfo("localhost", PORT)
76 automation.initializeProfile(PROFILE_DIRECTORY)
77 browserEnv = automation.environment()
79 if not "XPCOM_DEBUG_BREAK" in browserEnv:
80 browserEnv["XPCOM_DEBUG_BREAK"] = "stack"
81 url = "http://localhost:%d/bloatcycle.html" % PORT
82 appPath = os.path.join(SCRIPT_DIR, automation.DEFAULT_APP)
83 status = automation.runApp(url, browserEnv, appPath, PROFILE_DIRECTORY,
84 # leaktest builds are slow, give up and
85 # don't use a timeout.
86 extraArgs, timeout=None)
87 sys.exit(status)