#!/usr/bin/perl # -*- Mode: Perl; tab-width: 4; indent-tabs-mode: nil; -*- # ***** BEGIN LICENSE BLOCK ***** # Version: MPL 1.1/GPL 2.0/LGPL 2.1 # # The contents of this file are subject to the Mozilla Public License Version # 1.1 (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is Mozilla Automated Testing Code # # The Initial Developer of the Original Code is # Mozilla Corporation. # Portions created by the Initial Developer are Copyright (C) 2005 # the Initial Developer. All Rights Reserved. # # Contributor(s): Bob Clary # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** # make unbuffered select STDERR; $| = 1; select STDOUT; $| = 1; use File::Temp qw/ tempfile tempdir /; use File::Basename; use Getopt::Mixed "nextOption"; use URI::Escape; use Time::HiRes qw(sleep); my $DEBUG = 0; my $product = ""; my $executable = ""; my $profile = ""; my $url = ""; my $domain = ""; my $depth = 0; my $timeout = 0; my $wait = 0; my $hook = ""; my $start = "off"; my $quit = "off"; my $robot = "off"; my $debug = "off"; my $jserrors = "off"; my $jswarnings = "off"; my $chromeerrors = "off"; my $xblerrors = "off"; my $csserrors = "off"; parse_options(); my $hookon = ($hook ? "on" : "off"); my $runtime = dirname($executable); chdir $runtime or die "spider.pl: unable to change directory to runtime $runtime"; my $chromeurl; my $testUrl; my $spider = "chrome://spider/content/spider.xul?" . "domain=$domain&" . "depth=$depth&" . "timeout=$timeout" . "&waittime=$wait&" . "autostart=$start&" . "autoquit=$quit&" . "javascripterrors=$jserrors&" . "javascriptwarnings=$jswarnings&" . "chromeerrors=$chromeerrors&" . "xblerrors=$xblerrors&" . "csserrors=$csserrors&" . "hooksignal=$hookon&" . "url=" . uri_escape(uri_escape($url)); if ($hook) { $spider .= "&scripturl=" . uri_escape($hook); } my @args; my $rc; my $signal; my $dumped; if ($product eq "thunderbird") { @args = ($executable, "-P", $profile, $spider); } else { @args = ($executable, "-P", $profile, "-chrome", $spider); } system @args; $rc = $? >> 8; if ($rc == 99) { exit $rc; } sub usage { my $arg = shift @_; my $value = shift @_; print <