perl unit tests are now automatically run
This commit is contained in:
parent
83a0ec68fe
commit
ed1ed5fcf2
7 changed files with 111 additions and 18 deletions
|
@ -11,7 +11,7 @@ Project(Stasis)
|
||||||
|
|
||||||
SET(PACKAGE_VERSION 1)
|
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(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||||
SET(FLEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
SET(FLEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||||
SET(BISON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
SET(BISON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||||
|
|
1
lang/CMakeLists.txt
Normal file
1
lang/CMakeLists.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
SUBDIRS(perl)
|
16
lang/perl/CMakeLists.txt
Normal file
16
lang/perl/CMakeLists.txt
Normal 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})
|
|
@ -3,9 +3,14 @@ require Inline;
|
||||||
|
|
||||||
my $STASIS_DIR;
|
my $STASIS_DIR;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$STASIS_DIR = $ENV{STASIS_DIR}
|
$STASIS_DIR = $ENV{STASIS_DIR};
|
||||||
|| die "\nNeed STASIS_DIR environment variable!!\n\n";
|
if(!defined($STASIS_DIR)) {
|
||||||
#'/home/sears/stasis4';
|
$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 =>
|
use Inline C => Config => LIBS =>
|
||||||
"-L$STASIS_DIR/build/src/stasis/ " .
|
"-L$STASIS_DIR/build/src/stasis/ " .
|
||||||
|
|
|
@ -3,33 +3,60 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Stasis;
|
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();
|
Stasis::Tinit();
|
||||||
my $x=Stasis::Tbegin();
|
my $x=Stasis::Tbegin();
|
||||||
print("$x\n");
|
myprint("$x\n");
|
||||||
|
|
||||||
my $rid1 = Stasis::TallocScalar($x, "thequickbrown"); #14);
|
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;
|
defined ($rid1) || die;
|
||||||
|
|
||||||
Stasis::Tset($x, $rid1, "thequickbrown");
|
Stasis::Tset($x, $rid1, "thequickbrown");
|
||||||
|
|
||||||
my $thequickbrown = Stasis::Tread($x, $rid1);
|
my $thequickbrown = Stasis::Tread($x, $rid1);
|
||||||
print "$thequickbrown\n";
|
myprint "$thequickbrown\n";
|
||||||
|
|
||||||
$rid1 = Stasis::TallocScalar($x, 3.14159); #14);
|
$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;
|
defined ($rid1) || die;
|
||||||
|
|
||||||
Stasis::Tset($x, $rid1, 3.14159);
|
Stasis::Tset($x, $rid1, 3.14159);
|
||||||
|
|
||||||
$thequickbrown = Stasis::Tread($x, $rid1);
|
$thequickbrown = Stasis::Tread($x, $rid1);
|
||||||
print "->$thequickbrown\n";
|
myprint "->$thequickbrown\n";
|
||||||
|
|
||||||
my $rid2 = Stasis::TallocScalar($x, 42);
|
my $rid2 = Stasis::TallocScalar($x, 42);
|
||||||
Stasis::Tset($x, $rid2, 42);
|
Stasis::Tset($x, $rid2, 42);
|
||||||
|
|
||||||
$thequickbrown = Stasis::Tread($x, $rid2);
|
$thequickbrown = Stasis::Tread($x, $rid2);
|
||||||
print "$thequickbrown\n";
|
myprint "$thequickbrown\n";
|
||||||
|
|
||||||
$thequickbrown == 42 || die;
|
$thequickbrown == 42 || die;
|
||||||
|
|
||||||
|
@ -39,14 +66,14 @@ $x = Stasis::Tbegin();
|
||||||
|
|
||||||
Stasis::Tset($x, $rid2, 13);
|
Stasis::Tset($x, $rid2, 13);
|
||||||
$thequickbrown = Stasis::Tread($x, $rid2);
|
$thequickbrown = Stasis::Tread($x, $rid2);
|
||||||
print "$thequickbrown\n";
|
myprint "$thequickbrown\n";
|
||||||
|
|
||||||
$thequickbrown == 13 || die;
|
$thequickbrown == 13 || die;
|
||||||
|
|
||||||
Stasis::Tabort($x);
|
Stasis::Tabort($x);
|
||||||
$x = Stasis::Tbegin();
|
$x = Stasis::Tbegin();
|
||||||
$thequickbrown = Stasis::Tread($x, $rid2);
|
$thequickbrown = Stasis::Tread($x, $rid2);
|
||||||
print "$thequickbrown\n";
|
myprint "$thequickbrown\n";
|
||||||
|
|
||||||
$thequickbrown == 42 || die;
|
$thequickbrown == 42 || die;
|
||||||
|
|
||||||
|
@ -60,3 +87,10 @@ my $rid2cpy = Stasis::Tread($x,$rid3);
|
||||||
Stasis::Tcommit($x);
|
Stasis::Tcommit($x);
|
||||||
|
|
||||||
Stasis::Tdeinit();
|
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";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,40 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Stasis;
|
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();
|
Stasis::Tinit();
|
||||||
|
|
||||||
my $xid = Stasis::Tbegin();
|
my $xid = Stasis::Tbegin();
|
||||||
|
@ -11,19 +45,19 @@ sub walk {
|
||||||
my $from = shift;
|
my $from = shift;
|
||||||
my $level = shift || 0;
|
my $level = shift || 0;
|
||||||
my $to = Stasis::ThashLookup($xid, $rid, $from);
|
my $to = Stasis::ThashLookup($xid, $rid, $from);
|
||||||
print $from;
|
myprint $from;
|
||||||
$level += (length($from) + 4);
|
$level += (length($from) + 4);
|
||||||
|
|
||||||
if(defined $to) {
|
if(defined $to) {
|
||||||
my @tok = split ',', $to;
|
my @tok = split ',', $to;
|
||||||
my $first = 1;
|
my $first = 1;
|
||||||
foreach my $f (@tok) {
|
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;
|
$first = 0;
|
||||||
walk($f,$level);
|
walk($f,$level);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print "\n";
|
myprint "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,3 +80,8 @@ while(my $line = <>) {
|
||||||
|
|
||||||
Stasis::Tcommit($xid);
|
Stasis::Tcommit($xid);
|
||||||
Stasis::Tdeinit();
|
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";
|
||||||
|
}
|
||||||
|
|
|
@ -3,7 +3,5 @@ SUBDIRS(lang)
|
||||||
ADD_LIBRARY(referential algebra.c dml.c ddl.c tuple.c lang/ast.c)
|
ADD_LIBRARY(referential algebra.c dml.c ddl.c tuple.c lang/ast.c)
|
||||||
TARGET_LINK_LIBRARIES(referential ${COMMON_LIBRARIES})
|
TARGET_LINK_LIBRARIES(referential ${COMMON_LIBRARIES})
|
||||||
SET(COMMON_LIBRARIES referential refparse ${COMMON_LIBRARIES})
|
SET(COMMON_LIBRARIES referential refparse ${COMMON_LIBRARIES})
|
||||||
IF(CHECK_LIBRARY)
|
CREATE_CHECK_OPT(toplevel ${CMAKE_CURRENT_SOURCE_DIR}/test-script.ref)
|
||||||
CREATE_CHECK_OPT(toplevel ${CMAKE_CURRENT_SOURCE_DIR}/test-script.ref)
|
|
||||||
ENDIF(CHECK_LIBRARY)
|
|
||||||
endif(HAVE_GETLINE)
|
endif(HAVE_GETLINE)
|
||||||
|
|
Loading…
Reference in a new issue