added automated code testing framework
This commit is contained in:
parent
ea868a8c0e
commit
e017005b17
6 changed files with 437 additions and 0 deletions
|
|
@ -9,6 +9,7 @@
|
||||||
as much as 100%. See gotcha.txt for details.
|
as much as 100%. See gotcha.txt for details.
|
||||||
- Changed macro API which cuts macro memory consumption in half. See
|
- Changed macro API which cuts macro memory consumption in half. See
|
||||||
migration.txt for details.
|
migration.txt for details.
|
||||||
|
- Added automated code testing framework.
|
||||||
|
|
||||||
|
|
||||||
6.7.7
|
6.7.7
|
||||||
|
|
|
||||||
62
sbin/testCodebase.pl
Normal file
62
sbin/testCodebase.pl
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# WebGUI is Copyright 2001-2005 Plain Black Corporation.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# Please read the legal notices (docs/legal.txt) and the license
|
||||||
|
# (docs/license.txt) that came with this distribution before using
|
||||||
|
# this software.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# http://www.plainblack.com info@plainblack.com
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
$|=1;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use lib '../..';
|
||||||
|
use Getopt::Long;
|
||||||
|
|
||||||
|
my $configFile;
|
||||||
|
my $help;
|
||||||
|
|
||||||
|
GetOptions(
|
||||||
|
'configFile=s'=>\$configFile,
|
||||||
|
'help'=>\$help
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($help || !$configFile) {
|
||||||
|
print <<STOP;
|
||||||
|
|
||||||
|
perl $0 --configFile
|
||||||
|
|
||||||
|
--configFile The config file of the WebGUI site you'll use
|
||||||
|
to test the codebase. Note that you should not
|
||||||
|
use a production config file as some tests may
|
||||||
|
be destructive.
|
||||||
|
|
||||||
|
STOP
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
opendir(DIR,"../t");
|
||||||
|
my @files = readdir(DIR);
|
||||||
|
closedir(DIR);
|
||||||
|
|
||||||
|
chdir("../t");
|
||||||
|
my $someTestFailed = 0;
|
||||||
|
foreach my $file (@files) {
|
||||||
|
next unless $file =~ m/^(.*?)\.t$/;
|
||||||
|
my $testType = $1;
|
||||||
|
$testType =~ s/_/ /g;
|
||||||
|
print "Running $testType tests...\n";
|
||||||
|
unless (system("$^X $file --configFile=$configFile")) {
|
||||||
|
print "All $testType tests were successful.\n";
|
||||||
|
} else {
|
||||||
|
$someTestFailed = 1;
|
||||||
|
print "----------------------------\n";
|
||||||
|
print "Some $testType tests failed!\n";
|
||||||
|
print "----------------------------\n";
|
||||||
|
sleep(2);
|
||||||
|
}
|
||||||
|
print "\n";
|
||||||
|
}
|
||||||
|
exit $someTestFailed;
|
||||||
|
|
||||||
56
t/Id.t
Normal file
56
t/Id.t
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# WebGUI is Copyright 2001-2005 Plain Black Corporation.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# Please read the legal notices (docs/legal.txt) and the license
|
||||||
|
# (docs/license.txt) that came with this distribution before using
|
||||||
|
# this software.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# http://www.plainblack.com info@plainblack.com
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ---- BEGIN DO NOT EDIT ----
|
||||||
|
use strict;
|
||||||
|
use lib '../lib';
|
||||||
|
use Getopt::Long;
|
||||||
|
use WebGUI::Session;
|
||||||
|
# ---- END DO NOT EDIT ----
|
||||||
|
|
||||||
|
|
||||||
|
use Test::More tests => 2; # increment this value for each test you create
|
||||||
|
use WebGUI::Id;
|
||||||
|
use WebGUI::Utility;
|
||||||
|
|
||||||
|
initialize(); # this line is required
|
||||||
|
|
||||||
|
# generate
|
||||||
|
my $generateId = WebGUI::Id::generate();
|
||||||
|
is(length($generateId), 22, "generate() - length of 22 characters");
|
||||||
|
my @uniqueIds;
|
||||||
|
my $isUnique = 1;
|
||||||
|
for (1..2000) {
|
||||||
|
last unless $isUnique;
|
||||||
|
my $id = WebGUI::Id::generate();
|
||||||
|
$isUnique = !isIn($id,@uniqueIds);
|
||||||
|
push(@uniqueIds,$id);
|
||||||
|
}
|
||||||
|
ok($isUnique, "generate() - unique");
|
||||||
|
|
||||||
|
cleanup(); # this line is required
|
||||||
|
|
||||||
|
|
||||||
|
# ---- DO NOT EDIT BELOW THIS LINE -----
|
||||||
|
|
||||||
|
sub initialize {
|
||||||
|
$|=1; # disable output buffering
|
||||||
|
my $configFile;
|
||||||
|
GetOptions(
|
||||||
|
'configFile=s'=>\$configFile
|
||||||
|
);
|
||||||
|
exit 1 unless ($configFile);
|
||||||
|
WebGUI::Session::open("..",$configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cleanup {
|
||||||
|
WebGUI::Session::close();
|
||||||
|
}
|
||||||
|
|
||||||
166
t/SQL.t
Normal file
166
t/SQL.t
Normal file
|
|
@ -0,0 +1,166 @@
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# WebGUI is Copyright 2001-2005 Plain Black Corporation.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# Please read the legal notices (docs/legal.txt) and the license
|
||||||
|
# (docs/license.txt) that came with this distribution before using
|
||||||
|
# this software.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# http://www.plainblack.com info@plainblack.com
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ---- BEGIN DO NOT EDIT ----
|
||||||
|
use strict;
|
||||||
|
use lib '../lib';
|
||||||
|
use Getopt::Long;
|
||||||
|
use WebGUI::Session;
|
||||||
|
# ---- END DO NOT EDIT ----
|
||||||
|
|
||||||
|
|
||||||
|
use Test::More tests => 31; # increment this value for each test you create
|
||||||
|
use WebGUI::SQL;
|
||||||
|
|
||||||
|
initialize(); # this line is required
|
||||||
|
|
||||||
|
# read
|
||||||
|
ok(my $sth = WebGUI::SQL->read("select * from settings"), "read()");
|
||||||
|
|
||||||
|
# array
|
||||||
|
my @row = $sth->array;
|
||||||
|
is(@row, 2, "array()");
|
||||||
|
|
||||||
|
# getColumnNames
|
||||||
|
my @columnNames = $sth->getColumnNames;
|
||||||
|
ok($columnNames[0] eq "name" && $columnNames[1] eq "value", "geColumnNames()");
|
||||||
|
|
||||||
|
# hash
|
||||||
|
is(scalar($sth->hash), "2/8", "hash()");
|
||||||
|
|
||||||
|
# hashRef
|
||||||
|
is(scalar(%{$sth->hashRef}), "2/8", "hashRef()");
|
||||||
|
|
||||||
|
# rows
|
||||||
|
ok($sth->rows > 1, "rows()");
|
||||||
|
|
||||||
|
# finish
|
||||||
|
ok($sth->finish, "finish()");
|
||||||
|
|
||||||
|
# unconditionalRead
|
||||||
|
ok(my $sth = WebGUI::SQL->unconditionalRead("select * from tableThatDoesntExist"), "unconditionalRead()");
|
||||||
|
|
||||||
|
# errorCode
|
||||||
|
is($sth->errorCode, "1146" ,"errorCode()");
|
||||||
|
|
||||||
|
# errorMessage
|
||||||
|
ok($sth->errorMessage =~ m/Table .*\.tablethatdoesntexist. doesn.t exist/ , "errorMessage()");
|
||||||
|
|
||||||
|
$sth->finish;
|
||||||
|
|
||||||
|
# quote
|
||||||
|
is(quote("that's great"), "'that\\\'s great'", "quote()");
|
||||||
|
|
||||||
|
# quoteAndJoin
|
||||||
|
my @quoteAndJoin = ("that's great", '"Howdy partner!"');
|
||||||
|
is(quoteAndJoin(\@quoteAndJoin), "'that\\\'s great','\\\"Howdy partner!\\\"'", "quoteAndJoin()");
|
||||||
|
|
||||||
|
# beginTransaction
|
||||||
|
SKIP: {
|
||||||
|
skip("Don't know how to test beginTransaction.",1);
|
||||||
|
ok(undef,"beginTransaction()");
|
||||||
|
}
|
||||||
|
|
||||||
|
# commit
|
||||||
|
SKIP: {
|
||||||
|
skip("Don't know how to test commit",1);
|
||||||
|
ok(undef, "commit()");
|
||||||
|
}
|
||||||
|
|
||||||
|
# rollback
|
||||||
|
SKIP: {
|
||||||
|
skip("Don't know how to test rollback()",1);
|
||||||
|
ok(undef, "rollback()");
|
||||||
|
}
|
||||||
|
|
||||||
|
# prepare
|
||||||
|
ok(my $sth = WebGUI::SQL->prepare("select value from settings where name=?"), "prepare()");
|
||||||
|
|
||||||
|
# execute
|
||||||
|
$sth->execute(['showDebug']);
|
||||||
|
is($sth->errorCode, undef, "execute()");
|
||||||
|
|
||||||
|
$sth->finish;
|
||||||
|
|
||||||
|
# quickArray
|
||||||
|
my ($value) = WebGUI::SQL->quickArray("select value from settings where name='authMethod'");
|
||||||
|
ok($value, "quickArray()");
|
||||||
|
|
||||||
|
# write
|
||||||
|
WebGUI::SQL->write("delete from incrementer where incrementerId='theBigTest'"); # clean up previous failures
|
||||||
|
WebGUI::SQL->write("insert into incrementer (incrementerId, nextValue) values ('theBigTest',25)");
|
||||||
|
my ($value) = WebGUI::SQL->quickArray("select nextValue from incrementer where incrementerId='theBigTest'");
|
||||||
|
is($value, 25, 'write()');
|
||||||
|
|
||||||
|
# quickCSV
|
||||||
|
is(WebGUI::SQL->quickCSV("select * from incrementer where incrementerId='theBigTest'"), "incrementerId,nextValue\ntheBigTest,25\n", "quickCSV()");
|
||||||
|
|
||||||
|
# quickHash
|
||||||
|
my %quickHash = WebGUI::SQL->quickHash("select * from incrementer where incrementerId='theBigTest'");
|
||||||
|
is($quickHash{nextValue}, 25, "quickHash()");
|
||||||
|
|
||||||
|
# quickHash
|
||||||
|
my $quickHashRef = WebGUI::SQL->quickHashRef("select * from incrementer where incrementerId='theBigTest'");
|
||||||
|
is($quickHashRef->{nextValue}, 25, "quickHashRef()");
|
||||||
|
|
||||||
|
# quickTab
|
||||||
|
is(WebGUI::SQL->quickTab("select * from incrementer where incrementerId='theBigTest'"), "incrementerId\tnextValue\ntheBigTest\t25\n", "quickCSV()");
|
||||||
|
|
||||||
|
# buildArray
|
||||||
|
my ($buildArray) = WebGUI::SQL->buildArray("select nextValue from incrementer where incrementerId='theBigTest'");
|
||||||
|
is($buildArray, 25, "buildArray()");
|
||||||
|
|
||||||
|
# buildArrayRef
|
||||||
|
my $buildArrayRef = WebGUI::SQL->buildArrayRef("select nextValue from incrementer where incrementerId='theBigTest'");
|
||||||
|
is($buildArrayRef->[0], 25, "buildArrayRef()");
|
||||||
|
|
||||||
|
# buildHash
|
||||||
|
my %buildHash = WebGUI::SQL->buildHash("select incrementerId,nextValue from incrementer where incrementerId='theBigTest'");
|
||||||
|
is($buildHash{theBigTest}, 25, "buildHash()");
|
||||||
|
|
||||||
|
# buildHashRef
|
||||||
|
my $buildHashRef = WebGUI::SQL->buildHashRef("select incrementerId,nextValue from incrementer where incrementerId='theBigTest'");
|
||||||
|
is($buildHashRef->{theBigTest}, 25, "buildHashRef()");
|
||||||
|
|
||||||
|
# getNextId
|
||||||
|
is(getNextId('theBigTest'), 25, "getNextId()");
|
||||||
|
WebGUI::SQL->write("delete from incrementer where incrementerId='theBigTest'");
|
||||||
|
|
||||||
|
# setRow
|
||||||
|
my $setRowId = WebGUI::SQL->setRow("incrementer","incrementerId",{incrementerId=>"new", nextValue=>47});
|
||||||
|
ok($setRowId ne "", "setRow() - return ID");
|
||||||
|
my ($setRowResult) = WebGUI::SQL->quickArray("select nextValue from incrementer where incrementerId=".quote($setRowId));
|
||||||
|
is($setRowResult, 47, "setRow() - set data");
|
||||||
|
|
||||||
|
# getRow
|
||||||
|
my $getRow = WebGUI::SQL->getRow("incrementer","incrementerId",$setRowId);
|
||||||
|
is($getRow->{nextValue}, 47, "getRow()");
|
||||||
|
WebGUI::SQL->write("delete from incrementer where incrementerId=".quote($setRowId));
|
||||||
|
|
||||||
|
|
||||||
|
cleanup(); # this line is required
|
||||||
|
|
||||||
|
|
||||||
|
# ---- DO NOT EDIT BELOW THIS LINE -----
|
||||||
|
|
||||||
|
sub initialize {
|
||||||
|
$|=1; # disable output buffering
|
||||||
|
my $configFile;
|
||||||
|
GetOptions(
|
||||||
|
'configFile=s'=>\$configFile
|
||||||
|
);
|
||||||
|
exit 1 unless ($configFile);
|
||||||
|
WebGUI::Session::open("..",$configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cleanup {
|
||||||
|
WebGUI::Session::close();
|
||||||
|
}
|
||||||
|
|
||||||
109
t/Utility.t
Normal file
109
t/Utility.t
Normal file
|
|
@ -0,0 +1,109 @@
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# WebGUI is Copyright 2001-2005 Plain Black Corporation.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# Please read the legal notices (docs/legal.txt) and the license
|
||||||
|
# (docs/license.txt) that came with this distribution before using
|
||||||
|
# this software.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# http://www.plainblack.com info@plainblack.com
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# ---- BEGIN DO NOT EDIT ----
|
||||||
|
use strict;
|
||||||
|
use lib '../lib';
|
||||||
|
use Getopt::Long;
|
||||||
|
use WebGUI::Session;
|
||||||
|
# ---- END DO NOT EDIT ----
|
||||||
|
|
||||||
|
use Test::More tests => 20; # increment this value for each test you create
|
||||||
|
|
||||||
|
initialize(); # this line is required
|
||||||
|
|
||||||
|
|
||||||
|
# commify
|
||||||
|
is(WebGUI::Utility::commify(10), "10", 'commify() - no comma needed');
|
||||||
|
is(WebGUI::Utility::commify(1000), "1,000", 'commify() - single comma');
|
||||||
|
is(WebGUI::Utility::commify(10000000), "10,000,000", 'commify() - multiple commas');
|
||||||
|
|
||||||
|
# formatBytes
|
||||||
|
is(WebGUI::Utility::formatBytes(10), '10 B', 'formatBytes() - bytes');
|
||||||
|
is(WebGUI::Utility::formatBytes(4300), '4 kB', 'formatBytes() - kilobytes');
|
||||||
|
is(WebGUI::Utility::formatBytes(1700000), '2 MB', 'formatBytes() - megabytes');
|
||||||
|
|
||||||
|
# isBetween
|
||||||
|
ok(WebGUI::Utility::isBetween(0,-1,1), 'isBetween() - negative and positive range');
|
||||||
|
ok(WebGUI::Utility::isBetween(11,1,15), 'isBetween() - positive range');
|
||||||
|
ok(WebGUI::Utility::isBetween(-5,-10,-2), 'isBetween() - negative range');
|
||||||
|
|
||||||
|
# isIn
|
||||||
|
ok(WebGUI::Utility::isIn("webgui", qw(cars trucks webgui trains)), 'isIn()');
|
||||||
|
|
||||||
|
# makeArrayCommaSafe
|
||||||
|
my @commaFilledArray = ("this,that", "foo,bar", "x-y");
|
||||||
|
WebGUI::Utility::makeArrayCommaSafe(\@commaFilledArray);
|
||||||
|
my $noCommaFound = 1;
|
||||||
|
foreach my $row (@commaFilledArray) {
|
||||||
|
$noCommaFound = 0 if ($row =~ m/,/);
|
||||||
|
}
|
||||||
|
ok($noCommaFound, 'makeArrayCommaSafe()');
|
||||||
|
|
||||||
|
# makeCommaSafe
|
||||||
|
ok(!(WebGUI::Utility::makeCommaSafe("this,that,foo,,bar") =~ m/,/), 'makeCommaSafe()');
|
||||||
|
|
||||||
|
# makeTabSafe
|
||||||
|
ok(!(WebGUI::Utility::makeTabSafe("this\tthat\tfoo\tbar\t") =~ m/\t/), 'makeTabSafe()');
|
||||||
|
|
||||||
|
# randint
|
||||||
|
my $number = WebGUI::Utility::randint(50,75);
|
||||||
|
ok($number >= 50 && $number <= 75, 'randint()');
|
||||||
|
|
||||||
|
# randomizeArray
|
||||||
|
SKIP: {
|
||||||
|
skip("Don't know how to test randomizeArray.",1);
|
||||||
|
ok(undef, 'randomizeArray()');
|
||||||
|
}
|
||||||
|
|
||||||
|
# randomizeHash
|
||||||
|
SKIP: {
|
||||||
|
skip("Don't know how to test randomizeHash.",1);
|
||||||
|
ok(undef, 'randomizeHash()');
|
||||||
|
}
|
||||||
|
|
||||||
|
# round
|
||||||
|
is(WebGUI::Utility::round(47.133984233, 0), 47, 'round() - 0 significant digits');
|
||||||
|
is(WebGUI::Utility::round(47.133984233, 3), 47.134, 'round() - multiple significant digits');
|
||||||
|
|
||||||
|
# sortHash
|
||||||
|
SKIP: {
|
||||||
|
skip("Don't know how to test sortHash.",1);
|
||||||
|
ok(undef, 'sortHash()');
|
||||||
|
}
|
||||||
|
|
||||||
|
# sortHashDescending
|
||||||
|
SKIP: {
|
||||||
|
skip("Don't know how to test sortHashDescending.",1);
|
||||||
|
ok(undef, 'sortHashDescending()');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
cleanup(); # this line is required
|
||||||
|
|
||||||
|
|
||||||
|
# ---- DO NOT EDIT BELOW THIS LINE -----
|
||||||
|
|
||||||
|
sub initialize {
|
||||||
|
$|=1; # disable output buffering
|
||||||
|
my $configFile;
|
||||||
|
GetOptions(
|
||||||
|
'configFile=s'=>\$configFile
|
||||||
|
);
|
||||||
|
exit 1 unless ($configFile);
|
||||||
|
WebGUI::Session::open("..",$configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cleanup {
|
||||||
|
WebGUI::Session::close();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
43
t/_test.skeleton
Normal file
43
t/_test.skeleton
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# WebGUI is Copyright 2001-2005 Plain Black Corporation.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# Please read the legal notices (docs/legal.txt) and the license
|
||||||
|
# (docs/license.txt) that came with this distribution before using
|
||||||
|
# this software.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# http://www.plainblack.com info@plainblack.com
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ---- BEGIN DO NOT EDIT ----
|
||||||
|
use strict;
|
||||||
|
use lib '../lib';
|
||||||
|
use Getopt::Long;
|
||||||
|
use WebGUI::Session;
|
||||||
|
# ---- END DO NOT EDIT ----
|
||||||
|
|
||||||
|
|
||||||
|
use Test::More tests => 1; # increment this value for each test you create
|
||||||
|
|
||||||
|
initialize(); # this line is required
|
||||||
|
|
||||||
|
# put your tests here
|
||||||
|
|
||||||
|
cleanup(); # this line is required
|
||||||
|
|
||||||
|
|
||||||
|
# ---- DO NOT EDIT BELOW THIS LINE -----
|
||||||
|
|
||||||
|
sub initialize {
|
||||||
|
$|=1; # disable output buffering
|
||||||
|
my $configFile;
|
||||||
|
GetOptions(
|
||||||
|
'configFile=s'=>\$configFile
|
||||||
|
);
|
||||||
|
exit 1 unless ($configFile);
|
||||||
|
WebGUI::Session::open("..",$configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cleanup {
|
||||||
|
WebGUI::Session::close();
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue