earl-report 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|