#!/usr/bin/perl
#
# Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public License
# along with this library; see the file COPYING.LIB.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.

use strict;
use warnings;

use FindBin;
use lib $FindBin::Bin;
use webkitdirs;

# This initializes the correct configuration (Release/Debug)
setConfiguration();

my $productDir = productDir();
my @unitTests = glob  $productDir . "/Programs/unittests/*";
if ($#unitTests < 1) {
    die "ERROR: tests not found in $productDir.\n";
}

my $exitStatus = 0;
foreach my $unitTest (@unitTests)
{
    system "gtester $unitTest";
    if ($?) {
        $exitStatus = $?;
    }
}

if ($exitStatus) {
    print "Tests failed\n";
    exit $exitStatus;
}
