perl unit tests are now automatically run

This commit is contained in:
Sears Russell 2009-12-08 23:17:17 +00:00
parent 83a0ec68fe
commit ed1ed5fcf2
7 changed files with 111 additions and 18 deletions

View file

@ -11,7 +11,7 @@ Project(Stasis)
SET(PACKAGE_VERSION 1)
SUBDIRS(src test utilities benchmarks examples)
SUBDIRS(src test utilities benchmarks examples lang)
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
SET(FLEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
SET(BISON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

1
lang/CMakeLists.txt Normal file
View file

@ -0,0 +1 @@
SUBDIRS(perl)

16
lang/perl/CMakeLists.txt Normal file
View file

@ -0,0 +1,16 @@
#CREATE_CHECK_OPT(STASIS_DIR=${CMAKE_TOPLEVEL_SOURCE_DIR} ./t/test.pl)
#CREATE_CHECK_OPT(STASIS_DIR=${CMAKE_TOPLEVEL_SOURCE_DIR} ./t/test2.pl < t/test2.script)
SET(ENV{STASIS_DIR} ${CMAKE_HOME_DIRECTORY})
MACRO(CREATE_CHECK_PERL NAME)
ADD_TEST(${NAME} perl -I ${CMAKE_HOME_DIRECTORY}/lang/perl ${CMAKE_CURRENT_SOURCE_DIR}/${NAME} --automated-test)
ENDMACRO(CREATE_CHECK_PERL)
MACRO(CREATE_CHECK_PERL_OPT NAME OPT)
ADD_TEST(${NAME} perl -I ${CMAKE_HOME_DIRECTORY}/lang/perl ${CMAKE_CURRENT_SOURCE_DIR}/${NAME} --automated-test ${OPT})
ENDMACRO(CREATE_CHECK_PERL_OPT)
CREATE_CHECK_PERL(t/test.pl)
CREATE_CHECK_PERL_OPT(t/test2.pl ${CMAKE_CURRENT_SOURCE_DIR}/t/test2.script)
#ADD_TEST(perl/test.pl perl -I${CMAKE_HOME_DIRECTORY}/lang/perl ${CMAKE_CURRENT_SOURCE_DIR}/t/test.pl)
#ADD_TEST(perl/t/test2.pl ${CMAKE_CURRENT_SOURCE_DIR}/t/test.pl STASIS_DIR=${CMAKE_HOME_DIRECTORY})

View file

@ -3,9 +3,14 @@ require Inline;
my $STASIS_DIR;
BEGIN {
$STASIS_DIR = $ENV{STASIS_DIR}
|| die "\nNeed STASIS_DIR environment variable!!\n\n";
#'/home/sears/stasis4';
$STASIS_DIR = $ENV{STASIS_DIR};
if(!defined($STASIS_DIR)) {
$STASIS_DIR = $INC{"Stasis.pm"};
$STASIS_DIR =~ s~/lang/perl/Stasis.pm~~g;
print $STASIS_DIR;
}
1;
#die "\nNeed STASIS_DIR environment variable!!\n\n";
}
use Inline C => Config => LIBS =>
"-L$STASIS_DIR/build/src/stasis/ " .

View file

@ -3,33 +3,60 @@
use strict;
use Stasis;
my $expected = qq(0
rid is 1 0
thequickbrown
rid is 1 1
->3.14159
42
13
42
);
my $checking = 0;
my $out = "";
sub myprint {
my $a = shift;
if($checking) {
$out .= $a;
} else {
print $a;
}
}
if($ARGV[0] eq "--automated-test") {
shift @ARGV;
system ("rm storefile.txt logfile.txt");
$checking = 1;
}
Stasis::Tinit();
my $x=Stasis::Tbegin();
print("$x\n");
myprint("$x\n");
my $rid1 = Stasis::TallocScalar($x, "thequickbrown"); #14);
print "rid is $$rid1[0] $$rid1[1]\n";
myprint "rid is $$rid1[0] $$rid1[1]\n";
defined ($rid1) || die;
Stasis::Tset($x, $rid1, "thequickbrown");
my $thequickbrown = Stasis::Tread($x, $rid1);
print "$thequickbrown\n";
myprint "$thequickbrown\n";
$rid1 = Stasis::TallocScalar($x, 3.14159); #14);
print "rid is $$rid1[0] $$rid1[1]\n";
myprint "rid is $$rid1[0] $$rid1[1]\n";
defined ($rid1) || die;
Stasis::Tset($x, $rid1, 3.14159);
$thequickbrown = Stasis::Tread($x, $rid1);
print "->$thequickbrown\n";
myprint "->$thequickbrown\n";
my $rid2 = Stasis::TallocScalar($x, 42);
Stasis::Tset($x, $rid2, 42);
$thequickbrown = Stasis::Tread($x, $rid2);
print "$thequickbrown\n";
myprint "$thequickbrown\n";
$thequickbrown == 42 || die;
@ -39,14 +66,14 @@ $x = Stasis::Tbegin();
Stasis::Tset($x, $rid2, 13);
$thequickbrown = Stasis::Tread($x, $rid2);
print "$thequickbrown\n";
myprint "$thequickbrown\n";
$thequickbrown == 13 || die;
Stasis::Tabort($x);
$x = Stasis::Tbegin();
$thequickbrown = Stasis::Tread($x, $rid2);
print "$thequickbrown\n";
myprint "$thequickbrown\n";
$thequickbrown == 42 || die;
@ -60,3 +87,10 @@ my $rid2cpy = Stasis::Tread($x,$rid3);
Stasis::Tcommit($x);
Stasis::Tdeinit();
if($checking) {
$out eq $expected || die "\nFAIL: Output did not match. Expected\n$expected\nGot\n$out";
print "\nPASS: Produced expected output:\n$out";
}

View file

@ -2,6 +2,40 @@
use strict;
use Stasis;
my $expected = qq(! => + => y => q => a
b
r => c
d
z => s => e
f
t => g
h
- => @ => u => i
j
v => k
l
# => w => m
n
x => o
p
);
my $checking = 0;
my $out = "";
sub myprint {
my $a = shift;
if($checking) {
$out .= $a;
} else {
print $a;
}
}
if($ARGV[0] eq "--automated-test") {
shift @ARGV;
system ("rm storefile.txt logfile.txt");
$checking = 1;
}
Stasis::Tinit();
my $xid = Stasis::Tbegin();
@ -11,19 +45,19 @@ sub walk {
my $from = shift;
my $level = shift || 0;
my $to = Stasis::ThashLookup($xid, $rid, $from);
print $from;
myprint $from;
$level += (length($from) + 4);
if(defined $to) {
my @tok = split ',', $to;
my $first = 1;
foreach my $f (@tok) {
if($first) { print " => "; } else { my $n = $level; while($n--) {print " ";} }
if($first) { myprint " => "; } else { my $n = $level; while($n--) {myprint " ";} }
$first = 0;
walk($f,$level);
}
} else {
print "\n";
myprint "\n";
}
}
@ -46,3 +80,8 @@ while(my $line = <>) {
Stasis::Tcommit($xid);
Stasis::Tdeinit();
if($checking) {
$out eq $expected || die "\nFAIL: Output did not match. Expected\n$expected\nGot\n$out";
print "\nPASS: Produced expected output:\n$out";
}

View file

@ -3,7 +3,5 @@ SUBDIRS(lang)
ADD_LIBRARY(referential algebra.c dml.c ddl.c tuple.c lang/ast.c)
TARGET_LINK_LIBRARIES(referential ${COMMON_LIBRARIES})
SET(COMMON_LIBRARIES referential refparse ${COMMON_LIBRARIES})
IF(CHECK_LIBRARY)
CREATE_CHECK_OPT(toplevel ${CMAKE_CURRENT_SOURCE_DIR}/test-script.ref)
ENDIF(CHECK_LIBRARY)
CREATE_CHECK_OPT(toplevel ${CMAKE_CURRENT_SOURCE_DIR}/test-script.ref)
endif(HAVE_GETLINE)