diff -r c55016431358 -r 0a7b44b10206 symport/symuser/test.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symport/symuser/test.pl Thu Jun 25 15:59:54 2009 +0100 @@ -0,0 +1,152 @@ +#!/usr/bin/perl + +# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of the License "Symbian Foundation License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +use strict; +use warnings; +use Test; +use Getopt::Long qw(:config auto_version auto_help); +use File::Spec::Functions; +use File::Basename; +use File::Copy; + +# The following are the tests to run +BEGIN { plan tests => 60 } +my @tests = qw/t_bflat t_bseg t_buf t_rbuf t_char t_circ t_collate t_des t_farray t_func t_graph t_key t_lex t_match t_parray t_que t_readar t_regn t_sque t_varray t_versio t_hashtab t_huff t_float t_i64 t_i64_2 t_math t_math2 t_trap t_ctrap/; + +# Make sure we're in the correct folder +chdir('../symuser') or die "Failed to set folder: $!"; + +# Version of the script - just use the date +$main::VERSION = '13-Oct-08'; + +# Get command line arguments +print "\n"; +my ( $verbose, $skip ); +GetOptions("verbose" => \$verbose, "skip" => \$skip) or pod2usage(2); + +my $win32 = 1 if $^O =~ /MSWin32/; +print "Running on Win32\n" if $win32 && $verbose; +print "Running on Linux\n" if !$win32 && $verbose; + +# Some files have to be copied to an accessible location +unlink 'UnicodeData.txt'; +copy(catfile('..', 'e32test', 'buffer', 'UnicodeData.txt'), 'unicodedata.txt') or die "Failed to copy file: $!"; + +# Build the code and run the tests +doBuild() if (!$skip); +foreach my $test ( @tests ) + { + doTest('deb', $test); + doTest('rel', $test); + } + +# *** +# Runs test code +# +sub doTest + { + my ( $variant, $name ) = @_; + + my $test; + if ($win32) + { + $test = catfile($ENV{EPOCROOT}, 'epoc32', 'release', 'tools2', $variant, "$name.exe"); + } + else + { + # Have to set library path for Linux + $ENV{LD_LIBRARY_PATH} =~ s[/epoc32[^:]+:/][]; + $ENV{LD_LIBRARY_PATH} = "$ENV{EPOCROOT}epoc32/release/tools2/linux-i386/$variant:$ENV{LD_LIBRARY_PATH}"; + $test = catfile($ENV{EPOCROOT}, 'epoc32', 'release', 'tools2', 'linux-i386', $variant, $name); + } + + die "Can't find test exe: $test" if !-e $test; + print "Running test: $test\n" if $verbose; + + my $pass; + open TEST, "$test|" or die "Failed to start test $test: $!"; + while() + { + print "\t$_" if $verbose; + $pass = 1 if /^RTEST: SUCCESS/ or /TEST Successfully Completed/; + } + + print "FAIL: $test\n" if (!$pass); + ok($pass); + close TEST; + } + +# *** +# Builds the test code +# * +sub doBuild + { + # First of all see if SBSv2 is installed + my $sbs_ver = 1; + open SBS, 'sbs -v 2>&1|' or die "Failed to execute command: $!"; + while() + { + if (/^sbs version/) + { + $sbs_ver = 2; + last; + } + } + close SBS; + + # Override the result using environment variable + $sbs_ver = 1 if $ENV{SBS_VERSION} && $ENV{SBS_VERSION} == 1; + my $nul = $win32 ? 'nul' : '/dev/null'; + my $redir = $verbose? '' : " >$nul 2>&1"; + + # Now build the test code - assumes current working directory is correct! + print "Building test code using SBSv$sbs_ver\n" if $verbose; + if ($sbs_ver == 1) + { + print "Building test code using SBSv1\n"; + + # Use the old build system + system("bldmake bldfiles$redir"); + system("abld test makefile$redir"); + system("abld test clean$redir"); + system("abld test build$redir"); + } + else + { + print "Building test code using SBSv2\n"; + + # Use the new build system + system("sbs -c tools2.test CLEAN$redir"); + system("sbs -c tools2.test$redir"); + } + } + +=head1 NAME + +test.pl - A script for running tests + +=head1 SYNOPSIS + +test.pl [-help] [-version] [-verbose] [-skip] + + Options: + -help brief help message + -version version of the script + -verbose print what the scripts does + -skip skip building the code + +=cut