Make it easier to run local (non-official) json-ld tests.

This commit is contained in:
Dave Longley 2014-12-04 14:45:17 -05:00
parent daed05a54b
commit 237a405175

View file

@ -295,7 +295,7 @@ class JsonLdTest {
if(property_exists($options, 'redirectTo') && if(property_exists($options, 'redirectTo') &&
property_exists($options, 'httpStatus') && property_exists($options, 'httpStatus') &&
$options->httpStatus >= '300') { $options->httpStatus >= '300') {
$doc->documentUrl = ($test->manifest->data->{'baseIri'} . $doc->documentUrl = ($test->manifest->data->baseIri .
$options->redirectTo); $options->redirectTo);
} else if(property_exists($options, 'httpLink')) { } else if(property_exists($options, 'httpLink')) {
$content_type = (property_exists($options, 'contentType') ? $content_type = (property_exists($options, 'contentType') ?
@ -318,15 +318,23 @@ class JsonLdTest {
if(is_array($link_header)) { if(is_array($link_header)) {
throw new Exception('multiple context link headers'); throw new Exception('multiple context link headers');
} }
$doc->{'contextUrl'} = $link_header->target; $doc->contextUrl = $link_header->target;
} }
} }
} }
global $ROOT_MANIFEST_DIR; global $ROOT_MANIFEST_DIR;
$filename = $ROOT_MANIFEST_DIR . if(strpos($doc->documentUrl, ':') === false) {
substr($doc->{'documentUrl'}, strlen($base)); $filename = join(
DIRECTORY_SEPARATOR, array(
$ROOT_MANIFEST_DIR, $doc->documentUrl));
$doc->documentUrl = 'file://' . $filename;
} else {
$filename = join(
DIRECTORY_SEPARATOR, array(
$ROOT_MANIFEST_DIR, substr($doc->documentUrl, strlen($base))));
}
try { try {
$doc->{'document'} = Util::readJson($filename); $doc->document = Util::readJson($filename);
} catch(Exception $e) { } catch(Exception $e) {
throw new Exception('loading document failed'); throw new Exception('loading document failed');
} }
@ -335,7 +343,7 @@ class JsonLdTest {
$local_loader = function($url) use ($test, $base, $load_locally) { $local_loader = function($url) use ($test, $base, $load_locally) {
// always load remote-doc and non-base tests remotely // always load remote-doc and non-base tests remotely
if(strpos($url, $base) !== 0 || if((strpos($url, $base) !== 0 && strpos($url, ':') !== false) ||
$test->manifest->data->name === 'Remote document') { $test->manifest->data->name === 'Remote document') {
return call_user_func('jsonld_default_document_loader', $url); return call_user_func('jsonld_default_document_loader', $url);
} }