Redland

 view release on metacpan or  search on metacpan

redland/rasqal/tests/sparql/check-sparql  view on Meta::CPAN

  my $resultset_node=undef;
  for my $node (@node_order) {
    my $type=$node_type{$node};
    next if !$type || $type ne "<${rs}ResultSet>";
    $resultset_node=$node;
    last;
  }

  if(!defined $resultset_node) {
    # No result defined
    warn "$program: '$name' OK (no result)\n";
    return $expect_fail ? 1 : 0;
  }

  open(OUT, "|$sort >result.out")
    or die "$program: Cannot create pipe to result.out - $!\n";

  my $count=0;
  for my $node (@{$nodes{$resultset_node}->{$solution_predicate}}) {
    # Get binding nodes
    my(%results);
    for my $binding_node (@{$nodes{$node}->{$binding_predicate}}) {
      my $variable=$nodes{$binding_node}->{$variable_predicate}->[0];
      $variable=~ s/^"(.*)"$/$1/;
      my $value=$nodes{$binding_node}->{$value_predicate}->[0];
      $results{$variable}=toDebug($value);
    }

    my(@defined_vars)=grep(defined $results{$_}, @vars_order);
    print OUT "result: [",join(", ",map {"$_=$results{$_}"} @defined_vars),"]\n";
    $count++;
  }
  close(OUT);

  $cmd="diff -c result.out roqet.out > diff.out";
  $rc=system($cmd);
  if($rc) {
    warn "$program: '$name' FAILED\n";
    warn "Failing program was:\n";
    warn "  $roqet_cmd\n";
    my $r=$roqet_cmd; $r =~ s,file:[^ ]+/,,g;
    warn "  OR $r\n";
    warn "Difference is:\n";
    system("cat diff.out");
    warn "$program: Expected ".plural("result","s",$count).", got $roqet_results\n";
    return 1;
  } else {
    warn "$program: '$name' OK\n";
    return 0;
  }

}




# Argument handling
my $usage=0;

while(@ARGV && $ARGV[0] =~ /^-(.+)$/) {
  local $_=shift(@ARGV);
  if(/^-d/) {
    $debug=1;
  } elsif (/^-s$/) {
    if(!@ARGV) {
      $usage=1;
      last;
    } else {
      $srcdir=shift @ARGV;
    }
  }
}

$usage=1 if @ARGV >1;

die "USAGE: $program [-d] [-s srcdir] [TEST]\n" if $usage;

my $unique_test=$ARGV[0];

$srcdir.="/" unless $srcdir =~ m%/$%;

my $manifest_file=undef;
for my $file (@manifest_files) {
  next unless -r $srcdir.$file;
  $manifest_file=$file;
}
die "$program: No manifest file found in $srcdir\n"
  unless defined $manifest_file;


my(%triples);
my $entries_node;
my $cmd="$rapper -q -i turtle -o ntriples $srcdir$manifest_file";
open(MF, "$cmd |") 
  or die "Cannot open pipe from '$cmd' - $!\n";
while(<MF>) {
  chomp;
  s/\s+\.$//;
  my($s,$p,$o)=split(/ /,$_,3);
  die "no p in '$_'\n" unless defined $p;
  die "no o in '$_'\n" unless defined $o;
  push(@{$triples{$s}->{$p}}, $o);
  $entries_node=$o if $p eq "<${mf}entries>";
}
close(MF);

print "Entries node is '$entries_node'\n"
  if $debug;
my $list_node=$entries_node;

my(@tests);
while($list_node) {
  warn "List node is '$list_node'\n"
    if $debug;

  my $entry_node=$triples{$list_node}->{"<${rdf}first>"}->[0];

  warn "Entry node is '$entry_node'\n"
    if $debug;

  my $name=$triples{$entry_node}->{"<${mf}name>"}->[0];



( run in 0.528 second using v1.01-cache-2.11-cpan-54e63673c56 )