earl-report 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/bin/earl-report +6 -2
- data/lib/earl_report.rb +17 -11
- data/lib/earl_report/views/earl_report.html.haml +213 -85
- data/spec/earl_report_spec.rb +14 -12
- data/spec/test-files/results.html +188 -89
- data/spec/test-files/results.jsonld +19 -19
- data/spec/test-files/results.ttl +17 -17
- metadata +23 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1119b1b46c38387b9565ad9eefe96bcea4c05cd8
|
4
|
+
data.tar.gz: cee2b030f2a72dacc021d027aa98b253bf48c4b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc5068bdd7e743385e67a7b76090aa88365c59b3fa98e1b5fb1e14167798b79ce4e4ae73a953ba3860071d7f304444f70cb61723343a3cb81d31f727da8aacb6
|
7
|
+
data.tar.gz: 4cc8561f19460e2570f6d0fe9e1b29a38e274e7289563e47516cb3e5c0555eec80bd541db93c80ac70fd63904c78cfba69400e4001f2382ea5c3f364b74dbedb
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.3
|
data/bin/earl-report
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'rubygems'
|
3
|
-
$:.unshift(File.expand_path(
|
4
|
-
|
3
|
+
$:.unshift(File.expand_path("../../lib", __FILE__))
|
4
|
+
begin
|
5
|
+
require "bundler/setup"
|
6
|
+
rescue LoadError
|
7
|
+
#skip
|
8
|
+
end
|
5
9
|
require 'earl_report'
|
6
10
|
require 'getoptlong'
|
7
11
|
require 'yaml'
|
data/lib/earl_report.rb
CHANGED
@@ -112,30 +112,36 @@ class EarlReport
|
|
112
112
|
"testSubjects" => {"@type" => "@id", "@container" => "@set"},
|
113
113
|
"xsd" => {"@id" => "http://www.w3.org/2001/XMLSchema#"}
|
114
114
|
},
|
115
|
+
"@requireAll" => true,
|
116
|
+
"@embed" => "@always",
|
115
117
|
"assertions" => {},
|
116
118
|
"bibRef" => {},
|
117
119
|
"generatedBy" => {
|
118
120
|
"@embed" => "@always",
|
119
|
-
"developer" => {},
|
120
|
-
"release" => {
|
121
|
-
"@embed" => "@always"
|
122
|
-
}
|
121
|
+
"developer" => {"@embed" => "@always"},
|
122
|
+
"release" => {"@embed" => "@always"}
|
123
123
|
},
|
124
124
|
"testSubjects" => {
|
125
125
|
"@embed" => "@always",
|
126
126
|
"@type" => "earl:TestSubject",
|
127
127
|
"developer" => {"@embed" => "@always"},
|
128
|
-
"homepage" => {"@embed" =>
|
128
|
+
"homepage" => {"@embed" => "@never"}
|
129
129
|
},
|
130
130
|
"entries" => [{
|
131
|
+
"@embed" => "@always",
|
131
132
|
"@type" => "mf:Manifest",
|
132
133
|
"entries" => [{
|
134
|
+
"@embed" => "@always",
|
133
135
|
"@type" => "earl:TestCase",
|
134
136
|
"assertions" => {
|
137
|
+
"@embed" => "@always",
|
135
138
|
"@type" => "earl:Assertion",
|
136
|
-
"assertedBy" => {"@embed" =>
|
137
|
-
"result" => {
|
138
|
-
|
139
|
+
"assertedBy" => {"@embed" => "@never"},
|
140
|
+
"result" => {
|
141
|
+
"@embed" => "@always",
|
142
|
+
"@type" => "earl:TestResult"
|
143
|
+
},
|
144
|
+
"subject" => {"@embed" => "@never"}
|
139
145
|
}
|
140
146
|
}]
|
141
147
|
}]
|
@@ -306,7 +312,7 @@ class EarlReport
|
|
306
312
|
next
|
307
313
|
end
|
308
314
|
unless subjects[subject]
|
309
|
-
$stderr.puts "No test result subject found for #{subject}: #{
|
315
|
+
$stderr.puts "No test result subject found for #{subject}: in #{subjects.keys.join(', ')}"
|
310
316
|
next
|
311
317
|
end
|
312
318
|
found_solutions[subject] = true
|
@@ -461,10 +467,10 @@ class EarlReport
|
|
461
467
|
@json_hash ||= begin
|
462
468
|
# Customized JSON-LD output
|
463
469
|
r = JSON::LD::API.fromRDF(graph) do |expanded|
|
464
|
-
JSON::LD::API.frame(expanded, TEST_FRAME, expanded: true)
|
470
|
+
JSON::LD::API.frame(expanded, TEST_FRAME, expanded: true, embed: '@never')
|
465
471
|
end
|
466
472
|
unless r.is_a?(Hash) && r.has_key?('@graph') && Array(r["@graph"]).length == 1
|
467
|
-
raise "Expected JSON result to have a single entry"
|
473
|
+
raise "Expected JSON result to have a single entry, it had #{Array(r["@graph"]).length rescue 'unknown'} entries"
|
468
474
|
end
|
469
475
|
{"@context" => r["@context"]}.merge(r["@graph"].first)
|
470
476
|
end
|
@@ -40,86 +40,22 @@
|
|
40
40
|
-# }
|
41
41
|
- require 'cgi'
|
42
42
|
- require 'digest'
|
43
|
+
- editors = [{ name: "Gregg Kellogg", url: "http://greggkellogg.net/"}]
|
44
|
+
- foaf = {name: "Gregg Kellogg", url: "http://greggkellogg.net/foaf#me" }
|
43
45
|
|
44
46
|
!!! 5
|
45
|
-
%html
|
46
|
-
- subjects = tests['testSubjects']
|
47
|
+
%html
|
48
|
+
- subjects = tests['testSubjects'].sort_by {|s| s['name'].to_s.downcase}
|
47
49
|
%head
|
48
50
|
%meta{"http-equiv" => "Content-Type", content: "text/html;charset=utf-8"}
|
49
51
|
%link{rel: "alternate", href: "earl.ttl"}
|
50
52
|
%link{rel: "alternate", href: "earl.jsonld"}
|
53
|
+
%link{rel: "stylesheet", href: "https://www.w3.org/StyleSheets/TR/base"}
|
51
54
|
- tests['assertions'].each do |file|
|
52
55
|
%link{rel: "related", href: file}
|
53
56
|
%title
|
54
57
|
= tests['name']
|
55
|
-
|
56
|
-
:javascript
|
57
|
-
var respecConfig = {
|
58
|
-
// extend the bibliography entries
|
59
|
-
localBiblio: {
|
60
|
-
TURTLE: "Eric Prud'hommeaux, Gavin Carothers. <cite><a href=\"http://www.w3.org/TR/2011/WD-turtle-20110809/\">Turtle: Terse RDF Triple Language.</a></cite> 09 August 2011. W3C Working Draft. URL: <a href=\"http://www.w3.org/TR/2011/WD-turtle-20110809/\">http://www.w3.org/TR/2011/WD-turtle-20110809/</a>",
|
61
|
-
DOAP: "Ed Dumbill. <cite><a href=\"https://github.com/edumbill/doap/wiki\">Turtle: Terse RDF Triple Language.</a></cite> Community Specification. URL: <a href=\"https://github.com/edumbill/doap/wiki\">https://github.com/edumbill/doap/wiki</a>",
|
62
|
-
},
|
63
|
-
|
64
|
-
// specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
|
65
|
-
specStatus: "unofficial",
|
66
|
-
copyrightStart: "2010",
|
67
|
-
doRDFa: "1.1",
|
68
|
-
|
69
|
-
// the specification's short name, as in http://www.w3.org/TR/short-name/
|
70
|
-
shortName: "turtle-earl",
|
71
|
-
subtitle: "Turtle Implementation Conformance Report",
|
72
|
-
// if you wish the publication date to be other than today, set this
|
73
|
-
publishDate: "#{Time.now.strftime("%Y/%m/%d")}",
|
74
|
-
|
75
|
-
// if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
|
76
|
-
// and its maturity status
|
77
|
-
//previousPublishDate: "2011-10-23",
|
78
|
-
//previousMaturity: "ED",
|
79
|
-
//previousDiffURI: "http://json-ld.org/spec/ED/json-ld-syntax/20111023/index.html",
|
80
|
-
//diffTool: "http://www.aptest.com/standards/htmldiff/htmldiff.pl",
|
81
|
-
|
82
|
-
// if there a publicly available Editor's Draft, this is the link
|
83
|
-
//edDraftURI: "",
|
84
|
-
|
85
|
-
// if this is a LCWD, uncomment and set the end of its review period
|
86
|
-
// lcEnd: "2009-08-05",
|
87
|
-
|
88
|
-
// editors, add as many as you like
|
89
|
-
// only "name" is required
|
90
|
-
editors: [
|
91
|
-
{ name: "Gregg Kellogg", url: "http://greggkellogg.net/",
|
92
|
-
company: "Kellogg Associates" },
|
93
|
-
{ name: "Andy Seaborne",
|
94
|
-
company: "The Apache Software Foundation"}
|
95
|
-
],
|
96
|
-
|
97
|
-
// authors, add as many as you like.
|
98
|
-
// This is optional, uncomment if you have authors as well as editors.
|
99
|
-
// only "name" is required. Same format as editors.
|
100
|
-
//authors: [
|
101
|
-
//RDF Working Group],
|
102
|
-
|
103
|
-
// name of the WG
|
104
|
-
wg: "RDF Working Group",
|
105
|
-
|
106
|
-
// URI of the public WG page
|
107
|
-
wgURI: "http://www.w3.org/2011/rdf-wg/",
|
108
|
-
|
109
|
-
// name (with the @w3c.org) of the public mailing to which comments are due
|
110
|
-
wgPublicList: "public-rdf-comments",
|
111
|
-
|
112
|
-
// URI of the patent status for this WG, for Rec-track documents
|
113
|
-
// !!!! IMPORTANT !!!!
|
114
|
-
// This is important for Rec-track documents, do not copy a patent URI from a random
|
115
|
-
// document unless you know what you're doing. If in doubt ask your friendly neighbourhood
|
116
|
-
// Team Contact.
|
117
|
-
wgPatentURI: "http://www.w3.org/2004/01/pp-impl/46168/status",
|
118
|
-
alternateFormats: [
|
119
|
-
{uri: "earl.ttl", label: "Turtle"},
|
120
|
-
{uri: "earl.jsonld", label: "JSON-LD"}
|
121
|
-
],
|
122
|
-
};
|
58
|
+
Implementation Report
|
123
59
|
:css
|
124
60
|
span[property='dc:description rdfs:comment'] { display: none; }
|
125
61
|
td.PASS { color: green; }
|
@@ -152,8 +88,80 @@
|
|
152
88
|
td.passed-all {color: green;}
|
153
89
|
td.passed-most {color: darkorange;}
|
154
90
|
td.passed-some {color: red;}
|
155
|
-
|
91
|
+
em.rfc2119 {
|
92
|
+
text-transform: lowercase;
|
93
|
+
font-variant: small-caps;
|
94
|
+
font-style: normal;
|
95
|
+
color: #900;
|
96
|
+
}
|
97
|
+
a.testlink {
|
98
|
+
color: inherit;
|
99
|
+
text-decoration: none;
|
100
|
+
}
|
101
|
+
a.testlink:hover {
|
102
|
+
text-decoration: underline;
|
103
|
+
}
|
104
|
+
pre > code {
|
105
|
+
color: #C83500;
|
106
|
+
}
|
107
|
+
%body{prefix: "bibo: http://purl.org/ontology/bibo/ earl: http://www.w3.org/ns/earl# doap: http://usefulinc.com/ns/doap# mf: http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#", vocab: "http://www.w3.org/ns/earl#"}
|
108
|
+
- test_info = {}
|
109
|
+
- test_refs = {}
|
110
|
+
- subject_refs = {}
|
111
|
+
- tests['entries'].each {|m| m['title'] ||= m['rdfs:label'] || m['description'] || m['rdfs:comment']}
|
112
|
+
- subjects.each_with_index do |subject, index|
|
113
|
+
- subject_refs[subject['@id']] = "subj_#{index}"
|
114
|
+
%div.head{role: :contentinfo}
|
115
|
+
%p
|
116
|
+
%a{href: "http://www.w3.org/"}
|
117
|
+
%img{width: 72, height: 48, src: "https://www.w3.org/Icons/w3c_home", alt: "W3C"}
|
118
|
+
%h1.title.p-name#title{property: "dc:title"}=tests['name']
|
119
|
+
%h2#w3c-document-28-october-2015
|
120
|
+
%abbr{title: "World Wide Web Consortium"}="W3C"
|
121
|
+
Document
|
122
|
+
%time.dt-published{property: "dc:issued", datetime: Time.now.strftime('%Y-%m-%d')}
|
123
|
+
= Time.now.strftime("%d %B %Y")
|
124
|
+
%dl
|
125
|
+
%dt="Editor:"
|
126
|
+
- editors.each do |ed|
|
127
|
+
%dd.p-author.h-card.vcard{property: "bibo:editor", inlist: true}<>
|
128
|
+
%span{property: "rdf:first", typeof: "foaf:Person"}<>
|
129
|
+
%meta{property: "foaf:name", content: ed[:name]}<>
|
130
|
+
%a.url.fn.u-url.p-name{property: "foaf:homepage", href: ed[:url]}<>
|
131
|
+
= ed[:name]
|
132
|
+
%p
|
133
|
+
This document is also available in these non-normative formats:
|
134
|
+
%a{re: "alternate", href: "earl.ttl"}
|
135
|
+
and
|
136
|
+
%a{re: "alternate", href: "earl.jsonld"}
|
137
|
+
= "."
|
138
|
+
%p.copyright
|
139
|
+
%a{href: "http://www.w3.org/Consortium/Legal/ipr-notice#Copyright"}
|
140
|
+
Copyright
|
141
|
+
© 2010-2015
|
142
|
+
%a{href: "http://www.w3.org/"}
|
143
|
+
%sup="®"
|
144
|
+
(
|
145
|
+
%a{href: "http://www.csail.mit.edu/"}<>
|
146
|
+
%abbr{title: "Massachusetts Institute of Technology"}<>="MIT"
|
147
|
+
= ", "
|
148
|
+
%a{href: "http://www.ercim.eu/"}<>
|
149
|
+
%abbr{title: "European Research Consortium for Informatics and Mathematics"}<>="ERCIM"
|
150
|
+
= ", "
|
151
|
+
%a{href: "http://www.keio.ac.jp/"}<>="Keio"
|
152
|
+
= ", "
|
153
|
+
%a{href: "http://ev.buaa.edu.cn/"}<>="Beihang"
|
154
|
+
).
|
155
|
+
%abbr{title: "World Wide Web Consortium"}="W3C"
|
156
|
+
%a{href: "http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer"}="liability"
|
157
|
+
= ","
|
158
|
+
%a{href: "http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks"}="trademark"
|
159
|
+
and
|
160
|
+
%a{rel: "license", href: "http://www.w3.org/Consortium/Legal/copyright-documents"}="document use"
|
161
|
+
rules apply.
|
162
|
+
%hr
|
156
163
|
%section#abstract{about: tests['@id'], typeof: Array(tests['@type']).join(" ")}
|
164
|
+
%h2="Abstract"
|
157
165
|
%p
|
158
166
|
This document report test subject conformance for and related specifications for
|
159
167
|
%span{property: "doap:name"}<=tests['name']
|
@@ -168,16 +176,130 @@
|
|
168
176
|
%a{rel: "xhv:alternate", href: "earl.jsonld"}
|
169
177
|
JSON-LD
|
170
178
|
%section#sodt
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
179
|
+
%h2#h-sotd{resource: "#h-sotd"}
|
180
|
+
%span{property: "xhv:role", resource: "xhv:heading"}
|
181
|
+
Status of This Document
|
182
|
+
%p
|
183
|
+
This document is merely a
|
184
|
+
%abbr{title: "World Wide Web Consortium"}<>="W3C"
|
185
|
+
="-internal document."
|
186
|
+
It has no official standing of any kind and does not represent consensus of the
|
187
|
+
%abbr{title: "World Wide Web Consortium"}="W3C"
|
188
|
+
Membership.
|
189
|
+
%p
|
190
|
+
This report describes the state of implementation conformance at the time of publication.
|
191
|
+
%section#toc
|
192
|
+
%h2.introductory#h-toc{resource: "#h-toc"}
|
193
|
+
%span{property: "xhv:role", resource: "xhv:heading"}
|
194
|
+
Table of Contents
|
195
|
+
%ul.toc#respecContents{role: "directory"}
|
196
|
+
%li.tocline
|
197
|
+
%a.tocxref{href: "#instructions-for-submitting-implementation-reports"}
|
198
|
+
%span.secno="1."
|
199
|
+
Instructions for submitting implementation reports
|
200
|
+
%li.tocline
|
201
|
+
%a.tocxref{href: "#test-manifests"}
|
202
|
+
%span.secno="2."
|
203
|
+
Test Manifests
|
204
|
+
%ul.toc
|
205
|
+
- tests['entries'].sort_by {|m| m['title'].to_s.downcase}.each_with_index do |manifest, ndx|
|
206
|
+
%li.tocline
|
207
|
+
%span.secno="2.#{ndx+1}"
|
208
|
+
%a.tocxref{href: "##{manifest['rdfs:comment'].gsub(' ', '-')}"}
|
209
|
+
~ manifest['rdfs:comment']
|
210
|
+
%li.tocline
|
211
|
+
%a.tocxref{href: "#test-subjects"}
|
212
|
+
%span.secno="A."
|
213
|
+
Test Subjects
|
214
|
+
%ul.toc
|
215
|
+
- subjects.each_with_index do |subject, ndx|
|
216
|
+
%li.tocline
|
217
|
+
%span.secno="A.#{ndx+1}"
|
218
|
+
%a.tocxref{href: "#" + subject_refs[subject['@id']]}= subject['name']
|
219
|
+
%li.tocline
|
220
|
+
%a.tocxref{href: "#individual-test-results"}
|
221
|
+
%span.secno="B."
|
222
|
+
Individual Test Results
|
223
|
+
%li.tocline
|
224
|
+
%a.tocxref{href: "#test-definitions"}
|
225
|
+
%span.secno="C."
|
226
|
+
Test Definitions
|
227
|
+
%li.tocline
|
228
|
+
%a.tocxref{href: "#report-generation-software"}
|
229
|
+
%span.secno="D."
|
230
|
+
Report Generation Software
|
231
|
+
%section#instructions-for-submitting-implementation-reports
|
232
|
+
:markdown
|
233
|
+
## Instructions for submitting implementation reports
|
234
|
+
|
235
|
+
Tests should be run using the test manifests defined in the
|
236
|
+
[Test Manifests](#test-manifests) Section.
|
237
|
+
|
238
|
+
The assumed base URI for the tests is `<http://example/base/>` if needed.
|
239
|
+
|
240
|
+
Reports should be submitted in Turtle format to [xxx](xxx)
|
241
|
+
and include an `earl:Assertion`
|
242
|
+
for each test, referencing the test resource from the associated manifest
|
243
|
+
and the test subject being reported upon. An example test entry is be the following:
|
244
|
+
|
245
|
+
[ a earl:Assertion;
|
246
|
+
earl:assertedBy <#{foaf[:url]}>;
|
247
|
+
earl:subject <--your-software-identifier-->;
|
248
|
+
earl:test <--uri-of-test-from-manifest>;
|
249
|
+
earl:result [
|
250
|
+
a earl:TestResult;
|
251
|
+
earl:outcome earl:passed;
|
252
|
+
dc:date "2016-12-26T10:18:04-08:00"^^xsd:dateTime];
|
253
|
+
earl:mode earl:automatic ] .
|
254
|
+
|
255
|
+
The Test Subject should be defined as a `doap:Project`, including the name,
|
256
|
+
homepage and developer(s) of the software (see [DOAP](https://github.com/edumbill/doap/wiki)). Optionally, including the
|
257
|
+
project description and programming language. An example test subject description is the following:
|
258
|
+
|
259
|
+
<> foaf:primaryTopic <--your-software-identifier--> ;
|
260
|
+
dc:issued "2016-12-26T10:18:04-08:00"^^xsd:dateTime ;
|
261
|
+
foaf:maker <#{foaf[:url]}> .
|
262
|
+
|
263
|
+
<--your-software-identifier--> a doap:Project, earl:TestSubject, earl:Software ;
|
264
|
+
doap:name "#{foaf[:name]}" ;
|
265
|
+
doap:homepage <--your-software-homepace--> ;
|
266
|
+
doap:license <--license-for-your-software--> ;
|
267
|
+
doap:shortdesc "--your-short-project-description--"@en ;
|
268
|
+
doap:description "--your-project-description--"@en ;
|
269
|
+
doap:created "2016-12-09"^^xsd:date ;
|
270
|
+
doap:programming-language "--your-implementation-language--" ;
|
271
|
+
doap:implements <--specification-uri--> ;
|
272
|
+
doap:category <--category-uris-for-specification-framework-and-implementation-language--> ;
|
273
|
+
doap:download-page <--your-project-repository--> ;
|
274
|
+
doap:mailing-list <--specification-public-mailing-list--@w3.org> ;
|
275
|
+
doap:bug-database <--your-project-repository--/issues> ;
|
276
|
+
doap:blog <--your-blog--> ;
|
277
|
+
doap:developer <#{foaf[:url]}> ;
|
278
|
+
foaf:maker <#{foaf[:url]}> ;
|
279
|
+
dc:title "--your-project-name--" ;
|
280
|
+
dc:description "--your-project-description--"@en ;
|
281
|
+
dc:date "2016-12-09"^^xsd:date ;
|
282
|
+
dc:creator <#{foaf[:url]}> ;
|
283
|
+
dc:isPartOf <--your-implementation-framework--> .
|
284
|
+
|
285
|
+
The software developer, either an organization or one or more individuals SHOULD be
|
286
|
+
referenced from `doap:developer` using [FOAF](http://xmlns.com/foaf/spec). For example:
|
287
|
+
|
288
|
+
<--your-software-identifier--> a foaf:Person, earl:Assertor;
|
289
|
+
foaf:name "#{foaf[:name]}";
|
290
|
+
foaf:title "Implementor";
|
291
|
+
foaf:homepage <#{foaf[:url]}> .
|
292
|
+
%section#test-manifests
|
175
293
|
%h2
|
294
|
+
%span.secno="2."
|
176
295
|
Test Manifests
|
177
|
-
- tests['entries'].
|
296
|
+
- tests['entries'].each_with_index do |manifest, ndx2|
|
178
297
|
- test_cases = manifest['entries']
|
179
|
-
%section{typeof: manifest['@type'].join(" "), resource: manifest['@id']}
|
180
|
-
%h2
|
298
|
+
%section{id: manifest['rdfs:comment'].gsub(' ', '-'), typeof: manifest['@type'].join(" "), resource: manifest['@id']}
|
299
|
+
%h2
|
300
|
+
%span.secno="2.#{ndx2+1}"
|
301
|
+
%span{property: "dc:title mf:name"}<
|
302
|
+
= manifest['title'] || 'Test Manifest'
|
181
303
|
- Array(manifest['description']).each do |desc|
|
182
304
|
- desc = desc['@value'] if desc.is_a?(Hash)
|
183
305
|
%p{property: "rdfs:comment", lang: 'en'}<
|
@@ -189,13 +311,14 @@
|
|
189
311
|
%th
|
190
312
|
Test
|
191
313
|
- subjects.each_with_index do |subject, index|
|
192
|
-
- subject_refs[subject['@id']] = "subj_#{index}"
|
193
314
|
-# If subject is untested for every test in this manifest, skip it
|
194
315
|
- skip_subject[subject['@id']] = manifest['entries'].all? {|t| t['assertions'][index]['result']['outcome'] == 'earl:untested'}
|
195
316
|
- unless skip_subject[subject['@id']]
|
196
317
|
%th
|
197
318
|
%a{href: '#' + subject_refs[subject['@id']]}<=subject['name']
|
198
319
|
- test_cases.each do |test|
|
320
|
+
- test['title'] ||= test['rdfs:label']
|
321
|
+
- test['title'] = Array(test['title']).first
|
199
322
|
- tid = "test_#{Digest::MD5.hexdigest(test['@id'])}"
|
200
323
|
- (test_info[tid] ||= []) << test
|
201
324
|
- test_refs[test['@id']] = tid
|
@@ -225,14 +348,16 @@
|
|
225
348
|
- pct = (r * 100.0) / manifest['entries'].length
|
226
349
|
%td{class: (pct == 100.0 ? 'passed-all' : (pct >= 95.0 ? 'passed-most' : 'passed-some'))}
|
227
350
|
= "#{'%.1f' % pct}%"
|
228
|
-
%section.appendix
|
351
|
+
%section.appendix#test-subjects
|
229
352
|
%h2
|
353
|
+
%span.secno="A."
|
230
354
|
Test Subjects
|
231
355
|
%p
|
232
356
|
This report was tested using the following test subjects:
|
233
357
|
%dl
|
234
358
|
- subjects.each_with_index do |subject, index|
|
235
359
|
%dt{id: subject_refs[subject['@id']]}
|
360
|
+
%span.secno="A.#{index+1}"
|
236
361
|
%a{href: subject['@id']}
|
237
362
|
%span{about: subject['@id'], property: "doap:name"}<= subject['name']
|
238
363
|
%dd{property: "earl:testSubjects", resource: subject['@id'], typeof: Array(subject['@type']).join(" ")}
|
@@ -249,8 +374,8 @@
|
|
249
374
|
~ CGI.escapeHTML subject['language'].to_s
|
250
375
|
- if subject['homepage']
|
251
376
|
%dt= "Home Page"
|
252
|
-
%dd
|
253
|
-
%a{href: subject['homepage']}
|
377
|
+
%dd
|
378
|
+
%a{property: "doap:homepage", href: subject['homepage']}
|
254
379
|
~ CGI.escapeHTML subject['homepage'].to_s
|
255
380
|
- if subject['developer']
|
256
381
|
%dt= "Developer"
|
@@ -282,8 +407,9 @@
|
|
282
407
|
%td{class: (pct == 100.0 ? 'passed-all' : (pct >= 85.0 ? 'passed-most' : 'passed-some'))}
|
283
408
|
= "#{passed}/#{total} (#{'%.1f' % pct}%)"
|
284
409
|
- unless tests['assertions'].empty?
|
285
|
-
%section.appendix{rel: "xhv:related earl:assertions"}
|
410
|
+
%section.appendix#individual-test-results{rel: "xhv:related earl:assertions"}
|
286
411
|
%h2
|
412
|
+
%span.secno="B."
|
287
413
|
Individual Test Results
|
288
414
|
%p
|
289
415
|
Individual test results used to construct this report are available here:
|
@@ -291,8 +417,9 @@
|
|
291
417
|
- tests['assertions'].each do |file|
|
292
418
|
%li
|
293
419
|
%a.source{href: file}<= file
|
294
|
-
%section.appendix
|
420
|
+
%section.appendix#test-definitions
|
295
421
|
%h2
|
422
|
+
%span.secno="C."
|
296
423
|
Test Definitions
|
297
424
|
%dl
|
298
425
|
- tests['entries'].each do |manifest|
|
@@ -311,8 +438,9 @@
|
|
311
438
|
- if test['testResult']
|
312
439
|
%pre{class: "example resultDoc", property: "mf:result", resource: test['testResult'], title: "#{test['title']} Result"}<
|
313
440
|
~ Kernel.open(test['testResult']) {|f| f.set_encoding(Encoding::UTF_8); CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testResult']} not loaded"
|
314
|
-
%section#
|
441
|
+
%section.appendix#report-generation-software{property: "earl:generatedBy", resource: tests['generatedBy']['@id'], typeof: tests['generatedBy']['@type'].join(' ')}
|
315
442
|
%h2
|
443
|
+
%span.secno="D."
|
316
444
|
Report Generation Software
|
317
445
|
- doap = tests['generatedBy']
|
318
446
|
- rel = doap['release']
|
data/spec/earl_report_spec.rb
CHANGED
@@ -165,7 +165,7 @@ describe EarlReport do
|
|
165
165
|
describe "#json_hash" do
|
166
166
|
let(:json) {earl.send(:json_hash)}
|
167
167
|
subject {json}
|
168
|
-
it {
|
168
|
+
it {is_expected.to be_a(Hash)}
|
169
169
|
{
|
170
170
|
"@id" => "",
|
171
171
|
"@type" => ["Software", "doap:Project"],
|
@@ -180,7 +180,7 @@ describe EarlReport do
|
|
180
180
|
end
|
181
181
|
|
182
182
|
%w(assertions generatedBy testSubjects entries).each do |key|
|
183
|
-
its(:keys) {
|
183
|
+
its(:keys) {is_expected.to include(key)}
|
184
184
|
end
|
185
185
|
|
186
186
|
context "parsing to RDF" do
|
@@ -240,29 +240,31 @@ describe EarlReport do
|
|
240
240
|
|
241
241
|
context "prefixes" do
|
242
242
|
%w(dc doap earl foaf mf rdf rdfs xsd).each do |pfx|
|
243
|
-
specify {
|
243
|
+
specify {is_expected.to match(/@prefix #{pfx}: </)}
|
244
244
|
end
|
245
245
|
end
|
246
246
|
|
247
247
|
context "earl:Software" do
|
248
|
-
specify {
|
249
|
-
specify {
|
250
|
-
specify {
|
248
|
+
specify {is_expected.to match(%r{<> a [^;]*earl:Software[^;]*;$}m)}
|
249
|
+
specify {is_expected.to match(%r{<> a [^;]*doap:Project[^;]*;$}m)}
|
250
|
+
specify {is_expected.to match(/ doap:name "#{json_hash['name']}"\s*[;\.]$/)}
|
251
251
|
end
|
252
252
|
|
253
253
|
context "Subject Definitions" do
|
254
|
-
specify {
|
255
|
-
specify {
|
256
|
-
specify {
|
254
|
+
specify {is_expected.to match(%r{<#{ts['@id']}> a [^;]*doap:Project[^;]*;$}m)}
|
255
|
+
specify {is_expected.to match(%r{<#{ts['@id']}> a [^;]*earl:TestSubject[^;]*;$}m)}
|
256
|
+
specify {is_expected.to match(%r{<#{ts['@id']}> a [^;]*earl:Software[^;]*;$}m)}
|
257
257
|
end
|
258
258
|
|
259
259
|
context "Manifest Definitions" do
|
260
|
-
specify {
|
261
|
-
|
260
|
+
specify {
|
261
|
+
json_hash
|
262
|
+
is_expected.to match(%r{<#{tm['@id']}> a [^;]*mf:Manifest[^;]*;$}m)}
|
263
|
+
specify {is_expected.to match(%r{<#{tm['@id']}> a [^;]*earl:Report[^;]*;$}m)}
|
262
264
|
end
|
263
265
|
|
264
266
|
context "Assertion" do
|
265
|
-
specify {
|
267
|
+
specify {is_expected.to match(/\sa earl:Assertion;$/)}
|
266
268
|
end
|
267
269
|
|
268
270
|
context "parsing to RDF" do
|
@@ -1,84 +1,15 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
|
-
<html
|
2
|
+
<html>
|
3
3
|
<head>
|
4
4
|
<meta content='text/html;charset=utf-8' http-equiv='Content-Type' />
|
5
5
|
<link href='earl.ttl' rel='alternate' />
|
6
6
|
<link href='earl.jsonld' rel='alternate' />
|
7
|
+
<link href='https://www.w3.org/StyleSheets/TR/base' rel='stylesheet' />
|
7
8
|
<link href='/Users/gregg/Projects/earl-report/spec/test-files/report-complete.ttl' rel='related' />
|
8
9
|
<title>
|
9
10
|
Turtle Test Results
|
11
|
+
Implementation Report
|
10
12
|
</title>
|
11
|
-
<script class='remove' src='http://www.w3.org/Tools/respec/respec-w3c-common' type='text/javascript'></script>
|
12
|
-
<script type='text/javascript'>
|
13
|
-
//<![CDATA[
|
14
|
-
var respecConfig = {
|
15
|
-
// extend the bibliography entries
|
16
|
-
localBiblio: {
|
17
|
-
TURTLE: "Eric Prud'hommeaux, Gavin Carothers. <cite><a href=\"http://www.w3.org/TR/2011/WD-turtle-20110809/\">Turtle: Terse RDF Triple Language.</a></cite> 09 August 2011. W3C Working Draft. URL: <a href=\"http://www.w3.org/TR/2011/WD-turtle-20110809/\">http://www.w3.org/TR/2011/WD-turtle-20110809/</a>",
|
18
|
-
DOAP: "Ed Dumbill. <cite><a href=\"https://github.com/edumbill/doap/wiki\">Turtle: Terse RDF Triple Language.</a></cite> Community Specification. URL: <a href=\"https://github.com/edumbill/doap/wiki\">https://github.com/edumbill/doap/wiki</a>",
|
19
|
-
},
|
20
|
-
|
21
|
-
// specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
|
22
|
-
specStatus: "unofficial",
|
23
|
-
copyrightStart: "2010",
|
24
|
-
doRDFa: "1.1",
|
25
|
-
|
26
|
-
// the specification's short name, as in http://www.w3.org/TR/short-name/
|
27
|
-
shortName: "turtle-earl",
|
28
|
-
subtitle: "Turtle Implementation Conformance Report",
|
29
|
-
// if you wish the publication date to be other than today, set this
|
30
|
-
publishDate: "2016/06/30",
|
31
|
-
|
32
|
-
// if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
|
33
|
-
// and its maturity status
|
34
|
-
//previousPublishDate: "2011-10-23",
|
35
|
-
//previousMaturity: "ED",
|
36
|
-
//previousDiffURI: "http://json-ld.org/spec/ED/json-ld-syntax/20111023/index.html",
|
37
|
-
//diffTool: "http://www.aptest.com/standards/htmldiff/htmldiff.pl",
|
38
|
-
|
39
|
-
// if there a publicly available Editor's Draft, this is the link
|
40
|
-
//edDraftURI: "",
|
41
|
-
|
42
|
-
// if this is a LCWD, uncomment and set the end of its review period
|
43
|
-
// lcEnd: "2009-08-05",
|
44
|
-
|
45
|
-
// editors, add as many as you like
|
46
|
-
// only "name" is required
|
47
|
-
editors: [
|
48
|
-
{ name: "Gregg Kellogg", url: "http://greggkellogg.net/",
|
49
|
-
company: "Kellogg Associates" },
|
50
|
-
{ name: "Andy Seaborne",
|
51
|
-
company: "The Apache Software Foundation"}
|
52
|
-
],
|
53
|
-
|
54
|
-
// authors, add as many as you like.
|
55
|
-
// This is optional, uncomment if you have authors as well as editors.
|
56
|
-
// only "name" is required. Same format as editors.
|
57
|
-
//authors: [
|
58
|
-
//RDF Working Group],
|
59
|
-
|
60
|
-
// name of the WG
|
61
|
-
wg: "RDF Working Group",
|
62
|
-
|
63
|
-
// URI of the public WG page
|
64
|
-
wgURI: "http://www.w3.org/2011/rdf-wg/",
|
65
|
-
|
66
|
-
// name (with the @w3c.org) of the public mailing to which comments are due
|
67
|
-
wgPublicList: "public-rdf-comments",
|
68
|
-
|
69
|
-
// URI of the patent status for this WG, for Rec-track documents
|
70
|
-
// !!!! IMPORTANT !!!!
|
71
|
-
// This is important for Rec-track documents, do not copy a patent URI from a random
|
72
|
-
// document unless you know what you're doing. If in doubt ask your friendly neighbourhood
|
73
|
-
// Team Contact.
|
74
|
-
wgPatentURI: "http://www.w3.org/2004/01/pp-impl/46168/status",
|
75
|
-
alternateFormats: [
|
76
|
-
{uri: "earl.ttl", label: "Turtle"},
|
77
|
-
{uri: "earl.jsonld", label: "JSON-LD"}
|
78
|
-
],
|
79
|
-
};
|
80
|
-
//]]>
|
81
|
-
</script>
|
82
13
|
<style type='text/css'>
|
83
14
|
/*<![CDATA[*/
|
84
15
|
span[property='dc:description rdfs:comment'] { display: none; }
|
@@ -112,11 +43,70 @@
|
|
112
43
|
td.passed-all {color: green;}
|
113
44
|
td.passed-most {color: darkorange;}
|
114
45
|
td.passed-some {color: red;}
|
46
|
+
em.rfc2119 {
|
47
|
+
text-transform: lowercase;
|
48
|
+
font-variant: small-caps;
|
49
|
+
font-style: normal;
|
50
|
+
color: #900;
|
51
|
+
}
|
52
|
+
a.testlink {
|
53
|
+
color: inherit;
|
54
|
+
text-decoration: none;
|
55
|
+
}
|
56
|
+
a.testlink:hover {
|
57
|
+
text-decoration: underline;
|
58
|
+
}
|
59
|
+
pre > code {
|
60
|
+
color: #C83500;
|
61
|
+
}
|
115
62
|
/*]]>*/
|
116
63
|
</style>
|
117
64
|
</head>
|
118
|
-
<body prefix='earl: http://www.w3.org/ns/earl# doap: http://usefulinc.com/ns/doap# mf: http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#' vocab='http://www.w3.org/ns/earl#'>
|
65
|
+
<body prefix='bibo: http://purl.org/ontology/bibo/ earl: http://www.w3.org/ns/earl# doap: http://usefulinc.com/ns/doap# mf: http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#' vocab='http://www.w3.org/ns/earl#'>
|
66
|
+
<div class='head' role='contentinfo'>
|
67
|
+
<p>
|
68
|
+
<a href='http://www.w3.org/'>
|
69
|
+
<img alt='W3C' height='48' src='https://www.w3.org/Icons/w3c_home' width='72' />
|
70
|
+
</a>
|
71
|
+
</p>
|
72
|
+
<h1 class='title p-name' id='title' property='dc:title'>Turtle Test Results</h1>
|
73
|
+
<h2 id='w3c-document-28-october-2015'>
|
74
|
+
<abbr title='World Wide Web Consortium'>W3C</abbr>
|
75
|
+
Document
|
76
|
+
<time class='dt-published' datetime='2016-12-28' property='dc:issued'>
|
77
|
+
28 December 2016
|
78
|
+
</time>
|
79
|
+
</h2>
|
80
|
+
<dl>
|
81
|
+
<dt>Editor:</dt><dd class='p-author h-card vcard' inlist='inlist' property='bibo:editor'><span property='rdf:first' typeof='foaf:Person'><meta content='Gregg Kellogg' property='foaf:name' /><a class='url fn u-url p-name' href='http://greggkellogg.net/' property='foaf:homepage'>Gregg Kellogg</a></span></dd></dl>
|
82
|
+
<p>
|
83
|
+
This document is also available in these non-normative formats:
|
84
|
+
<a href='earl.ttl' re='alternate'></a>
|
85
|
+
and
|
86
|
+
<a href='earl.jsonld' re='alternate'></a>
|
87
|
+
.
|
88
|
+
</p>
|
89
|
+
<p class='copyright'>
|
90
|
+
<a href='http://www.w3.org/Consortium/Legal/ipr-notice#Copyright'>
|
91
|
+
Copyright
|
92
|
+
</a>
|
93
|
+
© 2010-2015
|
94
|
+
<a href='http://www.w3.org/'>
|
95
|
+
<sup>®</sup>
|
96
|
+
</a>
|
97
|
+
(<a href='http://www.csail.mit.edu/'><abbr title='Massachusetts Institute of Technology'>MIT</abbr></a>,<a href='http://www.ercim.eu/'><abbr title='European Research Consortium for Informatics and Mathematics'>ERCIM</abbr></a>,<a href='http://www.keio.ac.jp/'>Keio</a>,<a href='http://ev.buaa.edu.cn/'>Beihang</a>).
|
98
|
+
<abbr title='World Wide Web Consortium'>W3C</abbr>
|
99
|
+
<a href='http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer'>liability</a>
|
100
|
+
,
|
101
|
+
<a href='http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks'>trademark</a>
|
102
|
+
and
|
103
|
+
<a href='http://www.w3.org/Consortium/Legal/copyright-documents' rel='license'>document use</a>
|
104
|
+
rules apply.
|
105
|
+
</p>
|
106
|
+
<hr />
|
107
|
+
</div>
|
119
108
|
<section about='' id='abstract' typeof='Software doap:Project'>
|
109
|
+
<h2>Abstract</h2>
|
120
110
|
<p>
|
121
111
|
This document report test subject conformance for and related specifications for
|
122
112
|
<span property='doap:name'>Turtle Test Results</span>
|
@@ -134,13 +124,117 @@
|
|
134
124
|
</a>
|
135
125
|
</p>
|
136
126
|
</section>
|
137
|
-
<section id='sodt'
|
138
|
-
|
127
|
+
<section id='sodt'>
|
128
|
+
<h2 id='h-sotd' resource='#h-sotd'>
|
129
|
+
<span property='xhv:role' resource='xhv:heading'>
|
130
|
+
Status of This Document
|
131
|
+
</span>
|
132
|
+
</h2>
|
133
|
+
<p>
|
134
|
+
This document is merely a<abbr title='World Wide Web Consortium'>W3C</abbr>-internal document.
|
135
|
+
It has no official standing of any kind and does not represent consensus of the
|
136
|
+
<abbr title='World Wide Web Consortium'>W3C</abbr>
|
137
|
+
Membership.
|
138
|
+
</p>
|
139
|
+
<p>
|
140
|
+
This report describes the state of implementation conformance at the time of publication.
|
141
|
+
</p>
|
142
|
+
</section>
|
143
|
+
<section id='toc'>
|
144
|
+
<h2 class='introductory' id='h-toc' resource='#h-toc'>
|
145
|
+
<span property='xhv:role' resource='xhv:heading'>
|
146
|
+
Table of Contents
|
147
|
+
</span>
|
148
|
+
</h2>
|
149
|
+
<ul class='toc' id='respecContents' role='directory'>
|
150
|
+
<li class='tocline'>
|
151
|
+
<a class='tocxref' href='#instructions-for-submitting-implementation-reports'>
|
152
|
+
<span class='secno'>1.</span>
|
153
|
+
Instructions for submitting implementation reports
|
154
|
+
</a>
|
155
|
+
</li>
|
156
|
+
<li class='tocline'>
|
157
|
+
<a class='tocxref' href='#test-manifests'>
|
158
|
+
<span class='secno'>2.</span>
|
159
|
+
Test Manifests
|
160
|
+
</a>
|
161
|
+
<ul class='toc'>
|
162
|
+
<li class='tocline'>
|
163
|
+
<span class='secno'>2.1</span>
|
164
|
+
<a class='tocxref' href='#Description-for-Example-Test-Cases'>
|
165
|
+
Description for Example Test Cases
|
166
|
+
</a>
|
167
|
+
</li>
|
168
|
+
</ul>
|
169
|
+
</li>
|
170
|
+
<li class='tocline'>
|
171
|
+
<a class='tocxref' href='#test-subjects'>
|
172
|
+
<span class='secno'>A.</span>
|
173
|
+
Test Subjects
|
174
|
+
</a>
|
175
|
+
<ul class='toc'>
|
176
|
+
<li class='tocline'>
|
177
|
+
<span class='secno'>A.1</span>
|
178
|
+
<a class='tocxref' href='#subj_0'>RDF::Turtle</a>
|
179
|
+
</li>
|
180
|
+
</ul>
|
181
|
+
</li>
|
182
|
+
<li class='tocline'>
|
183
|
+
<a class='tocxref' href='#individual-test-results'>
|
184
|
+
<span class='secno'>B.</span>
|
185
|
+
Individual Test Results
|
186
|
+
</a>
|
187
|
+
</li>
|
188
|
+
<li class='tocline'>
|
189
|
+
<a class='tocxref' href='#test-definitions'>
|
190
|
+
<span class='secno'>C.</span>
|
191
|
+
Test Definitions
|
192
|
+
</a>
|
193
|
+
</li>
|
194
|
+
<li class='tocline'>
|
195
|
+
<a class='tocxref' href='#report-generation-software'>
|
196
|
+
<span class='secno'>D.</span>
|
197
|
+
Report Generation Software
|
198
|
+
</a>
|
199
|
+
</li>
|
200
|
+
</ul>
|
201
|
+
</section>
|
202
|
+
<section id='instructions-for-submitting-implementation-reports'>
|
203
|
+
<h2>Instructions for submitting implementation reports</h2>
|
204
|
+
|
205
|
+
<p>Tests should be run using the test manifests defined in the
|
206
|
+
<a href="#test-manifests">Test Manifests</a> Section.</p>
|
207
|
+
|
208
|
+
<p>The assumed base URI for the tests is <code><http://example/base/></code> if needed.</p>
|
209
|
+
|
210
|
+
<p>Reports should be submitted in Turtle format to <a href="xxx">xxx</a>
|
211
|
+
and include an <code>earl:Assertion</code>
|
212
|
+
for each test, referencing the test resource from the associated manifest
|
213
|
+
and the test subject being reported upon. An example test entry is be the following:</p>
|
214
|
+
|
215
|
+
<pre><code> [ a earl:Assertion;
 earl:assertedBy <http://greggkellogg.net/foaf#me>;
 earl:subject <--your-software-identifier-->;
 earl:test <--uri-of-test-from-manifest>;
 earl:result [
 a earl:TestResult;
 earl:outcome earl:passed;
 dc:date "2016-12-26T10:18:04-08:00"^^xsd:dateTime];
 earl:mode earl:automatic ] .
</code></pre>
|
216
|
+
|
217
|
+
<p>The Test Subject should be defined as a <code>doap:Project</code>, including the name,
|
218
|
+
homepage and developer(s) of the software (see <a href="https://github.com/edumbill/doap/wiki">DOAP</a>). Optionally, including the
|
219
|
+
project description and programming language. An example test subject description is the following:</p>
|
220
|
+
|
221
|
+
<pre><code> <> foaf:primaryTopic <--your-software-identifier--> ;
 dc:issued "2016-12-26T10:18:04-08:00"^^xsd:dateTime ;
 foaf:maker <http://greggkellogg.net/foaf#me> .

 <--your-software-identifier--> a doap:Project, earl:TestSubject, earl:Software ;
 doap:name "Gregg Kellogg" ;
 doap:homepage <--your-software-homepace--> ;
 doap:license <--license-for-your-software--> ;
 doap:shortdesc "--your-short-project-description--"@en ;
 doap:description "--your-project-description--"@en ;
 doap:created "2016-12-09"^^xsd:date ;
 doap:programming-language "--your-implementation-language--" ;
 doap:implements <--specification-uri--> ;
 doap:category <--category-uris-for-specification-framework-and-implementation-language--> ;
 doap:download-page <--your-project-repository--> ;
 doap:mailing-list <--specification-public-mailing-list--@w3.org> ;
 doap:bug-database <--your-project-repository--/issues> ;
 doap:blog <--your-blog--> ;
 doap:developer <http://greggkellogg.net/foaf#me> ;
 foaf:maker <http://greggkellogg.net/foaf#me> ;
 dc:title "--your-project-name--" ;
 dc:description "--your-project-description--"@en ;
 dc:date "2016-12-09"^^xsd:date ;
 dc:creator <http://greggkellogg.net/foaf#me> ;
 dc:isPartOf <--your-implementation-framework--> .
</code></pre>
|
222
|
+
|
223
|
+
<p>The software developer, either an organization or one or more individuals SHOULD be
|
224
|
+
referenced from <code>doap:developer</code> using <a href="http://xmlns.com/foaf/spec">FOAF</a>. For example:</p>
|
225
|
+
|
226
|
+
<pre><code> <--your-software-identifier--> a foaf:Person, earl:Assertor;
 foaf:name "Gregg Kellogg";
 foaf:title "Implementor";
 foaf:homepage <http://greggkellogg.net/foaf#me> .
</code></pre>
|
227
|
+
</section>
|
228
|
+
<section id='test-manifests'>
|
139
229
|
<h2>
|
230
|
+
<span class='secno'>2.</span>
|
140
231
|
Test Manifests
|
141
232
|
</h2>
|
142
|
-
<section resource='http://example/manifest.ttl' typeof='mf:Manifest Report'>
|
143
|
-
<h2
|
233
|
+
<section id='Description-for-Example-Test-Cases' resource='http://example/manifest.ttl' typeof='mf:Manifest Report'>
|
234
|
+
<h2>
|
235
|
+
<span class='secno'>2.1</span>
|
236
|
+
<span property='dc:title mf:name'>Example Test Cases</span>
|
237
|
+
</h2>
|
144
238
|
<table class='report'>
|
145
239
|
<tr>
|
146
240
|
<th>
|
@@ -150,7 +244,7 @@
|
|
150
244
|
<a href='#subj_0'>RDF::Turtle</a>
|
151
245
|
</th>
|
152
246
|
</tr>
|
153
|
-
<tr inlist='inlist' rel='mf:entries' resource='http://example/manifest.ttl#testeval00' typeof='TestCriterion
|
247
|
+
<tr inlist='inlist' rel='mf:entries' resource='http://example/manifest.ttl#testeval00' typeof='TestCase TestCriterion http://www.w3.org/ns/rdftest#TestTurtleEval'>
|
154
248
|
<td>
|
155
249
|
<a href='#test_1fdd82ac4caf30510cabfdb0a5987ddd'>subm-test-00</a>
|
156
250
|
</td>
|
@@ -166,7 +260,7 @@
|
|
166
260
|
</span>
|
167
261
|
</td>
|
168
262
|
</tr>
|
169
|
-
<tr inlist='inlist' rel='mf:entries' resource='_:b0' typeof='TestCriterion
|
263
|
+
<tr inlist='inlist' rel='mf:entries' resource='_:b0' typeof='TestCase TestCriterion http://www.w3.org/ns/rdftest#TestTurtleEval'>
|
170
264
|
<td>
|
171
265
|
<a href='#test_9616fad74c7bf0cfba5d70f087ed0a96'>subm-test-01</a>
|
172
266
|
</td>
|
@@ -191,8 +285,9 @@
|
|
191
285
|
</table>
|
192
286
|
</section>
|
193
287
|
</section>
|
194
|
-
<section class='appendix'>
|
288
|
+
<section class='appendix' id='test-subjects'>
|
195
289
|
<h2>
|
290
|
+
<span class='secno'>A.</span>
|
196
291
|
Test Subjects
|
197
292
|
</h2>
|
198
293
|
<p>
|
@@ -200,6 +295,7 @@
|
|
200
295
|
</p>
|
201
296
|
<dl>
|
202
297
|
<dt id='subj_0'>
|
298
|
+
<span class='secno'>A.1</span>
|
203
299
|
<a href='http://rubygems.org/gems/rdf-turtle'>
|
204
300
|
<span about='http://rubygems.org/gems/rdf-turtle' property='doap:name'>RDF::Turtle</span>
|
205
301
|
</a>
|
@@ -211,8 +307,8 @@
|
|
211
307
|
<dt>Programming Language</dt>
|
212
308
|
<dd property='doap:programming-language'>Ruby</dd>
|
213
309
|
<dt>Home Page</dt>
|
214
|
-
<dd
|
215
|
-
<a href='http://ruby-rdf.github.com/rdf-turtle'>
|
310
|
+
<dd>
|
311
|
+
<a href='http://ruby-rdf.github.com/rdf-turtle' property='doap:homepage'>
|
216
312
|
http://ruby-rdf.github.com/rdf-turtle
|
217
313
|
</a>
|
218
314
|
</dd>
|
@@ -248,8 +344,9 @@
|
|
248
344
|
</dd>
|
249
345
|
</dl>
|
250
346
|
</section>
|
251
|
-
<section class='appendix' rel='xhv:related earl:assertions'>
|
347
|
+
<section class='appendix' id='individual-test-results' rel='xhv:related earl:assertions'>
|
252
348
|
<h2>
|
349
|
+
<span class='secno'>B.</span>
|
253
350
|
Individual Test Results
|
254
351
|
</h2>
|
255
352
|
<p>
|
@@ -261,8 +358,9 @@
|
|
261
358
|
</li>
|
262
359
|
</ul>
|
263
360
|
</section>
|
264
|
-
<section class='appendix'>
|
361
|
+
<section class='appendix' id='test-definitions'>
|
265
362
|
<h2>
|
363
|
+
<span class='secno'>C.</span>
|
266
364
|
Test Definitions
|
267
365
|
</h2>
|
268
366
|
<dl>
|
@@ -288,8 +386,9 @@
|
|
288
386
|
</div>
|
289
387
|
</dl>
|
290
388
|
</section>
|
291
|
-
<section
|
389
|
+
<section class='appendix' id='report-generation-software' property='earl:generatedBy' resource='http://rubygems.org/gems/earl-report' typeof='Software doap:Project'>
|
292
390
|
<h2>
|
391
|
+
<span class='secno'>D.</span>
|
293
392
|
Report Generation Software
|
294
393
|
</h2>
|
295
394
|
<p>
|
@@ -298,10 +397,10 @@
|
|
298
397
|
<meta content='Earl Report summary generator' property='doap:shortdesc' />
|
299
398
|
<meta content='EarlReport generates HTML+RDFa rollups of multiple EARL reports' property='doap:description' />
|
300
399
|
version
|
301
|
-
<span property='doap:release' resource='https://github.com/gkellogg/earl-report/tree/0.4.
|
302
|
-
<span property='doap:revision'>0.4.
|
303
|
-
<meta content='earl-report-0.4.
|
304
|
-
<meta content='2016-
|
400
|
+
<span property='doap:release' resource='https://github.com/gkellogg/earl-report/tree/0.4.3' typeof='doap:Version'>
|
401
|
+
<span property='doap:revision'>0.4.3</span>
|
402
|
+
<meta content='earl-report-0.4.3' property='doap:name' />
|
403
|
+
<meta content='2016-12-26' datatype='xsd:date' property='doap:created' />
|
305
404
|
</span>
|
306
405
|
an
|
307
406
|
<a href='http://unlicense.org' property='doap:license'>Unlicensed</a>
|
@@ -103,8 +103,8 @@
|
|
103
103
|
},
|
104
104
|
"@id": "",
|
105
105
|
"@type": [
|
106
|
-
"
|
107
|
-
"
|
106
|
+
"Software",
|
107
|
+
"doap:Project"
|
108
108
|
],
|
109
109
|
"assertions": [
|
110
110
|
"/Users/gregg/Projects/earl-report/spec/test-files/report-complete.ttl"
|
@@ -121,18 +121,18 @@
|
|
121
121
|
{
|
122
122
|
"@id": "http://example/manifest.ttl#testeval00",
|
123
123
|
"@type": [
|
124
|
-
"TestCriterion",
|
125
124
|
"TestCase",
|
125
|
+
"TestCriterion",
|
126
126
|
"http://www.w3.org/ns/rdftest#TestTurtleEval"
|
127
127
|
],
|
128
128
|
"assertions": [
|
129
129
|
{
|
130
|
-
"@id": "_:
|
130
|
+
"@id": "_:b0",
|
131
131
|
"@type": "Assertion",
|
132
132
|
"assertedBy": "http://greggkellogg.net/foaf#me",
|
133
133
|
"mode": "earl:automatic",
|
134
134
|
"result": {
|
135
|
-
"@id": "_:
|
135
|
+
"@id": "_:b1",
|
136
136
|
"@type": "TestResult",
|
137
137
|
"outcome": "earl:passed"
|
138
138
|
},
|
@@ -148,17 +148,17 @@
|
|
148
148
|
{
|
149
149
|
"@id": "_:b2",
|
150
150
|
"@type": [
|
151
|
-
"TestCriterion",
|
152
151
|
"TestCase",
|
152
|
+
"TestCriterion",
|
153
153
|
"http://www.w3.org/ns/rdftest#TestTurtleEval"
|
154
154
|
],
|
155
155
|
"assertions": [
|
156
156
|
{
|
157
|
-
"@id": "_:
|
157
|
+
"@id": "_:b3",
|
158
158
|
"@type": "Assertion",
|
159
159
|
"assertedBy": null,
|
160
160
|
"result": {
|
161
|
-
"@id": "_:
|
161
|
+
"@id": "_:b4",
|
162
162
|
"@type": "TestResult",
|
163
163
|
"outcome": "earl:untested"
|
164
164
|
},
|
@@ -179,15 +179,15 @@
|
|
179
179
|
"generatedBy": {
|
180
180
|
"@id": "http://rubygems.org/gems/earl-report",
|
181
181
|
"@type": [
|
182
|
-
"
|
183
|
-
"
|
182
|
+
"Software",
|
183
|
+
"doap:Project"
|
184
184
|
],
|
185
185
|
"developer": [
|
186
186
|
{
|
187
187
|
"@id": "http://greggkellogg.net/foaf#me",
|
188
188
|
"@type": [
|
189
|
-
"
|
190
|
-
"
|
189
|
+
"foaf:Person",
|
190
|
+
"Assertor"
|
191
191
|
],
|
192
192
|
"foaf:homepage": "http://greggkellogg.net/",
|
193
193
|
"foaf:name": "Gregg Kellogg"
|
@@ -199,11 +199,11 @@
|
|
199
199
|
"license": "http://unlicense.org",
|
200
200
|
"name": "earl-report",
|
201
201
|
"release": {
|
202
|
-
"@id": "https://github.com/gkellogg/earl-report/tree/0.4.
|
202
|
+
"@id": "https://github.com/gkellogg/earl-report/tree/0.4.3",
|
203
203
|
"@type": "doap:Version",
|
204
|
-
"created": "2016-
|
205
|
-
"name": "earl-report-0.4.
|
206
|
-
"revision": "0.4.
|
204
|
+
"created": "2016-12-26",
|
205
|
+
"name": "earl-report-0.4.3",
|
206
|
+
"revision": "0.4.3"
|
207
207
|
},
|
208
208
|
"shortdesc": "Earl Report summary generator"
|
209
209
|
},
|
@@ -212,16 +212,16 @@
|
|
212
212
|
{
|
213
213
|
"@id": "http://rubygems.org/gems/rdf-turtle",
|
214
214
|
"@type": [
|
215
|
-
"doap:Project",
|
216
215
|
"Software",
|
216
|
+
"doap:Project",
|
217
217
|
"TestSubject"
|
218
218
|
],
|
219
219
|
"developer": [
|
220
220
|
{
|
221
221
|
"@id": "http://greggkellogg.net/foaf#me",
|
222
222
|
"@type": [
|
223
|
-
"
|
224
|
-
"
|
223
|
+
"foaf:Person",
|
224
|
+
"Assertor"
|
225
225
|
],
|
226
226
|
"foaf:homepage": "http://greggkellogg.net/",
|
227
227
|
"foaf:name": "Gregg Kellogg"
|
data/spec/test-files/results.ttl
CHANGED
@@ -21,12 +21,12 @@
|
|
21
21
|
<http://example/manifest.ttl> a mf:Manifest,
|
22
22
|
earl:Report;
|
23
23
|
rdfs:comment "Description for Example Test Cases";
|
24
|
-
mf:entries (<http://example/manifest.ttl#testeval00> _:
|
24
|
+
mf:entries (<http://example/manifest.ttl#testeval00> _:g70287090109560);
|
25
25
|
mf:name "Example Test Cases" .
|
26
26
|
|
27
27
|
<http://example/manifest.ttl#testeval00> a earl:TestCase,
|
28
|
-
|
29
|
-
|
28
|
+
earl:TestCriterion,
|
29
|
+
<http://www.w3.org/ns/rdftest#TestTurtleEval>;
|
30
30
|
rdfs:comment "Blank subject";
|
31
31
|
mf:action <http://example/test-00.ttl>;
|
32
32
|
mf:name "subm-test-00";
|
@@ -43,9 +43,9 @@
|
|
43
43
|
earl:test <http://example/manifest.ttl#testeval00>
|
44
44
|
] .
|
45
45
|
|
46
|
-
_:
|
47
|
-
|
48
|
-
|
46
|
+
_:g70287090109560 a earl:TestCase,
|
47
|
+
earl:TestCriterion,
|
48
|
+
<http://www.w3.org/ns/rdftest#TestTurtleEval>;
|
49
49
|
rdfs:comment "@prefix and qnames";
|
50
50
|
mf:action <http://example/test-01.ttl>;
|
51
51
|
mf:name "subm-test-01";
|
@@ -57,22 +57,22 @@ _:g70356570213340 a earl:TestCase,
|
|
57
57
|
earl:outcome earl:untested
|
58
58
|
];
|
59
59
|
earl:subject <http://rubygems.org/gems/rdf-turtle>;
|
60
|
-
earl:test _:
|
60
|
+
earl:test _:g70287090109560
|
61
61
|
] .
|
62
62
|
|
63
63
|
# Test Subjects
|
64
64
|
|
65
|
-
<http://rubygems.org/gems/rdf-turtle> a earl:
|
66
|
-
|
67
|
-
|
65
|
+
<http://rubygems.org/gems/rdf-turtle> a earl:Software,
|
66
|
+
doap:Project,
|
67
|
+
earl:TestSubject;
|
68
68
|
doap:description "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en;
|
69
69
|
doap:developer <http://greggkellogg.net/foaf#me>;
|
70
70
|
doap:homepage <http://ruby-rdf.github.com/rdf-turtle>;
|
71
71
|
doap:name "RDF::Turtle";
|
72
72
|
doap:programming-language "Ruby" .
|
73
73
|
|
74
|
-
<http://greggkellogg.net/foaf#me> a
|
75
|
-
|
74
|
+
<http://greggkellogg.net/foaf#me> a foaf:Person,
|
75
|
+
earl:Assertor;
|
76
76
|
foaf:homepage <http://greggkellogg.net/>;
|
77
77
|
foaf:name "Gregg Kellogg" .
|
78
78
|
|
@@ -86,10 +86,10 @@ _:g70356570213340 a earl:TestCase,
|
|
86
86
|
doap:license <http://unlicense.org>;
|
87
87
|
doap:name "earl-report";
|
88
88
|
doap:programming-language "Ruby";
|
89
|
-
doap:release <https://github.com/gkellogg/earl-report/tree/0.4.
|
89
|
+
doap:release <https://github.com/gkellogg/earl-report/tree/0.4.3>;
|
90
90
|
doap:shortdesc "Earl Report summary generator"@en .
|
91
91
|
|
92
|
-
<https://github.com/gkellogg/earl-report/tree/0.4.
|
93
|
-
doap:created "2016-
|
94
|
-
doap:name "earl-report-0.4.
|
95
|
-
doap:revision "0.4.
|
92
|
+
<https://github.com/gkellogg/earl-report/tree/0.4.3> a doap:Version;
|
93
|
+
doap:created "2016-12-26"^^xsd:date;
|
94
|
+
doap:name "earl-report-0.4.3";
|
95
|
+
doap:revision "0.4.3" .
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: earl-report
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: linkeddata
|
@@ -52,6 +52,26 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: json-ld
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.1'
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 2.1.1
|
65
|
+
type: :runtime
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - "~>"
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '2.1'
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 2.1.1
|
55
75
|
- !ruby/object:Gem::Dependency
|
56
76
|
name: redcarpet
|
57
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -196,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
216
|
version: '0'
|
197
217
|
requirements: []
|
198
218
|
rubyforge_project:
|
199
|
-
rubygems_version: 2.
|
219
|
+
rubygems_version: 2.6.8
|
200
220
|
signing_key:
|
201
221
|
specification_version: 4
|
202
222
|
summary: Earl Report summary generator
|
@@ -214,4 +234,3 @@ test_files:
|
|
214
234
|
- spec/test-files/results.ttl
|
215
235
|
- spec/test-files/test-00.out
|
216
236
|
- spec/test-files/test-00.ttl
|
217
|
-
has_rdoc: false
|