Attean
view release on metacpan or search on metacpan
lib/Test/Attean/W3CManifestTestSuite.pm view on Meta::CPAN
# # if ($self->debug) {
# # my $q = $content;
# # $q =~ s/\s+/ /g;
# # warn "### test : " . $test->as_string . "\n";
# # warn "# file : $filename\n";
# # warn "# content : $q\n";
# # }
#
# if ($is_pos_ttl or $is_neg_ttl or $is_eval_ttl) {
# my $test_base = $uri->as_string;
# $test_base =~ s{^.*/rdf-tests/}{https://w3c.github.io/rdf-tests/}; # XXX hack
#
# my $ttl_parser = Attean->get_parser('Turtle')->new(base => $test_base);
# my $nt_parser = Attean->get_parser('NTriples')->new();
# if ($is_pos_ttl or $is_eval_ttl) {
# my (@triples) = eval { $ttl_parser->parse_list_from_bytes($bytes) };
# my $ok = scalar(@triples);
# $self->record_result('syntax', $ok, $test->as_string);
# if ($ok) {
# pass("$testname -Â $filename");
# } else {
# fail("$testname -Â $filename: $@");
# }
# } elsif ($is_pos_nt or $is_eval_nt) {
# my (@triples) = eval { $nt_parser->parse_list_from_bytes($bytes) };
# my $ok = scalar(@triples);
# $self->record_result('syntax', $ok, $test->as_string);
# if ($ok) {
# pass("$testname -Â $filename");
# } else {
# fail("$testname -Â $filename: $@");
# }
# } elsif ($is_neg_ttl) {
# my (@triples) = eval { $ttl_parser->parse_list_from_bytes($bytes) };
# my $ok = $@ ? 1 : 0;
# $self->record_result('syntax', $ok, $test->as_string);
# if ($ok) {
# pass("$testname -Â $filename");
# } else {
# # if ($self->debug) {
# # warn $query->as_string;
# # }
# fail("$testname -Â $filename (unexpected successful parse)");
# }
# } elsif ($is_neg_nt) {
# my (@triples) = eval { $nt_parser->parse_list_from_bytes($bytes) };
# my $ok = $@ ? 1 : 0;
# $self->record_result('syntax', $ok, $test->as_string);
# if ($ok) {
# pass("$testname -Â $filename");
# } else {
# # if ($self->debug) {
# # warn $query->as_string;
# # }
# fail("$testname -Â $filename (unexpected successful parse)");
# }
# }
# }
# }
sub update_eval_test {
my $self = shift;
my $model = shift;
my $test = shift;
my %args = @_;
my $specVersion = $args{'specVersion'} // '1.1';
my ($action) = $model->objects( $test, iri("${MF}action") )->elements;
my ($result) = $model->objects( $test, iri("${MF}result") )->elements;
my @reqs = $model->objects( $test, iri("${MF}requires") )->elements;
my ($approved) = $model->objects( $test, iri("${DAWGT}approval") )->elements;
my ($queryd) = $model->objects( $action, iri("${UT}request") )->elements;
my @data = $model->objects( $action, iri("${UT}data") )->elements;
my @gdata = $model->objects( $action, iri("${UT}graphData") )->elements;
if ($self->strict_approval) {
unless ($approved) {
warn "- skipping test because it isn't approved\n" if ($self->debug);
return;
}
if ($approved->equal(iri("${DAWGT}NotClassified"))) {
warn "- skipping test because its approval is dawgt:NotClassified\n" if ($self->debug);
return;
}
}
my $uri = URI->new( $queryd->value );
my $filename = $uri->file;
my (undef,$base,undef) = File::Spec->splitpath( $filename );
$base = "file://${base}";
warn "Loading SPARQL query from file $filename" if ($self->debug);
my $sparql = do { local($/) = undef; open(my $fh, '<', $filename) or do { fail("$!: $filename; " . $test->as_string); return }; binmode($fh, ':utf8'); <$fh> };
my $q = $sparql;
$q =~ s/\s+/ /g;
if ($self->debug) {
warn "### test : " . $test->value . "\n";
warn "# sparql : $q\n";
warn "# file : $filename\n";
foreach my $data (@data) {
warn "# data : " . $data->value . "\n" if (blessed($data));
}
warn "# graph data : " . $_->value . "\n" for (@gdata);
warn "# result : " . $result->value . "\n";
foreach my $req (@reqs) {
warn "# requires : " . $req->value . "\n" if (blessed($req));
}
}
my $todo_because_of_test_req = 0;
my @unsupported_reqs;
foreach my $req (@reqs) {
unless (exists ${ $self->supported_extensions }{ $req->value }) {
$todo_because_of_test_req++;
push(@unsupported_reqs, $req->value);
}
}
# TODO: set up remote endpoint mock
( run in 1.235 second using v1.01-cache-2.11-cpan-145b269f2f3 )