rdf-mt/commit

Added running tests from remote test data

authorJan Wielemaker
Tue Dec 17 16:24:09 2013 +0100
committerJan Wielemaker
Tue Dec 17 16:24:09 2013 +0100
commit97f0b9124e646466986a1c9aac352bff4559f096
tree7c5a5ef08b402a465b6757059e6522ac5723c6d9
parent48ebfede929674cf64f9624563498a8902451952
Diff style: patch stat
diff --git a/config-available/rdf-mt.pl b/config-available/rdf-mt.pl
index 3146708..ba4b6b0 100644
--- a/config-available/rdf-mt.pl
+++ b/config-available/rdf-mt.pl
@@ -29,7 +29,7 @@
 */
 
 :- module(rdf_mt,
-	  [ load_manifest/0,
+	  [ load_manifest/1,
 	    run_tests/0,
 	    run_test/1,			% +Test
 
@@ -42,6 +42,8 @@
 :- use_module(library(lists)).
 :- use_module(library(semweb/rdf_db)).
 :- use_module(library(semweb/rdf_turtle_write)).
+:- use_module(library(http/http_open)).
+:- use_module(library(http/http_ssl_plugin)).
 
 :- use_module(library(rdf_mt/earl)).
 :- use_module(library(rdf_mt/manifest)).
@@ -56,18 +58,25 @@
 :- dynamic
 	test_result/3.			% Test, Time, Result
 
-default_manifest('rdf-ff6d041b8705/rdf-mt/tests/manifest.ttl').
+default_manifest(
+    local,
+    'rdf-ff6d041b8705/rdf-mt/tests/manifest.ttl').
+default_manifest(
+    remote,
+    'https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-mt/tests/manifest.ttl').
 
 :- initialization debug(mt(_)).
 
-%%	load_manifest
+%%	load_manifest(+Type)
 %
 %	Load default test manifest
+%
+%	@arg Type is one of =local= or =remote=
 
-load_manifest :-
+load_manifest(Type) :-
 	clean_manifests,
-	default_manifest(MF),
-	load_manifest(MF).
+	default_manifest(Type, MF),
+	load_manifest(MF, []).
 
 %%	run_tests
 %
@@ -138,7 +147,7 @@ text_of(literal(Text), Text) :- atomic(Text).
 
 load_test_data(Test) :-
 	forall(mf_rdf(Test, mf:action, Data),
-	       rdf_load(Data, [silent(true), graph(data)])).
+	       load_data(Data, data)).
 
 %%	load_test_result(+Test)
 %
@@ -146,7 +155,34 @@ load_test_data(Test) :-
 
 load_test_result(Test) :-
 	forall(mf_rdf(Test, mf:result, Data),
-	       rdf_load(Data, [silent(true), graph(result)])).
+	       load_data(Data, result)).
+
+load_data(URL, Graph) :-
+	uri_is_global(URL), !,
+	setup_call_cleanup(
+	    http_open(URL, In,
+		      [ cert_verify_hook(ssl_verify)
+		      ]),
+	    rdf_load(In,
+		     [ silent(true),
+		       graph(Graph)
+		     ]),
+	    close(In)).
+load_data(URL, Graph) :-
+	rdf_load(URL,
+		 [ silent(true),
+		   graph(Graph)
+		 ]).
+
+:- public ssl_verify/5.
+
+%%	ssl_verify(+SSL, +ProblemCert, +AllCerts, +FirstCert, +Error)
+%
+%	Accept all certificates.
+
+ssl_verify(_SSL,
+	   _ProblemCertificate, _AllCertificates, _FirstCertificate,
+	   _Error).
 
 false_result_test(Test) :-
 	mf_rdf(Test, mf:result, literal(type(_,false))).
diff --git a/lib/rdf_mt/manifest.pl b/lib/rdf_mt/manifest.pl
index 17ff8c0..852119c 100644
--- a/lib/rdf_mt/manifest.pl
+++ b/lib/rdf_mt/manifest.pl
@@ -29,7 +29,7 @@
 */
 
 :- module(rdf_mt_manifest,
-	  [ load_manifest/1,		% +File
+	  [ load_manifest/2,		% +File, +Options
 	    clean_manifests/0,
 	    mf_test/1,			% ?Test
 	    mf_rdf/3,			% S,P,O
@@ -37,6 +37,8 @@
 	  ]).
 :- use_module(library(semweb/turtle)).
 :- use_module(library(apply)).
+:- use_module(library(http/http_open)).
+:- use_module(library(http/http_ssl_plugin)).
 
 /** <module> Process an RDF test manifest
 */
@@ -55,17 +57,38 @@
        rdft,
        'http://www.w3.org/ns/rdftest#').
 
-%%	load_manifest(+File)
+%%	load_manifest(+File, +Options)
 %
 %	Load a new manifest
 
-load_manifest(File) :-
+load_manifest(URL, _Options) :-
+	uri_is_global(URL), !,
+	atom_concat('__', URL, BNPrefix),
+	setup_call_cleanup(
+	    http_open(URL, In,
+		      [ cert_verify_hook(ssl_verify)
+		      ]),
+	    rdf_read_turtle(In, Triples, [anon_prefix(BNPrefix)]),
+	    close(In)),
+	maplist(mf_assert, Triples),
+	assert(mf_manifest(URL)).
+load_manifest(File, _Options) :-
 	uri_file_name(URI, File),
 	atom_concat('__', URI, BNPrefix),
 	rdf_read_turtle(File, Triples, [anon_prefix(BNPrefix)]),
 	maplist(mf_assert, Triples),
 	assert(mf_manifest(URI)).
 
+:- public ssl_verify/5.
+
+%%	ssl_verify(+SSL, +ProblemCert, +AllCerts, +FirstCert, +Error)
+%
+%	Accept all certificates.
+
+ssl_verify(_SSL,
+	   _ProblemCertificate, _AllCertificates, _FirstCertificate,
+	   _Error).
+
 mf_assert(rdf(S,P,O)) :-
 	assert(mf_rdf(S,P,O)).