#!/usr/bin/perl -w # $Id: runtests,v 1.7 2002-11-21 09:57:28 mike Exp $ use IO::File; use strict; $ENV{CLASSPATH} .= ":../../lib/cql-java.jar"; if (@ARGV != 2) { print STDERR "Usage: $0 \n"; exit(1); } my $compiler = $ARGV[0]; my $norman = $ARGV[1]; # name of XML normaliser program while () { my $sdir = $_; s@sections/@@; next if /^CVS$/ || /^10$/; print "testing section $_ - ", read_file("$sdir/name"), "\n"; while (<$sdir/*.cql>) { my $qfile = $_; s@sections/([0-9]+/.*)\.cql@$1@; my $query = read_file($qfile); my $afile = $qfile; $afile =~ s/\.cql$/.xcql/; print " query $_ - $query "; my $correct = read_file("$norman < $afile |"); my $tested = read_file("$compiler < $qfile | $norman |") or print "\n *** test compiler exited non-zero\n"; if ($tested eq $correct) { print "OK\n"; } else { print "\n *** different XCQL output\n"; print "=== correct ===\n$correct"; print "=== tested ===\n$tested"; } } } sub read_file { my($name) = @_; $name = "<$name" if $name !~ /\|$/; my $fh = new IO::File("$name") or die "can't read '$name': $!"; my $contents = join('', <$fh>); $fh->close(); return $contents; }