earl-report 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/earl-report +4 -1
- data/lib/earl_report.rb +69 -25
- data/lib/earl_report/version.rb +18 -0
- data/lib/earl_report/views/earl_report.html.haml +279 -0
- data/spec/earl_report_spec.rb +16 -11
- data/spec/test-files/results.html +46 -30
- data/spec/test-files/results.jsonld +56 -11
- data/spec/test-files/results.ttl +34 -7
- metadata +4 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/bin/earl-report
CHANGED
@@ -25,12 +25,13 @@ OPT_ARGS = [
|
|
25
25
|
]
|
26
26
|
def usage
|
27
27
|
STDERR.puts %{
|
28
|
+
earl-report version #{EarlReport::VERSION}
|
28
29
|
Generate EARL report for mutliple test results against a test manifest.
|
29
30
|
|
30
31
|
Options are initialized by reading optional run-control file '.earl' in the local directory,
|
31
32
|
if it exists.
|
32
33
|
|
33
|
-
Usage: #{$0} [options] test-
|
34
|
+
Usage: #{$0} [options] test-result ...
|
34
35
|
}.gsub(/^ /, '')
|
35
36
|
width = OPT_ARGS.map do |o|
|
36
37
|
l = o.first.length
|
@@ -90,6 +91,8 @@ if options.has_key?(:template) && options[:template].empty?
|
|
90
91
|
File.open(File.expand_path("../../lib/earl_report/views/earl_report.html.haml", __FILE__)) do |f|
|
91
92
|
options[:io].write(f.read)
|
92
93
|
end
|
94
|
+
elsif ARGV.empty?
|
95
|
+
usage
|
93
96
|
else
|
94
97
|
earl = EarlReport.new(*ARGV, options)
|
95
98
|
earl.generate(options)
|
data/lib/earl_report.rb
CHANGED
@@ -7,6 +7,8 @@ require 'haml'
|
|
7
7
|
# EARL reporting class.
|
8
8
|
# Instantiate a new class using one or more input graphs
|
9
9
|
class EarlReport
|
10
|
+
autoload :VERSION, 'earl_report/version'
|
11
|
+
|
10
12
|
attr_reader :graph
|
11
13
|
|
12
14
|
MANIFEST_QUERY = %(
|
@@ -81,22 +83,28 @@ class EarlReport
|
|
81
83
|
assertedBy: {"@type" => "@id"},
|
82
84
|
assertions: {"@type" => "@id", "@container" => "@list"},
|
83
85
|
bibRef: {"@id" => "dc:bibliographicCitation"},
|
84
|
-
|
86
|
+
created: {"@id" => "doap:created", "@type" => "xsd:date"},
|
87
|
+
description: {"@id" => "dc:description", "@language" => "en"},
|
85
88
|
developer: {"@id" => "doap:developer", "@type" => "@id", "@container" => "@set"},
|
86
|
-
doapDesc: {"@id" => "doap:description"},
|
89
|
+
doapDesc: {"@id" => "doap:description", "@language" => "en"},
|
90
|
+
generatedBy: {"@type" => "@id"},
|
87
91
|
homepage: {"@id" => "doap:homepage", "@type" => "@id"},
|
88
|
-
label: {"@id" => "rdfs:label"},
|
92
|
+
label: {"@id" => "rdfs:label", "@language" => "en"},
|
89
93
|
language: {"@id" => "doap:programming-language"},
|
94
|
+
license: {"@id" => "doap:license", "@type" => "@id"},
|
90
95
|
mode: {"@type" => "@id"},
|
91
96
|
name: {"@id" => "doap:name"},
|
92
97
|
outcome: {"@type" => "@id"},
|
98
|
+
release: {"@id" => "doap:release", "@type" => "@id"},
|
99
|
+
shortdesc: {"@id" => "doap:shortdesc", "@language" => "en"},
|
93
100
|
subject: {"@type" => "@id"},
|
94
101
|
test: {"@type" => "@id"},
|
95
102
|
testAction: {"@id" => "mf:action", "@type" => "@id"},
|
96
103
|
testResult: {"@id" => "mf:result", "@type" => "@id"},
|
97
104
|
tests: {"@type" => "@id", "@container" => "@list"},
|
98
105
|
testSubjects: {"@type" => "@id", "@container" => "@list"},
|
99
|
-
title: {"@id" => "dc:title"}
|
106
|
+
title: {"@id" => "dc:title"},
|
107
|
+
xsd: {"@id" => "http://www.w3.org/2001/XMLSchema#"}
|
100
108
|
}.freeze
|
101
109
|
|
102
110
|
# Convenience vocabularies
|
@@ -120,6 +128,7 @@ class EarlReport
|
|
120
128
|
@options = files.last.is_a?(Hash) ? files.pop.dup : {}
|
121
129
|
@options[:query] ||= MANIFEST_QUERY
|
122
130
|
raise "Test Manifest must be specified with :manifest option" unless @options[:manifest] || @options[:json]
|
131
|
+
raise "Require at least one input file" if files.empty?
|
123
132
|
@files = files
|
124
133
|
@prefixes = {}
|
125
134
|
if @options[:json]
|
@@ -234,11 +243,34 @@ class EarlReport
|
|
234
243
|
# Customized JSON-LD output
|
235
244
|
{
|
236
245
|
"@context" => TEST_CONTEXT,
|
237
|
-
"@id"
|
238
|
-
"@type"
|
246
|
+
"@id" => "",
|
247
|
+
"@type" => "earl:Report",
|
248
|
+
'title' => @options[:name],
|
249
|
+
'bibRef' => @options[:bibRef],
|
250
|
+
'generatedBy' => {
|
251
|
+
"@id" => "http://rubygems.org/gems/earl-report",
|
252
|
+
"@type" => "doap:Project",
|
253
|
+
"name" => "earl-report",
|
254
|
+
"shortdesc" => "Earl Report summary generator",
|
255
|
+
"doapDesc" => "EarlReport generates HTML+RDFa rollups of multiple EARL reports",
|
256
|
+
"homepage" => "https://github.com/gkellogg/earl-report",
|
257
|
+
"language" => "Ruby",
|
258
|
+
"license" => "http://unlicense.org",
|
259
|
+
"release" => {
|
260
|
+
"@id" => "https://github.com/gkellogg/earl-report/tree/#{VERSION}",
|
261
|
+
"@type" => "doap:Version",
|
262
|
+
"name" => "earl-report-#{VERSION}",
|
263
|
+
"created" => File.mtime(File.expand_path('../../VERSION', __FILE__)).strftime('%Y-%m-%d'),
|
264
|
+
"revision" => VERSION.to_s
|
265
|
+
},
|
266
|
+
"developer" => {
|
267
|
+
"@type" => "foaf:Person",
|
268
|
+
"@id" => "http://greggkellogg.net/foaf#me",
|
269
|
+
"foaf:name" => "Gregg Kellogg",
|
270
|
+
"foaf:homepage" => "http://greggkellogg.net/"
|
271
|
+
}
|
272
|
+
},
|
239
273
|
"assertions" => @files,
|
240
|
-
'name' => @options[:name],
|
241
|
-
'bibRef' => @options[:bibRef],
|
242
274
|
'testSubjects' => json_test_subject_info,
|
243
275
|
'tests' => json_result_info
|
244
276
|
}
|
@@ -375,21 +407,33 @@ class EarlReport
|
|
375
407
|
io.puts
|
376
408
|
|
377
409
|
# Write earl:Software for the report
|
378
|
-
io.puts %{
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
410
|
+
io.puts %{
|
411
|
+
#{as_resource(json_hash['@id'])} a #{[json_hash['@type']].flatten.join(', ')};
|
412
|
+
dc:title "#{json_hash['title']}";
|
413
|
+
dc:bibliographicCitation "#{json_hash['bibRef']}";
|
414
|
+
earl:generatedBy #{as_resource json_hash['generatedBy']['@id']};
|
415
|
+
earl:assertions
|
416
|
+
#{json_hash['assertions'].map {|a| as_resource(a)}.join(",\n ")};
|
417
|
+
earl:testSubjects (
|
418
|
+
#{json_hash['testSubjects'].map {|a| as_resource(a['@id'])}.join("\n ")});
|
419
|
+
earl:tests (
|
420
|
+
#{json_hash['tests'].map {|a| as_resource(a['@id'])}.join("\n ")}) .
|
421
|
+
|
422
|
+
}.gsub(/^ /, '')
|
423
|
+
|
424
|
+
# Write generating software information
|
425
|
+
io.puts %{
|
426
|
+
<http://rubygems.org/gems/earl-report> a earl:Software, doap:Project;
|
427
|
+
doap:name "earl-report";
|
428
|
+
doap:shortdesc "Earl Report summary generator"@en;
|
429
|
+
doap:description "EarlReport generates HTML+RDFa rollups of multiple EARL reports"@en;
|
430
|
+
doap:homepage <https://github.com/gkellogg/earl-report>;
|
431
|
+
doap:programming-language "Ruby";
|
432
|
+
doap:license <http://unlicense.org>;
|
433
|
+
doap:release <https://github.com/gkellogg/earl-report/tree/#{VERSION}>;
|
434
|
+
doap:developer <http://greggkellogg.net/foaf#me> .
|
435
|
+
|
436
|
+
}.gsub(/^ /, '')
|
393
437
|
|
394
438
|
# Write out each earl:TestSubject
|
395
439
|
io.puts %(#\n# Subject Definitions\n#)
|
@@ -411,7 +455,7 @@ class EarlReport
|
|
411
455
|
def test_subject_turtle(desc)
|
412
456
|
res = %(<#{desc['@id']}> a #{desc['@type'].join(', ')};\n)
|
413
457
|
res += %( doap:name "#{desc['name']}";\n)
|
414
|
-
res += %( doap:description """#{desc['doapDesc']}""";\n) if desc['doapDesc']
|
458
|
+
res += %( doap:description """#{desc['doapDesc']}"""@en;\n) if desc['doapDesc']
|
415
459
|
res += %( doap:programming-language "#{desc['language']}";\n) if desc['language']
|
416
460
|
res += %( .\n\n)
|
417
461
|
|
@@ -438,7 +482,7 @@ class EarlReport
|
|
438
482
|
def tc_turtle(desc)
|
439
483
|
res = %{#{as_resource desc['@id']} a #{[desc['@type']].flatten.join(', ')};\n}
|
440
484
|
res += %{ dc:title "#{desc['title']}";\n}
|
441
|
-
res += %{ dc:description """#{desc['description']}""";\n} if desc.has_key?('description')
|
485
|
+
res += %{ dc:description """#{desc['description']}"""@en;\n} if desc.has_key?('description')
|
442
486
|
res += %{ mf:result #{as_resource desc['testResult']};\n} if desc.has_key?('testResult')
|
443
487
|
res += %{ mf:action #{as_resource desc['testAction']};\n}
|
444
488
|
res += %{ earl:assertions (\n}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module EarlReport::VERSION
|
2
|
+
VERSION_FILE = File.join(File.expand_path(File.dirname(__FILE__)), "..", "..", "VERSION")
|
3
|
+
MAJOR, MINOR, TINY, EXTRA = File.read(VERSION_FILE).chop.split(".")
|
4
|
+
|
5
|
+
STRING = [MAJOR, MINOR, TINY, EXTRA].compact.join('.')
|
6
|
+
|
7
|
+
##
|
8
|
+
# @return [String]
|
9
|
+
def self.to_s() STRING end
|
10
|
+
|
11
|
+
##
|
12
|
+
# @return [String]
|
13
|
+
def self.to_str() STRING end
|
14
|
+
|
15
|
+
##
|
16
|
+
# @return [Array(Integer, Integer, Integer)]
|
17
|
+
def self.to_a() STRING.split(".") end
|
18
|
+
end
|
@@ -0,0 +1,279 @@
|
|
1
|
+
-# This template is used for generating a rollup EARL report. It expects to be
|
2
|
+
-# called with a single _tests_ local with the following structure
|
3
|
+
-#
|
4
|
+
-# {
|
5
|
+
-# "@context": {...},
|
6
|
+
-# "@id": "",
|
7
|
+
-# "@type": "earl:Software",
|
8
|
+
-# "title": "...",
|
9
|
+
-# "bibRef": "[[...]]",
|
10
|
+
-# "assertions": ["./rdf.rb-earl.ttl"],
|
11
|
+
-# "testSubjects": [
|
12
|
+
-# {
|
13
|
+
-# "@id": "http://rubygems.org/gems/rdf-turtle",
|
14
|
+
-# "@type": "earl:TestSubject",
|
15
|
+
-# "name": "RDF::Turtle"
|
16
|
+
-# },
|
17
|
+
-# ...
|
18
|
+
-# ],
|
19
|
+
-# "tests": [{
|
20
|
+
-# "@id": "http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/manifest.ttl#turtle-syntax-file-01",
|
21
|
+
-# "@type": ["earl:TestCriterion", "earl:TestCase"],
|
22
|
+
-# "title": "subm-test-00",
|
23
|
+
-# "description": "Blank subject",
|
24
|
+
-# "testAction": "http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/turtle-syntax-file-01.ttl",
|
25
|
+
-# "testResult": "http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/turtle-syntax-file-01.out"
|
26
|
+
-# "mode": "earl:automatic",
|
27
|
+
-# "assertions": [
|
28
|
+
-# {
|
29
|
+
-# "@type": "earl:Assertion",
|
30
|
+
-# "assertedBy": "http://greggkellogg.net/foaf#me",
|
31
|
+
-# "test": "http://svn.apache.org/repos/asf/jena/Experimental/riot-reader/testing/RIOT/Lang/TurtleSubm/manifest.ttl#testeval00",
|
32
|
+
-# "subject": "http://rubygems.org/gems/rdf-turtle",
|
33
|
+
-# "result": {
|
34
|
+
-# "@type": "earl:TestResult",
|
35
|
+
-# "outcome": "earl:passed"
|
36
|
+
-# }
|
37
|
+
-# }
|
38
|
+
-# ]
|
39
|
+
-# }]
|
40
|
+
-# }
|
41
|
+
|
42
|
+
!!! 5
|
43
|
+
%html{: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#"}
|
44
|
+
- subjects = tests['testSubjects']
|
45
|
+
- test_cases = tests['tests']
|
46
|
+
%head
|
47
|
+
%meta{"http-equiv" => "Content-Type", :content => "text/html;charset=utf-8"}
|
48
|
+
%title
|
49
|
+
= tests['name']
|
50
|
+
%script.remove{:type => "text/javascript", :src => "http://www.w3.org/Tools/respec/respec-w3c-common"}
|
51
|
+
:javascript
|
52
|
+
var respecConfig = {
|
53
|
+
// extend the bibliography entries
|
54
|
+
localBiblio: {
|
55
|
+
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>",
|
56
|
+
},
|
57
|
+
|
58
|
+
// specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
|
59
|
+
specStatus: "unofficial",
|
60
|
+
copyrightStart: "2010",
|
61
|
+
doRDFa: "1.1",
|
62
|
+
|
63
|
+
// the specification's short name, as in http://www.w3.org/TR/short-name/
|
64
|
+
shortName: "turtle-earl",
|
65
|
+
subtitle: "Turtle Implementation Conformance Report",
|
66
|
+
// if you wish the publication date to be other than today, set this
|
67
|
+
publishDate: "#{Time.now.strftime("%Y/%m/%d")}",
|
68
|
+
|
69
|
+
// if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
|
70
|
+
// and its maturity status
|
71
|
+
//previousPublishDate: "2011-10-23",
|
72
|
+
//previousMaturity: "ED",
|
73
|
+
//previousDiffURI: "http://json-ld.org/spec/ED/json-ld-syntax/20111023/index.html",
|
74
|
+
//diffTool: "http://www.aptest.com/standards/htmldiff/htmldiff.pl",
|
75
|
+
|
76
|
+
// if there a publicly available Editor's Draft, this is the link
|
77
|
+
//edDraftURI: "",
|
78
|
+
|
79
|
+
// if this is a LCWD, uncomment and set the end of its review period
|
80
|
+
// lcEnd: "2009-08-05",
|
81
|
+
|
82
|
+
// if you want to have extra CSS, append them to this list
|
83
|
+
// it is recommended that the respec.css stylesheet be kept
|
84
|
+
extraCSS: [
|
85
|
+
"http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css"
|
86
|
+
],
|
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
|
+
};
|
123
|
+
:css
|
124
|
+
span[property='dc:description'] { display: none; }
|
125
|
+
td.PASS { color: green; }
|
126
|
+
td.FAIL { color: red; }
|
127
|
+
table.report {
|
128
|
+
border-width: 1px;
|
129
|
+
border-spacing: 2px;
|
130
|
+
border-style: outset;
|
131
|
+
border-color: gray;
|
132
|
+
border-collapse: separate;
|
133
|
+
background-color: white;
|
134
|
+
}
|
135
|
+
table.report th {
|
136
|
+
border-width: 1px;
|
137
|
+
padding: 1px;
|
138
|
+
border-style: inset;
|
139
|
+
border-color: gray;
|
140
|
+
background-color: white;
|
141
|
+
-moz-border-radius: ;
|
142
|
+
}
|
143
|
+
table.report td {
|
144
|
+
border-width: 1px;
|
145
|
+
padding: 1px;
|
146
|
+
border-style: inset;
|
147
|
+
border-color: gray;
|
148
|
+
background-color: white;
|
149
|
+
-moz-border-radius: ;
|
150
|
+
}
|
151
|
+
%body
|
152
|
+
%section#abstract{:about => tests['@id'], :typeof => [tests['@type']].flatten.join(' ')}
|
153
|
+
%p
|
154
|
+
This document report processor conformance for and related specifications for
|
155
|
+
%span{:property => "dc:title"}<=tests['title']
|
156
|
+
%span{:property => "dc:bibliographicCitation"}<
|
157
|
+
= tests['bibRef']
|
158
|
+
according to the requirements of the Evaluation and Report Language (EARL) 1.0 Schema [[EARL10-SCHEMA]].
|
159
|
+
%section#sodt
|
160
|
+
%section
|
161
|
+
- test_refs = {}
|
162
|
+
- subject_refs = {}
|
163
|
+
%h2
|
164
|
+
Results
|
165
|
+
%table.report
|
166
|
+
%tr
|
167
|
+
%th
|
168
|
+
Test
|
169
|
+
- subjects.each_with_index do |subject, i|
|
170
|
+
- subject_refs[subject['@id']] = "subj_#{i}"
|
171
|
+
%th
|
172
|
+
%a{:href => '#' + subject_refs[subject['@id']]}<=subject['name']
|
173
|
+
- test_cases.each do |test|
|
174
|
+
- test_refs[test['@id']] = 'test_' + (test['@id'][0,2] == '_:' ? test['@id'][2..-1] : test['@id'].split('#').last)
|
175
|
+
%tr{:resource => test['@id']}
|
176
|
+
%td
|
177
|
+
%a{:href => '#' + test_refs[test['@id']]}<= test['title']
|
178
|
+
- test['assertions'].each do |assertion|
|
179
|
+
- pass_fail = assertion['result']['outcome'].split(':').last.upcase.sub(/ED$/, '')
|
180
|
+
%td{:class => pass_fail, :property => "earl:assertions", :typeof => assertion['@type'], :inlist => true}
|
181
|
+
- if assertion['assertedBy']
|
182
|
+
%link{:property => "earl:assertedBy", :href => assertion['assertedBy']}
|
183
|
+
%link{:property => "earl:test", :href => assertion['test']}
|
184
|
+
%link{:property => "earl:subject", :href => assertion['subject']}
|
185
|
+
- if assertion['mode']
|
186
|
+
%link{:property => 'earl:mode', :href => assertion['mode']}
|
187
|
+
%span{:property => "earl:result", :typeof => assertion['result']['@type']}
|
188
|
+
%span{:property => 'earl:outcome', :resource => assertion['result']['outcome']}
|
189
|
+
= pass_fail
|
190
|
+
%section.appendix
|
191
|
+
%h2
|
192
|
+
Test Subjects
|
193
|
+
%p
|
194
|
+
This report was tested using the following test subjects:
|
195
|
+
%dl
|
196
|
+
- subjects.each do |subject|
|
197
|
+
%dt{:id => subject_refs[subject['@id']]}<
|
198
|
+
%a{:href => subject['@id']}
|
199
|
+
%span{:about => subject['@id'], :property => "doap:name"}<= subject['name']
|
200
|
+
%dd{:property => "earl:testSubjects", :resource => subject['@id'], :typeof => [subject['@type']].flatten.join(" "), :inlist => true}
|
201
|
+
%dl
|
202
|
+
- if subject['doapDesc']
|
203
|
+
%dt= "Description"
|
204
|
+
%dd{:property => "doap:description", :lang => 'en'}<= subject['doapDesc']
|
205
|
+
- if subject['language']
|
206
|
+
%dt= "Programming Language"
|
207
|
+
%dd{:property => "doap:programming-language"}<= subject['language']
|
208
|
+
- if subject['developer']
|
209
|
+
%dt= "Developer"
|
210
|
+
%dd{:rel => "doap:developer"}
|
211
|
+
- subject['developer'].each do |dev|
|
212
|
+
%div{:resource => dev['@id'], :typeof => dev['@type']}
|
213
|
+
- if dev.has_key?('@id')
|
214
|
+
%a{:href => dev['@id']}
|
215
|
+
%span{:property => "foaf:name"}<= dev['foaf:name']
|
216
|
+
- else
|
217
|
+
%span{:property => "foaf:name"}<= dev['foaf:name']
|
218
|
+
- if dev['foaf:homepage']
|
219
|
+
%dt
|
220
|
+
Home Page
|
221
|
+
%dd
|
222
|
+
%a{:property => "foaf:homepage", :href=> dev['foaf:homepage']}
|
223
|
+
= dev['foaf:homepage']
|
224
|
+
- unless tests['assertions'].empty?
|
225
|
+
%section.appendix{:rel => "earl:assertions"}
|
226
|
+
%h2
|
227
|
+
Individual Test Results
|
228
|
+
%p
|
229
|
+
Individual test results used to construct this report are available here:
|
230
|
+
%ul
|
231
|
+
- tests['assertions'].each do |file|
|
232
|
+
%li
|
233
|
+
%a.source{:href => file}<= file
|
234
|
+
%section.appendix
|
235
|
+
%h2
|
236
|
+
Test Definitions
|
237
|
+
%dl
|
238
|
+
- tests['tests'].each do |test|
|
239
|
+
%dt{:id => test_refs[test['@id']], :resource => test['@id']}
|
240
|
+
Test
|
241
|
+
%span{:property => "dc:title"}<= test['title']
|
242
|
+
%dd{:property => "earl:tests", :resource => test['@id'], :typeof => [test['@type']].flatten.join(' '), :inlist => true}
|
243
|
+
%p{:property => "dc:description", :lang => 'en'}<= test['description']
|
244
|
+
%dl
|
245
|
+
%dt
|
246
|
+
%pre{:class => "example actionDoc", :property => "mf:action", :resource => test['testAction'], :title => "#{test['title']} Input"}<
|
247
|
+
~ Kernel.open(test['testAction']) {|f| CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testAction']} not loaded"
|
248
|
+
- if test['testResult']
|
249
|
+
%pre{:class => "example resultDoc", :property => "mf:result", :resource => test['testResult'], :title => "#{test['title']} Result"}<
|
250
|
+
~ Kernel.open(test['testResult']) {|f| CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testResult']} not loaded"
|
251
|
+
%section#appendix{:property => "earl:generatedBy", :resource => tests['generatedBy']['@id'], :typeof => tests['generatedBy']['@type']}
|
252
|
+
%h2
|
253
|
+
Report Generation Software
|
254
|
+
- doap = tests['generatedBy']
|
255
|
+
- rel = doap['release']
|
256
|
+
%p
|
257
|
+
This report generated by
|
258
|
+
%span{:property => "doap:name"}<
|
259
|
+
%a{:href => tests['generatedBy']['@id']}<
|
260
|
+
= doap['name']
|
261
|
+
%meta{:property => "doap:shortdesc", :content => doap['shortdesc'], :lang => 'en'}
|
262
|
+
%meta{:property => "doap:description", :content => doap['doapDesc'], :lang => 'en'}
|
263
|
+
version
|
264
|
+
%span{:property => "doap:release", :resource => rel['@id'], :typeof => 'doap:Version'}
|
265
|
+
%span{:property => "doap:revision"}<=rel['revision']
|
266
|
+
%meta{:property => "doap:name", :content => rel['name']}
|
267
|
+
%meta{:property => "doap:created", :content => rel['created'], :datatype => "xsd:date"}
|
268
|
+
an
|
269
|
+
%a{:property => "doap:license", :href => doap['license']}<="Unlicensed"
|
270
|
+
%span{:property => "doap:programming-language"}<="Ruby"
|
271
|
+
package available at
|
272
|
+
%a{:property => "doap:homepage", :href => doap['homepage']}<=doap['homepage']
|
273
|
+
= "."
|
274
|
+
%p{:property => "doap:developer", :resource => "http://greggkellogg.net/foaf#me", :typeof => "foaf:Person"}
|
275
|
+
This software is provided by
|
276
|
+
%a{:property => "foaf:homepage", :href => "http://greggkellogg.net/"}<
|
277
|
+
%span{:aboue => "http://greggkellogg.net/foaf#me", :property => "foaf:name"}<
|
278
|
+
Gregg Kellogg
|
279
|
+
in hopes that it might make the lives of conformance testers easier.
|
data/spec/earl_report_spec.rb
CHANGED
@@ -41,7 +41,11 @@ describe EarlReport do
|
|
41
41
|
RDF::Graph.should_receive(:load)
|
42
42
|
.with(File.expand_path("../test-files/manifest.ttl", __FILE__), {:base_uri => "http://example.com/base/"})
|
43
43
|
.and_return(manifest)
|
44
|
+
RDF::Graph.should_receive(:load)
|
45
|
+
.with(File.expand_path("../test-files/report-complete.ttl", __FILE__))
|
46
|
+
.and_return(reportComplete)
|
44
47
|
EarlReport.new(
|
48
|
+
File.expand_path("../test-files/report-complete.ttl", __FILE__),
|
45
49
|
:verbose => false,
|
46
50
|
:base => "http://example.com/base/",
|
47
51
|
:manifest => File.expand_path("../test-files/manifest.ttl", __FILE__))
|
@@ -164,14 +168,14 @@ describe EarlReport do
|
|
164
168
|
specify {json.should be_a(Hash)}
|
165
169
|
{
|
166
170
|
"@id" => "",
|
167
|
-
"@type" =>
|
171
|
+
"@type" => "earl:Report",
|
168
172
|
'bibRef' => "[[TURTLE]]",
|
169
|
-
'
|
173
|
+
'title' => "Turtle Test Results"
|
170
174
|
}.each do |prop, value|
|
171
175
|
specify(prop) {json[prop].should == value}
|
172
176
|
end
|
173
177
|
|
174
|
-
%w(assertions testSubjects tests).each do |key|
|
178
|
+
%w(assertions generatedBy testSubjects tests).each do |key|
|
175
179
|
specify {json.keys.should include(key)}
|
176
180
|
end
|
177
181
|
|
@@ -314,7 +318,7 @@ describe EarlReport do
|
|
314
318
|
ttl.should match(/ doap:name "#{desc['name']}"\s*[;\.]$/)
|
315
319
|
end
|
316
320
|
it "has description" do
|
317
|
-
ttl.should match(/ doap:description """#{desc['doapDesc']}"""\s*[;\.]$/)
|
321
|
+
ttl.should match(/ doap:description """#{desc['doapDesc']}"""@en\s*[;\.]$/)
|
318
322
|
end
|
319
323
|
it "has doap:programming-language" do
|
320
324
|
ttl.should match(/ doap:programming-language "#{desc['language']}"\s*[;\.]$/)
|
@@ -371,7 +375,7 @@ describe EarlReport do
|
|
371
375
|
ttl.should match(/ dc:title "#{tc['title']}"\s*[;\.]$/)
|
372
376
|
end
|
373
377
|
it "has dc:description" do
|
374
|
-
ttl.should match(/ dc:description """#{tc['description']}"""\s*[;\.]$/)
|
378
|
+
ttl.should match(/ dc:description """#{tc['description']}"""@en\s*[;\.]$/)
|
375
379
|
end
|
376
380
|
it "has mf:action" do
|
377
381
|
ttl.should match(/ mf:action <#{tc['testAction']}>\s*[;\.]$/)
|
@@ -444,8 +448,8 @@ describe EarlReport do
|
|
444
448
|
end
|
445
449
|
|
446
450
|
context "earl:Software" do
|
447
|
-
specify {output.should match(/<> a earl:
|
448
|
-
specify {output.should match(/
|
451
|
+
specify {output.should match(/<> a earl:Report\s*[;\.]$/)}
|
452
|
+
specify {output.should match(/ dc:title "#{json_hash['title']}"\s*[;\.]$/)}
|
449
453
|
end
|
450
454
|
|
451
455
|
context "Subject Definitions" do
|
@@ -531,9 +535,10 @@ describe EarlReport do
|
|
531
535
|
PREFIX earl: <http://www.w3.org/ns/earl#>
|
532
536
|
|
533
537
|
ASK WHERE {
|
534
|
-
?uri a earl:
|
535
|
-
|
538
|
+
?uri a earl:Report;
|
539
|
+
dc:title "Turtle Test Results";
|
536
540
|
dc:bibliographicCitation "[[TURTLE]]";
|
541
|
+
earl:generatedBy ?generatedBy;
|
537
542
|
earl:assertions ?assertionFile;
|
538
543
|
earl:testSubjects (<http://rubygems.org/gems/rdf-turtle>);
|
539
544
|
earl:tests (
|
@@ -550,7 +555,7 @@ describe EarlReport do
|
|
550
555
|
ASK WHERE {
|
551
556
|
<http://rubygems.org/gems/rdf-turtle> a earl:TestSubject, doap:Project;
|
552
557
|
doap:name "RDF::Turtle";
|
553
|
-
doap:description """RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.""";
|
558
|
+
doap:description """RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."""@en;
|
554
559
|
doap:programming-language "Ruby";
|
555
560
|
doap:developer <http://greggkellogg.net/foaf#me> .
|
556
561
|
}
|
@@ -574,7 +579,7 @@ describe EarlReport do
|
|
574
579
|
ASK WHERE {
|
575
580
|
<http://example/manifest.ttl#testeval00> a earl:TestCriterion, earl:TestCase;
|
576
581
|
dc:title "subm-test-00";
|
577
|
-
dc:description """Blank subject""";
|
582
|
+
dc:description """Blank subject"""@en;
|
578
583
|
mf:action <http://example/test-00.ttl>;
|
579
584
|
mf:result <http://example/test-00.out>;
|
580
585
|
earl:assertions (
|
@@ -3,17 +3,17 @@
|
|
3
3
|
<head>
|
4
4
|
<meta content='text/html;charset=utf-8' http-equiv='Content-Type' />
|
5
5
|
<title>
|
6
|
-
|
6
|
+
|
7
7
|
</title>
|
8
8
|
<script class='remove' src='http://www.w3.org/Tools/respec/respec-w3c-common' type='text/javascript'></script>
|
9
9
|
<script type='text/javascript'>
|
10
10
|
//<![CDATA[
|
11
11
|
var respecConfig = {
|
12
12
|
// extend the bibliography entries
|
13
|
-
|
14
|
-
|
13
|
+
localBiblio: {
|
14
|
+
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>",
|
15
15
|
},
|
16
|
-
|
16
|
+
|
17
17
|
// specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
|
18
18
|
specStatus: "unofficial",
|
19
19
|
copyrightStart: "2010",
|
@@ -23,7 +23,7 @@
|
|
23
23
|
shortName: "turtle-earl",
|
24
24
|
subtitle: "Turtle Implementation Conformance Report",
|
25
25
|
// if you wish the publication date to be other than today, set this
|
26
|
-
publishDate: "2012/11/
|
26
|
+
publishDate: "2012/11/26",
|
27
27
|
|
28
28
|
// if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
|
29
29
|
// and its maturity status
|
@@ -114,23 +114,13 @@
|
|
114
114
|
</style>
|
115
115
|
</head>
|
116
116
|
<body>
|
117
|
-
<section about='' id='abstract' typeof='earl:
|
117
|
+
<section about='' id='abstract' typeof='earl:Report'>
|
118
118
|
<p>
|
119
119
|
This document report processor conformance for and related specifications for
|
120
|
-
<span property='
|
121
|
-
<span property='dc:bibliographicCitation'
|
120
|
+
<span property='dc:title'></span>
|
121
|
+
<span property='dc:bibliographicCitation'></span>
|
122
122
|
according to the requirements of the Evaluation and Report Language (EARL) 1.0 Schema [[EARL10-SCHEMA]].
|
123
123
|
</p>
|
124
|
-
<p>
|
125
|
-
This report is also available in alternate formats:
|
126
|
-
<a href='earl.ttl'>
|
127
|
-
Turtle
|
128
|
-
</a>
|
129
|
-
and
|
130
|
-
<a href='earl.jsonld'>
|
131
|
-
JSON-LD
|
132
|
-
</a>
|
133
|
-
</p>
|
134
124
|
</section>
|
135
125
|
<section id='sodt'></section>
|
136
126
|
<section>
|
@@ -155,23 +145,21 @@
|
|
155
145
|
<link href='http://example/manifest.ttl#testeval00' property='earl:test' />
|
156
146
|
<link href='http://rubygems.org/gems/rdf-turtle' property='earl:subject' />
|
157
147
|
<link href='earl:automatic' property='earl:mode' />
|
158
|
-
<span property='earl:result'
|
148
|
+
<span property='earl:result' typeof='earl:TestResult'>
|
159
149
|
<span property='earl:outcome' resource='earl:passed'>
|
160
150
|
PASS
|
161
151
|
</span>
|
162
152
|
</span>
|
163
153
|
</td>
|
164
154
|
</tr>
|
165
|
-
<tr resource='_:
|
155
|
+
<tr resource='_:g70304060229600'>
|
166
156
|
<td>
|
167
|
-
<a href='#
|
157
|
+
<a href='#test_g70304060229600'>subm-test-01</a>
|
168
158
|
</td>
|
169
159
|
<td class='UNTEST' inlist='inlist' property='earl:assertions' typeof='earl:Assertion'>
|
170
|
-
<link property='earl:
|
171
|
-
<link href='_:g70363621872700' property='earl:test' />
|
160
|
+
<link href='_:g70304060229600' property='earl:test' />
|
172
161
|
<link href='http://rubygems.org/gems/rdf-turtle' property='earl:subject' />
|
173
|
-
<
|
174
|
-
<span property='earl:result' resource='_' typeof='earl:TestResult'>
|
162
|
+
<span property='earl:result' typeof='earl:TestResult'>
|
175
163
|
<span property='earl:outcome' resource='earl:untested'>
|
176
164
|
UNTEST
|
177
165
|
</span>
|
@@ -194,7 +182,7 @@
|
|
194
182
|
<dd inlist='inlist' property='earl:testSubjects' resource='http://rubygems.org/gems/rdf-turtle' typeof='earl:TestSubject doap:Project'>
|
195
183
|
<dl>
|
196
184
|
<dt>Description</dt>
|
197
|
-
<dd property='doap:description'>RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.</dd>
|
185
|
+
<dd lang='en' property='doap:description'>RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.</dd>
|
198
186
|
<dt>Programming Language</dt>
|
199
187
|
<dd property='doap:programming-language'>Ruby</dd>
|
200
188
|
<dt>Developer</dt>
|
@@ -240,7 +228,7 @@
|
|
240
228
|
<span property='dc:title'>subm-test-00</span>
|
241
229
|
</dt>
|
242
230
|
<dd inlist='inlist' property='earl:tests' resource='http://example/manifest.ttl#testeval00' typeof='earl:TestCriterion earl:TestCase'>
|
243
|
-
<p property='dc:description'>Blank subject</p>
|
231
|
+
<p lang='en' property='dc:description'>Blank subject</p>
|
244
232
|
<dl>
|
245
233
|
<dt>
|
246
234
|
<pre class='example actionDoc' property='mf:action' resource='http://example/test-00.ttl' title='subm-test-00 Input'>http://example/test-00.ttl not loaded</pre>
|
@@ -248,12 +236,12 @@
|
|
248
236
|
</dt>
|
249
237
|
</dl>
|
250
238
|
</dd>
|
251
|
-
<dt id='
|
239
|
+
<dt id='test_g70304060229600' resource='_:g70304060229600'>
|
252
240
|
Test
|
253
241
|
<span property='dc:title'>subm-test-01</span>
|
254
242
|
</dt>
|
255
|
-
<dd inlist='inlist' property='earl:tests' resource='_:
|
256
|
-
<p property='dc:description'>@prefix and qnames</p>
|
243
|
+
<dd inlist='inlist' property='earl:tests' resource='_:g70304060229600' typeof='earl:TestCriterion earl:TestCase'>
|
244
|
+
<p lang='en' property='dc:description'>@prefix and qnames</p>
|
257
245
|
<dl>
|
258
246
|
<dt>
|
259
247
|
<pre class='example actionDoc' property='mf:action' resource='http://example/test-01.ttl' title='subm-test-01 Input'>http://example/test-01.ttl not loaded</pre>
|
@@ -263,5 +251,33 @@
|
|
263
251
|
</dd>
|
264
252
|
</dl>
|
265
253
|
</section>
|
254
|
+
<section id='appendix' property='earl:generatedBy' resource='http://rubygems.org/gems/earl-report' typeof='doap:Project'>
|
255
|
+
<h2>
|
256
|
+
Report Generation Software
|
257
|
+
</h2>
|
258
|
+
<p>
|
259
|
+
This report generated by
|
260
|
+
<span property='doap:name'><a href='http://rubygems.org/gems/earl-report'>earl-report</a></span>
|
261
|
+
<meta content='Earl Report summary generator' lang='en' property='doap:shortdesc' />
|
262
|
+
<meta content='Earl Report generates HTML+RDFa rollups of multiple EARL reports' lang='en' property='doap:description' />
|
263
|
+
version
|
264
|
+
<span property='doap:release' resource='https://github.com/gkellogg/earl-report/tree/0.1.1' typeof='doap:Version'>
|
265
|
+
<span property='doap:revision'>0.1.1</span>
|
266
|
+
<meta content='earl-report-0.1.1' property='doap:name' />
|
267
|
+
<meta content='2012-11-25' datatype='xsd:date' property='doap:created' />
|
268
|
+
</span>
|
269
|
+
an
|
270
|
+
<a href='http://unlicense.org' property='doap:license'>Unlicensed</a>
|
271
|
+
<span property='doap:programming-language'>Ruby</span>
|
272
|
+
package available at
|
273
|
+
<a href='https://github.com/gkellogg/earl-report' property='doap:homepage'>https://github.com/gkellogg/earl-report</a>
|
274
|
+
.
|
275
|
+
</p>
|
276
|
+
<p property='doap:developer' resource='http://greggkellogg.net/foaf#me' typeof='foaf:Person'>
|
277
|
+
This software is provided by
|
278
|
+
<a href='http://greggkellogg.net/' property='foaf:homepage'><span aboue='http://greggkellogg.net/foaf#me' property='foaf:name'>Gregg Kellogg</span></a>
|
279
|
+
in hopes that it might make the lives of conformance testers easier.
|
280
|
+
</p>
|
281
|
+
</section>
|
266
282
|
</body>
|
267
283
|
</html>
|
@@ -20,8 +20,13 @@
|
|
20
20
|
"bibRef": {
|
21
21
|
"@id": "dc:bibliographicCitation"
|
22
22
|
},
|
23
|
+
"created": {
|
24
|
+
"@id": "doap:created",
|
25
|
+
"@type": "xsd:date"
|
26
|
+
},
|
23
27
|
"description": {
|
24
|
-
"@id": "dc:description"
|
28
|
+
"@id": "dc:description",
|
29
|
+
"@language": "en"
|
25
30
|
},
|
26
31
|
"developer": {
|
27
32
|
"@id": "doap:developer",
|
@@ -29,18 +34,27 @@
|
|
29
34
|
"@container": "@set"
|
30
35
|
},
|
31
36
|
"doapDesc": {
|
32
|
-
"@id": "doap:description"
|
37
|
+
"@id": "doap:description",
|
38
|
+
"@language": "en"
|
39
|
+
},
|
40
|
+
"generatedBy": {
|
41
|
+
"@type": "@id"
|
33
42
|
},
|
34
43
|
"homepage": {
|
35
44
|
"@id": "doap:homepage",
|
36
45
|
"@type": "@id"
|
37
46
|
},
|
38
47
|
"label": {
|
39
|
-
"@id": "rdfs:label"
|
48
|
+
"@id": "rdfs:label",
|
49
|
+
"@language": "en"
|
40
50
|
},
|
41
51
|
"language": {
|
42
52
|
"@id": "doap:programming-language"
|
43
53
|
},
|
54
|
+
"license": {
|
55
|
+
"@id": "doap:license",
|
56
|
+
"@type": "@id"
|
57
|
+
},
|
44
58
|
"mode": {
|
45
59
|
"@type": "@id"
|
46
60
|
},
|
@@ -50,6 +64,14 @@
|
|
50
64
|
"outcome": {
|
51
65
|
"@type": "@id"
|
52
66
|
},
|
67
|
+
"release": {
|
68
|
+
"@id": "doap:release",
|
69
|
+
"@type": "@id"
|
70
|
+
},
|
71
|
+
"shortdesc": {
|
72
|
+
"@id": "doap:shortdesc",
|
73
|
+
"@language": "en"
|
74
|
+
},
|
53
75
|
"subject": {
|
54
76
|
"@type": "@id"
|
55
77
|
},
|
@@ -74,18 +96,41 @@
|
|
74
96
|
},
|
75
97
|
"title": {
|
76
98
|
"@id": "dc:title"
|
99
|
+
},
|
100
|
+
"xsd": {
|
101
|
+
"@id": "http://www.w3.org/2001/XMLSchema#"
|
77
102
|
}
|
78
103
|
},
|
79
104
|
"@id": "",
|
80
|
-
"@type":
|
81
|
-
|
82
|
-
|
83
|
-
|
105
|
+
"@type": "earl:Report",
|
106
|
+
"title": null,
|
107
|
+
"bibRef": null,
|
108
|
+
"generatedBy": {
|
109
|
+
"@id": "http://rubygems.org/gems/earl-report",
|
110
|
+
"@type": "doap:Project",
|
111
|
+
"name": "earl-report",
|
112
|
+
"shortdesc": "Earl Report summary generator",
|
113
|
+
"doapDesc": "Earl Report generates HTML+RDFa rollups of multiple EARL reports",
|
114
|
+
"homepage": "https://github.com/gkellogg/earl-report",
|
115
|
+
"language": "Ruby",
|
116
|
+
"license": "http://unlicense.org",
|
117
|
+
"release": {
|
118
|
+
"@id": "https://github.com/gkellogg/earl-report/tree/0.1.1",
|
119
|
+
"@type": "doap:Version",
|
120
|
+
"name": "earl-report-0.1.1",
|
121
|
+
"created": "2012-11-25",
|
122
|
+
"revision": "0.1.1"
|
123
|
+
},
|
124
|
+
"developer": {
|
125
|
+
"@type": "foaf:Person",
|
126
|
+
"@id": "http://greggkellogg.net/foaf#me",
|
127
|
+
"foaf:name": "Gregg Kellogg",
|
128
|
+
"foaf:homepage": "http://greggkellogg.net/"
|
129
|
+
}
|
130
|
+
},
|
84
131
|
"assertions": [
|
85
132
|
"test-files/report-complete.ttl"
|
86
133
|
],
|
87
|
-
"name": "Turtle",
|
88
|
-
"bibRef": "[[TURTLE]]",
|
89
134
|
"testSubjects": [
|
90
135
|
{
|
91
136
|
"@id": "http://rubygems.org/gems/rdf-turtle",
|
@@ -133,7 +178,7 @@
|
|
133
178
|
"testResult": "http://example/test-00.out"
|
134
179
|
},
|
135
180
|
{
|
136
|
-
"@id": "_:
|
181
|
+
"@id": "_:g70304060229600",
|
137
182
|
"@type": [
|
138
183
|
"earl:TestCriterion",
|
139
184
|
"earl:TestCase"
|
@@ -143,7 +188,7 @@
|
|
143
188
|
"assertions": [
|
144
189
|
{
|
145
190
|
"@type": "earl:Assertion",
|
146
|
-
"test": "_:
|
191
|
+
"test": "_:g70304060229600",
|
147
192
|
"subject": "http://rubygems.org/gems/rdf-turtle",
|
148
193
|
"result": {
|
149
194
|
"@type": "earl:TestResult",
|
data/spec/test-files/results.ttl
CHANGED
@@ -9,23 +9,38 @@
|
|
9
9
|
@prefix xhv: <http://www.w3.org/1999/xhtml/vocab#> .
|
10
10
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dc:bibliographicCitation "
|
12
|
+
|
13
|
+
<> a earl:Report;
|
14
|
+
dc:title "";
|
15
|
+
dc:bibliographicCitation "";
|
16
|
+
earl:generatedBy <http://rubygems.org/gems/earl-report>;
|
16
17
|
earl:assertions
|
17
18
|
<test-files/report-complete.ttl>;
|
18
19
|
earl:testSubjects (
|
19
20
|
<http://rubygems.org/gems/rdf-turtle>);
|
20
21
|
earl:tests (
|
21
22
|
<http://example/manifest.ttl#testeval00>
|
22
|
-
_:
|
23
|
+
_:g70304060229600) .
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
<http://rubygems.org/gems/earl-report> a earl:Software, doap:Project;
|
28
|
+
doap:name "earl-report";
|
29
|
+
doap:shortdesc "Earl Report summary generator"@en;
|
30
|
+
doap:description "EarlReport generates HTML+RDFa rollups of multiple EARL reports"@en;
|
31
|
+
doap:homepage <https://github.com/gkellogg/earl-report>;
|
32
|
+
doap:programming-language "Ruby";
|
33
|
+
doap:license <http://unlicense.org>;
|
34
|
+
doap:release <https://github.com/gkellogg/earl-report/tree/0.1.1>;
|
35
|
+
doap:developer <http://greggkellogg.net/foaf#me> .
|
36
|
+
|
37
|
+
|
23
38
|
#
|
24
39
|
# Subject Definitions
|
25
40
|
#
|
26
41
|
<http://rubygems.org/gems/rdf-turtle> a earl:TestSubject, doap:Project;
|
27
42
|
doap:name "RDF::Turtle";
|
28
|
-
doap:description """RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.""";
|
43
|
+
doap:description """RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."""@en;
|
29
44
|
doap:programming-language "Ruby";
|
30
45
|
.
|
31
46
|
|
@@ -41,7 +56,7 @@
|
|
41
56
|
#
|
42
57
|
<http://example/manifest.ttl#testeval00> a earl:TestCriterion, earl:TestCase;
|
43
58
|
dc:title "subm-test-00";
|
44
|
-
dc:description """Blank subject""";
|
59
|
+
dc:description """Blank subject"""@en;
|
45
60
|
mf:result <http://example/test-00.out>;
|
46
61
|
mf:action <http://example/test-00.ttl>;
|
47
62
|
earl:assertions (
|
@@ -53,3 +68,15 @@
|
|
53
68
|
earl:result [ a earl:TestResult; earl:outcome earl:passed ]]
|
54
69
|
) .
|
55
70
|
|
71
|
+
_:g70304060229600 a earl:TestCriterion, earl:TestCase;
|
72
|
+
dc:title "subm-test-01";
|
73
|
+
dc:description """@prefix and qnames"""@en;
|
74
|
+
mf:result <http://example/test-01.out>;
|
75
|
+
mf:action <http://example/test-01.ttl>;
|
76
|
+
earl:assertions (
|
77
|
+
[ a earl:Assertion;
|
78
|
+
earl:test _:g70304060229600;
|
79
|
+
earl:subject <http://rubygems.org/gems/rdf-turtle>;
|
80
|
+
earl:result [ a earl:TestResult; earl:outcome earl:untested ]]
|
81
|
+
) .
|
82
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: earl-report
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 2.8.0
|
62
|
-
description: EarlReport generates HTML+RDFa rollups of multiple EARL
|
62
|
+
description: EarlReport generates HTML+RDFa rollups of multiple EARL reports.
|
63
63
|
email: gregg@greggkellogg.net
|
64
64
|
executables:
|
65
65
|
- earl-report
|
@@ -68,6 +68,8 @@ extra_rdoc_files: []
|
|
68
68
|
files:
|
69
69
|
- README.md
|
70
70
|
- VERSION
|
71
|
+
- lib/earl_report/version.rb
|
72
|
+
- lib/earl_report/views/earl_report.html.haml
|
71
73
|
- lib/earl_report.rb
|
72
74
|
- spec/earl_report_spec.rb
|
73
75
|
- spec/spec_helper.rb
|