earl-report 0.6.2 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -3
- data/VERSION +1 -1
- data/lib/earl_report.rb +35 -28
- data/lib/earl_report/views/earl_report.html.haml +2 -2
- data/spec/earl_report_spec.rb +10 -3
- data/spec/spec_helper.rb +13 -0
- data/spec/test-files/results.html +11 -11
- data/spec/test-files/results.jsonld +95 -87
- data/spec/test-files/results.ttl +21 -21
- metadata +11 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7879d1953b9802807a57232a01207aa3b63f5ed80c025273ccdfe826e6f86c93
|
4
|
+
data.tar.gz: bf899c9f720aa8b8f67694e7398f693502fef7fb748b3fa5136acd05fe7495ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57c7ec9fff3d0634c35fc96d646febda4c7ce71fdaa9f8c8f78702335fdedb7c0babe6ccddf515cd17065284dc0627d085a3d41ee05dfeea5dd96b73b25b61d5
|
7
|
+
data.tar.gz: fdee07b06ca6344764876c8649f0c906c974326f27427120afb0455ef47fd35d4387e9f64b9f84ecf552bad44581769eec9455e3c27612b66ba26c8ac510a609
|
data/README.md
CHANGED
@@ -78,11 +78,21 @@ can be used by specifying a customized manifest query, but may require a custom
|
|
78
78
|
The report template is in [ReSpec][] form using [Haml]() to generate individual report elements.
|
79
79
|
|
80
80
|
## Changes from previous versions
|
81
|
-
Version 0.
|
81
|
+
### Version 0.7
|
82
|
+
Version 0.7 creates incompatibilities with previous result formats. Previously, terms were "added" to the EARL vocabulary to help with coordination. This version pulls that back, but does depend on an added `earl:Report` class which acts as an appropriate container for for collections of `earl:Assertion`.
|
83
|
+
|
84
|
+
Within an `earl:TestCase`, the former `earl:assertions` property is replaced with a reverse property on `earl:test` so that, in the JSON-LD representation, an `earl:TestCase` will contain a property representing the related assertions.
|
85
|
+
|
86
|
+
Also, `earl:assertions` had been miss-appropriated to reference the sources of the individual test results provided for each test subject. A new property as appropriated from the Test Manifest vocabulary: `mf:report`. The alias `assertions` continues to be used within the JSON-LD representation, although it now maps to `mf:report` at the top level, and as mentioned, is a reverse property of `earl:test` within an `earl:TestCase`.
|
87
|
+
|
88
|
+
These changes may require updates to customized Haml templates.
|
89
|
+
|
90
|
+
### Version 0.3
|
91
|
+
Version 0.3 and prior re-constructed the test manifest used to create the body of the report, which caused information not described within the query to be lost. Starting with 0.4, all manifests and assertions are read into a single graph, and each test references a list of assertions against it using a list referenced by `mf:assertions`. Additionally, all included manifests are included in a top-level entity referenced via `mf:entries`. For example:
|
82
92
|
|
83
93
|
<> a earl:Software, doap:Project;
|
84
94
|
mf:entries (<http://example/manifest.ttl>);
|
85
|
-
|
95
|
+
mf:assertions (<spec/test-files/report-complete.ttl>) .
|
86
96
|
|
87
97
|
<http://example/manifest.ttl> a mf:Manifest, earl:Report;
|
88
98
|
mf:name "Example Test Cases";
|
@@ -94,7 +104,7 @@ Version 0.3 and prior re-constructed the test manifest used to create the body o
|
|
94
104
|
rdfs:comment "Blank subject";
|
95
105
|
mf:action <http://example/test-00.ttl>;
|
96
106
|
mf:result <http://example/test-00.out>;
|
97
|
-
|
107
|
+
mf:assertions ([
|
98
108
|
a earl:Assertion;
|
99
109
|
earl:assertedBy <https://greggkellogg.net/foaf#me>;
|
100
110
|
earl:mode earl:automatic;
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
data/lib/earl_report.rb
CHANGED
@@ -93,12 +93,20 @@ class EarlReport
|
|
93
93
|
"foaf" => "http://xmlns.com/foaf/0.1/",
|
94
94
|
"rdfs" => "http://www.w3.org/2000/01/rdf-schema#",
|
95
95
|
"assertedBy" => {"@type" => "@id"},
|
96
|
-
"assertions" => {"@type" => "@id", "@container" => "@set"},
|
96
|
+
"assertions" => {"@id" => "mf:report", "@type" => "@id", "@container" => "@set"},
|
97
97
|
"bibRef" => {"@id" => "dc:bibliographicCitation"},
|
98
98
|
"created" => {"@id" => "doap:created", "@type" => "xsd:date"},
|
99
99
|
"description" => {"@id" => "rdfs:comment", "@language" => "en"},
|
100
100
|
"developer" => {"@id" => "doap:developer", "@type" => "@id", "@container" => "@set"},
|
101
101
|
"doapDesc" => {"@id" => "doap:description", "@language" => "en"},
|
102
|
+
"entries" => {
|
103
|
+
"@id" => "mf:entries", "@type" => "@id", "@container" => "@list",
|
104
|
+
"@context" => {
|
105
|
+
"assertions" => {
|
106
|
+
"@reverse" => "earl:test", "@type" => "@id", "@container" => "@set"
|
107
|
+
},
|
108
|
+
}
|
109
|
+
},
|
102
110
|
"generatedBy" => {"@type" => "@id"},
|
103
111
|
"homepage" => {"@id" => "doap:homepage", "@type" => "@id"},
|
104
112
|
"language" => {"@id" => "doap:programming-language"},
|
@@ -114,7 +122,6 @@ class EarlReport
|
|
114
122
|
"testAction" => {"@id" => "mf:action", "@type" => "@id"},
|
115
123
|
"testResult" => {"@id" => "mf:result", "@type" => "@id"},
|
116
124
|
"title" => {"@id" => "mf:name"},
|
117
|
-
"entries" => {"@id" => "mf:entries", "@type" => "@id", "@container" => "@list"},
|
118
125
|
"testSubjects" => {"@type" => "@id", "@container" => "@set"},
|
119
126
|
"xsd" => {"@id" => "http://www.w3.org/2001/XMLSchema#"}
|
120
127
|
},
|
@@ -184,7 +191,6 @@ class EarlReport
|
|
184
191
|
).gsub(/^ /, '')
|
185
192
|
|
186
193
|
# Convenience vocabularies
|
187
|
-
class EARL < RDF::Vocabulary("http://www.w3.org/ns/earl#"); end
|
188
194
|
class MF < RDF::Vocabulary("http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#"); end
|
189
195
|
|
190
196
|
##
|
@@ -331,8 +337,8 @@ class EarlReport
|
|
331
337
|
doapDesc.language ||= :en if doapDesc
|
332
338
|
devName = solution[:devName].to_s if solution[:devName]
|
333
339
|
graph << RDF::Statement(solution[:uri], RDF.type, RDF::Vocab::DOAP.Project)
|
334
|
-
graph << RDF::Statement(solution[:uri], RDF.type, EARL.TestSubject)
|
335
|
-
graph << RDF::Statement(solution[:uri], RDF.type, EARL.Software)
|
340
|
+
graph << RDF::Statement(solution[:uri], RDF.type, RDF::Vocab::EARL.TestSubject)
|
341
|
+
graph << RDF::Statement(solution[:uri], RDF.type, RDF::Vocab::EARL.Software)
|
336
342
|
graph << RDF::Statement(solution[:uri], RDF::Vocab::DOAP.name, doapName)
|
337
343
|
graph << RDF::Statement(solution[:uri], RDF::Vocab::DOAP.developer, solution[:developer])
|
338
344
|
graph << RDF::Statement(solution[:uri], RDF::Vocab::DOAP.homepage, solution[:homepage]) if solution[:homepage]
|
@@ -377,15 +383,15 @@ class EarlReport
|
|
377
383
|
ary = test_assertion_lists[solution[:test]]
|
378
384
|
|
379
385
|
ary[ndx] = a = RDF::Node.new
|
380
|
-
graph << RDF::Statement(a, RDF.type, EARL.Assertion)
|
381
|
-
graph << RDF::Statement(a, EARL.subject, subject)
|
382
|
-
graph << RDF::Statement(a, EARL.test, solution[:test])
|
383
|
-
graph << RDF::Statement(a, EARL.assertedBy, solution[:by])
|
384
|
-
graph << RDF::Statement(a, EARL.mode, solution[:mode]) if solution[:mode]
|
386
|
+
graph << RDF::Statement(a, RDF.type, RDF::Vocab::EARL.Assertion)
|
387
|
+
graph << RDF::Statement(a, RDF::Vocab::EARL.subject, subject)
|
388
|
+
graph << RDF::Statement(a, RDF::Vocab::EARL.test, solution[:test])
|
389
|
+
graph << RDF::Statement(a, RDF::Vocab::EARL.assertedBy, solution[:by])
|
390
|
+
graph << RDF::Statement(a, RDF::Vocab::EARL.mode, solution[:mode]) if solution[:mode]
|
385
391
|
r = RDF::Node.new
|
386
|
-
graph << RDF::Statement(a, EARL.result, r)
|
387
|
-
graph << RDF::Statement(r, RDF.type, EARL.TestResult)
|
388
|
-
graph << RDF::Statement(r, EARL.outcome, solution[:outcome])
|
392
|
+
graph << RDF::Statement(a, RDF::Vocab::EARL.result, r)
|
393
|
+
graph << RDF::Statement(r, RDF.type, RDF::Vocab::EARL.TestResult)
|
394
|
+
graph << RDF::Statement(r, RDF::Vocab::EARL.outcome, solution[:outcome])
|
389
395
|
end
|
390
396
|
|
391
397
|
# See if subject did not report results, which may indicate a formatting error in the EARL source
|
@@ -401,17 +407,14 @@ class EarlReport
|
|
401
407
|
unless a
|
402
408
|
assertion_stats["Untested"] = assertion_stats["Untested"].to_i + 1
|
403
409
|
ary[ndx] = a = RDF::Node.new
|
404
|
-
graph << RDF::Statement(a, RDF.type, EARL.Assertion)
|
405
|
-
graph << RDF::Statement(a, EARL.subject, subjects.keys[ndx])
|
406
|
-
graph << RDF::Statement(a, EARL.test, test)
|
410
|
+
graph << RDF::Statement(a, RDF.type, RDF::Vocab::EARL.Assertion)
|
411
|
+
graph << RDF::Statement(a, RDF::Vocab::EARL.subject, subjects.keys[ndx])
|
412
|
+
graph << RDF::Statement(a, RDF::Vocab::EARL.test, test)
|
407
413
|
r = RDF::Node.new
|
408
|
-
graph << RDF::Statement(a, EARL.result, r)
|
409
|
-
graph << RDF::Statement(r, RDF.type, EARL.TestResult)
|
410
|
-
graph << RDF::Statement(r, EARL.outcome, EARL.untested)
|
414
|
+
graph << RDF::Statement(a, RDF::Vocab::EARL.result, r)
|
415
|
+
graph << RDF::Statement(r, RDF.type, RDF::Vocab::EARL.TestResult)
|
416
|
+
graph << RDF::Statement(r, RDF::Vocab::EARL.outcome, RDF::Vocab::EARL.untested)
|
411
417
|
end
|
412
|
-
|
413
|
-
# This counts on order being preserved in default repository so we can avoid using an rdf:List
|
414
|
-
graph << RDF::Statement(test, EARL.assertions, a)
|
415
418
|
end
|
416
419
|
end
|
417
420
|
|
@@ -423,7 +426,7 @@ class EarlReport
|
|
423
426
|
doap:name #{quoted(name)};
|
424
427
|
dc:bibliographicCitation "#{bibRef}";
|
425
428
|
earl:generatedBy <https://rubygems.org/gems/earl-report>;
|
426
|
-
|
429
|
+
mf:report #{subjects.values.map {|f| f.to_ntriples}.join(",\n ")};
|
427
430
|
earl:testSubjects #{subjects.keys.map {|f| f.to_ntriples}.join(",\n ")};
|
428
431
|
mf:entries (#{man_uris.map {|f| f.to_ntriples}.join("\n ")}) .
|
429
432
|
).gsub(/^ /, '') +
|
@@ -432,18 +435,18 @@ class EarlReport
|
|
432
435
|
|
433
436
|
# Each manifest is an earl:Report
|
434
437
|
man_uris.each do |u|
|
435
|
-
graph << RDF::Statement.new(u, RDF.type, EARL.Report)
|
438
|
+
graph << RDF::Statement.new(u, RDF.type, RDF::Vocab::EARL.Report)
|
436
439
|
end
|
437
440
|
|
438
441
|
# Each subject is an earl:TestSubject
|
439
442
|
subjects.keys.each do |u|
|
440
|
-
graph << RDF::Statement.new(u, RDF.type, EARL.TestSubject)
|
443
|
+
graph << RDF::Statement.new(u, RDF.type, RDF::Vocab::EARL.TestSubject)
|
441
444
|
end
|
442
445
|
|
443
446
|
# Each assertion test is a earl:TestCriterion and earl:TestCase
|
444
447
|
test_resources.each do |u|
|
445
|
-
graph << RDF::Statement.new(u, RDF.type, EARL.TestCriterion)
|
446
|
-
graph << RDF::Statement.new(u, RDF.type, EARL.TestCase)
|
448
|
+
graph << RDF::Statement.new(u, RDF.type, RDF::Vocab::EARL.TestCriterion)
|
449
|
+
graph << RDF::Statement.new(u, RDF.type, RDF::Vocab::EARL.TestCase)
|
447
450
|
end
|
448
451
|
|
449
452
|
raise "Warnings issued in strict mode" if strict && @warnings > 0
|
@@ -575,7 +578,11 @@ class EarlReport
|
|
575
578
|
when '@type'
|
576
579
|
"a " + ttl_value(dv)
|
577
580
|
when 'assertions'
|
578
|
-
|
581
|
+
if dv.all? {|a| a.is_a?(String)}
|
582
|
+
"mf:report #{ttl_value(dv, whitespace: "\n ")}"
|
583
|
+
else
|
584
|
+
"earl:assertions #{dv.map {|a| ttl_assertion(a)}.join(", ")}"
|
585
|
+
end
|
579
586
|
when 'entries'
|
580
587
|
"mf:entries #{ttl_value({'@list' => dv}, whitespace: "\n ")}"
|
581
588
|
when 'release'
|
@@ -333,7 +333,7 @@
|
|
333
333
|
- assertion = test['assertions'].detect {|a| a['subject'] == subject['@id']}
|
334
334
|
- pass_fail = assertion['result']['outcome'].split(':').last.upcase.sub(/(PASS|FAIL)ED$/, '\1')
|
335
335
|
- passed_tests[ndx2][ndx] = (passed_tests[ndx2][ndx] || 0) + (pass_fail == 'PASS' ? 1 : 0)
|
336
|
-
%td{class: pass_fail,
|
336
|
+
%td{class: pass_fail, typeof: assertion['@type']}
|
337
337
|
- if assertion['assertedBy'] && !assertion['assertedBy'].start_with?('_:')
|
338
338
|
%link{property: "earl:assertedBy", href: assertion['assertedBy']}
|
339
339
|
- if assertion['test'] && !assertion['test'].start_with?('_:')
|
@@ -418,7 +418,7 @@
|
|
418
418
|
%td{class: (pct == 100.0 ? 'passed-all' : (pct >= 85.0 ? 'passed-most' : 'passed-some'))}
|
419
419
|
= "#{passed}/#{total} (#{'%.1f' % pct}%)"
|
420
420
|
- unless tests['assertions'].empty?
|
421
|
-
%section.appendix#individual-test-results{rel: "xhv:related
|
421
|
+
%section.appendix#individual-test-results{rel: "xhv:related mf:report"}
|
422
422
|
%h2
|
423
423
|
%span.secno="B."
|
424
424
|
Individual Test Results
|
data/spec/earl_report_spec.rb
CHANGED
@@ -400,6 +400,10 @@ describe EarlReport do
|
|
400
400
|
end
|
401
401
|
}
|
402
402
|
|
403
|
+
it "is valid HTML" do
|
404
|
+
expect(output).to be_valid_html
|
405
|
+
end
|
406
|
+
|
403
407
|
context "parsing to RDF" do
|
404
408
|
let(:graph) do
|
405
409
|
@graph ||= begin
|
@@ -472,7 +476,7 @@ describe EarlReport do
|
|
472
476
|
doap:name "Turtle Test Results";
|
473
477
|
dc:bibliographicCitation "[[TURTLE]]";
|
474
478
|
earl:generatedBy ?generatedBy;
|
475
|
-
|
479
|
+
mf:report ?assertionFile;
|
476
480
|
earl:testSubjects <https://rubygems.org/gems/rdf-turtle>;
|
477
481
|
mf:entries (<http://example/manifest.ttl>) .
|
478
482
|
|
@@ -517,8 +521,11 @@ describe EarlReport do
|
|
517
521
|
<http://example/manifest.ttl#testeval00> a earl:TestCriterion, earl:TestCase;
|
518
522
|
mf:name "subm-test-00";
|
519
523
|
mf:action <http://example/test-00.ttl>;
|
520
|
-
mf:result <http://example/test-00.out
|
521
|
-
|
524
|
+
mf:result <http://example/test-00.out>.
|
525
|
+
[ a earl:Assertion;
|
526
|
+
earl:subject <https://rubygems.org/gems/rdf-turtle>;
|
527
|
+
earl:test <http://example/manifest.ttl#testeval00>
|
528
|
+
] .
|
522
529
|
}
|
523
530
|
)
|
524
531
|
|
data/spec/spec_helper.rb
CHANGED
@@ -5,6 +5,7 @@ require "bundler/setup"
|
|
5
5
|
require 'rspec'
|
6
6
|
require 'rspec/its'
|
7
7
|
require 'amazing_print'
|
8
|
+
require 'nokogumbo'
|
8
9
|
|
9
10
|
begin
|
10
11
|
require 'simplecov'
|
@@ -34,3 +35,15 @@ JSON_STATE = JSON::State.new(
|
|
34
35
|
c.filter_run :focus => true
|
35
36
|
c.run_all_when_everything_filtered = true
|
36
37
|
end
|
38
|
+
|
39
|
+
RSpec::Matchers.define :be_valid_html do
|
40
|
+
match do |actual|
|
41
|
+
root = Nokogiri::HTML5(actual, max_parse_errors: 1000)
|
42
|
+
@errors = Array(root && root.errors.map(&:to_s))
|
43
|
+
@errors.empty?
|
44
|
+
end
|
45
|
+
|
46
|
+
failure_message do |actual|
|
47
|
+
"expected no errors, was #{@errors.join("\n")}"
|
48
|
+
end
|
49
|
+
end
|
@@ -245,11 +245,11 @@ Test
|
|
245
245
|
<a href='#subj_0'>RDF::Turtle</a>
|
246
246
|
</th>
|
247
247
|
</tr>
|
248
|
-
<tr inlist='inlist' rel='mf:entries' resource='http://example/manifest.ttl#testeval00' typeof='
|
248
|
+
<tr inlist='inlist' rel='mf:entries' resource='http://example/manifest.ttl#testeval00' typeof='http://www.w3.org/ns/rdftest#TestTurtleEval TestCase TestCriterion'>
|
249
249
|
<td>
|
250
250
|
<a href='#test_1fdd82ac4caf30510cabfdb0a5987ddd'>subm-test-00</a>
|
251
251
|
</td>
|
252
|
-
<td class='PASS'
|
252
|
+
<td class='PASS' typeof='Assertion'>
|
253
253
|
<link href='https://greggkellogg.net/foaf#me' property='earl:assertedBy' />
|
254
254
|
<link href='http://example/manifest.ttl#testeval00' property='earl:test' />
|
255
255
|
<link href='https://rubygems.org/gems/rdf-turtle' property='earl:subject' />
|
@@ -261,11 +261,11 @@ PASS
|
|
261
261
|
</span>
|
262
262
|
</td>
|
263
263
|
</tr>
|
264
|
-
<tr inlist='inlist' rel='mf:entries' resource='_:
|
264
|
+
<tr inlist='inlist' rel='mf:entries' resource='_:b1' typeof='http://www.w3.org/ns/rdftest#TestTurtleEval TestCase TestCriterion'>
|
265
265
|
<td>
|
266
|
-
<a href='#
|
266
|
+
<a href='#test_b4d4f9531721bf1a6e4562f27353abd3'>subm-test-01</a>
|
267
267
|
</td>
|
268
|
-
<td class='UNTESTED'
|
268
|
+
<td class='UNTESTED' typeof='Assertion'>
|
269
269
|
<link href='https://rubygems.org/gems/rdf-turtle' property='earl:subject' />
|
270
270
|
<span property='earl:result' typeof='TestResult'>
|
271
271
|
<span property='earl:outcome' resource='earl:untested'>
|
@@ -346,7 +346,7 @@ Example Test Cases
|
|
346
346
|
</dd>
|
347
347
|
</dl>
|
348
348
|
</section>
|
349
|
-
<section class='appendix' id='individual-test-results' rel='xhv:related
|
349
|
+
<section class='appendix' id='individual-test-results' rel='xhv:related mf:report'>
|
350
350
|
<h2>
|
351
351
|
<span class='secno'>B.</span>
|
352
352
|
Individual Test Results
|
@@ -376,11 +376,11 @@ Test
|
|
376
376
|
<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>
|
377
377
|
<pre class='example resultDoc' property='mf:result' resource='http://example/test-00.out' title='subm-test-00 Result'>http://example/test-00.out not loaded</pre>
|
378
378
|
</dd>
|
379
|
-
<dt id='
|
379
|
+
<dt id='test_b4d4f9531721bf1a6e4562f27353abd3' resource='_:b1'>
|
380
380
|
Test
|
381
381
|
<span property='dc:title mf:name'>subm-test-01</span>
|
382
382
|
</dt>
|
383
|
-
<dd resource='_:
|
383
|
+
<dd resource='_:b1'>
|
384
384
|
<p property='dc:description rdfs:comment'></p>
|
385
385
|
<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>
|
386
386
|
<pre class='example resultDoc' property='mf:result' resource='http://example/test-01.out' title='subm-test-01 Result'>http://example/test-01.out not loaded</pre>
|
@@ -399,9 +399,9 @@ This report generated by
|
|
399
399
|
<meta content='Earl Report summary generator' property='doap:shortdesc' />
|
400
400
|
<meta content='EarlReport generates HTML+RDFa rollups of multiple EARL reports' property='doap:description' />
|
401
401
|
version
|
402
|
-
<span property='doap:release' resource='https://github.com/gkellogg/earl-report/tree/0.6.
|
403
|
-
<span property='doap:revision'>0.6.
|
404
|
-
<meta content='earl-report-0.6.
|
402
|
+
<span property='doap:release' resource='https://github.com/gkellogg/earl-report/tree/0.6.2' typeof='doap:Version'>
|
403
|
+
<span property='doap:revision'>0.6.2</span>
|
404
|
+
<meta content='earl-report-0.6.2' property='doap:name' />
|
405
405
|
</span>
|
406
406
|
an
|
407
407
|
<a href='http://unlicense.org' property='doap:license'>Unlicensed</a>
|
@@ -15,6 +15,7 @@
|
|
15
15
|
"@type": "@id"
|
16
16
|
},
|
17
17
|
"assertions": {
|
18
|
+
"@id": "mf:report",
|
18
19
|
"@type": "@id",
|
19
20
|
"@container": "@set"
|
20
21
|
},
|
@@ -38,6 +39,18 @@
|
|
38
39
|
"@id": "doap:description",
|
39
40
|
"@language": "en"
|
40
41
|
},
|
42
|
+
"entries": {
|
43
|
+
"@id": "mf:entries",
|
44
|
+
"@type": "@id",
|
45
|
+
"@container": "@list",
|
46
|
+
"@context": {
|
47
|
+
"assertions": {
|
48
|
+
"@reverse": "earl:test",
|
49
|
+
"@type": "@id",
|
50
|
+
"@container": "@set"
|
51
|
+
}
|
52
|
+
}
|
53
|
+
},
|
41
54
|
"generatedBy": {
|
42
55
|
"@type": "@id"
|
43
56
|
},
|
@@ -89,11 +102,6 @@
|
|
89
102
|
"title": {
|
90
103
|
"@id": "mf:name"
|
91
104
|
},
|
92
|
-
"entries": {
|
93
|
-
"@id": "mf:entries",
|
94
|
-
"@type": "@id",
|
95
|
-
"@container": "@list"
|
96
|
-
},
|
97
105
|
"testSubjects": {
|
98
106
|
"@type": "@id",
|
99
107
|
"@container": "@set"
|
@@ -107,6 +115,69 @@
|
|
107
115
|
"Software",
|
108
116
|
"doap:Project"
|
109
117
|
],
|
118
|
+
"generatedBy": {
|
119
|
+
"@id": "https://rubygems.org/gems/earl-report",
|
120
|
+
"@type": [
|
121
|
+
"Software",
|
122
|
+
"doap:Project"
|
123
|
+
],
|
124
|
+
"release": {
|
125
|
+
"@id": "https://github.com/gkellogg/earl-report/tree/0.6.2",
|
126
|
+
"@type": "doap:Version",
|
127
|
+
"doap:created": {
|
128
|
+
"@type": "http://www.w3.org/2001/XMLSchema#date",
|
129
|
+
"@value": "2021-03-25"
|
130
|
+
},
|
131
|
+
"revision": "0.6.2",
|
132
|
+
"name": "earl-report-0.6.2"
|
133
|
+
},
|
134
|
+
"language": "Ruby",
|
135
|
+
"license": "http://unlicense.org",
|
136
|
+
"name": "earl-report",
|
137
|
+
"doapDesc": "EarlReport generates HTML+RDFa rollups of multiple EARL reports",
|
138
|
+
"homepage": "https://github.com/gkellogg/earl-report",
|
139
|
+
"developer": [
|
140
|
+
{
|
141
|
+
"@id": "https://greggkellogg.net/foaf#me",
|
142
|
+
"@type": [
|
143
|
+
"foaf:Person",
|
144
|
+
"Assertor"
|
145
|
+
],
|
146
|
+
"foaf:homepage": "https://greggkellogg.net/",
|
147
|
+
"foaf:name": "Gregg Kellogg"
|
148
|
+
}
|
149
|
+
],
|
150
|
+
"shortdesc": "Earl Report summary generator"
|
151
|
+
},
|
152
|
+
"testSubjects": [
|
153
|
+
{
|
154
|
+
"@id": "https://rubygems.org/gems/rdf-turtle",
|
155
|
+
"@type": [
|
156
|
+
"TestSubject",
|
157
|
+
"Software",
|
158
|
+
"doap:Project"
|
159
|
+
],
|
160
|
+
"release": {
|
161
|
+
"@id": "_:b0",
|
162
|
+
"revision": "unknown"
|
163
|
+
},
|
164
|
+
"language": "Ruby",
|
165
|
+
"name": "RDF::Turtle",
|
166
|
+
"doapDesc": "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.",
|
167
|
+
"homepage": "http://ruby-rdf.github.com/rdf-turtle",
|
168
|
+
"developer": [
|
169
|
+
{
|
170
|
+
"@id": "https://greggkellogg.net/foaf#me",
|
171
|
+
"@type": [
|
172
|
+
"foaf:Person",
|
173
|
+
"Assertor"
|
174
|
+
],
|
175
|
+
"foaf:homepage": "https://greggkellogg.net/",
|
176
|
+
"foaf:name": "Gregg Kellogg"
|
177
|
+
}
|
178
|
+
]
|
179
|
+
}
|
180
|
+
],
|
110
181
|
"assertions": [
|
111
182
|
"/Users/gregg/Projects/earl-report/spec/test-files/report-complete.ttl"
|
112
183
|
],
|
@@ -125,120 +196,57 @@
|
|
125
196
|
{
|
126
197
|
"@id": "http://example/manifest.ttl#testeval00",
|
127
198
|
"@type": [
|
128
|
-
"
|
199
|
+
"http://www.w3.org/ns/rdftest#TestTurtleEval",
|
129
200
|
"TestCase",
|
130
|
-
"
|
201
|
+
"TestCriterion"
|
131
202
|
],
|
132
203
|
"rdfs:comment": "Blank subject",
|
204
|
+
"testResult": "http://example/test-00.out",
|
133
205
|
"title": "subm-test-00",
|
206
|
+
"testAction": "http://example/test-00.ttl",
|
134
207
|
"assertions": [
|
135
208
|
{
|
136
|
-
"@id": "_:
|
209
|
+
"@id": "_:b2",
|
137
210
|
"@type": "Assertion",
|
138
|
-
"
|
139
|
-
"subject": "https://rubygems.org/gems/rdf-turtle",
|
211
|
+
"test": "http://example/manifest.ttl#testeval00",
|
140
212
|
"result": {
|
141
|
-
"@id": "_:
|
213
|
+
"@id": "_:b3",
|
142
214
|
"@type": "TestResult",
|
143
215
|
"outcome": "earl:passed"
|
144
216
|
},
|
145
217
|
"mode": "earl:automatic",
|
146
|
-
"
|
218
|
+
"subject": "https://rubygems.org/gems/rdf-turtle",
|
219
|
+
"assertedBy": "https://greggkellogg.net/foaf#me"
|
147
220
|
}
|
148
|
-
]
|
149
|
-
"testResult": "http://example/test-00.out",
|
150
|
-
"testAction": "http://example/test-00.ttl"
|
221
|
+
]
|
151
222
|
},
|
152
223
|
{
|
153
|
-
"@id": "_:
|
224
|
+
"@id": "_:b1",
|
154
225
|
"@type": [
|
155
|
-
"
|
226
|
+
"http://www.w3.org/ns/rdftest#TestTurtleEval",
|
156
227
|
"TestCase",
|
157
|
-
"
|
228
|
+
"TestCriterion"
|
158
229
|
],
|
159
230
|
"rdfs:comment": "@prefix and qnames",
|
231
|
+
"testResult": "http://example/test-01.out",
|
160
232
|
"title": "subm-test-01",
|
233
|
+
"testAction": "http://example/test-01.ttl",
|
161
234
|
"assertions": [
|
162
235
|
{
|
163
|
-
"@id": "_:
|
236
|
+
"@id": "_:b4",
|
164
237
|
"@type": "Assertion",
|
165
|
-
"
|
238
|
+
"test": "_:b1",
|
166
239
|
"result": {
|
167
240
|
"@id": "_:b5",
|
168
241
|
"@type": "TestResult",
|
169
242
|
"outcome": "earl:untested"
|
170
243
|
},
|
171
|
-
"
|
244
|
+
"subject": "https://rubygems.org/gems/rdf-turtle",
|
172
245
|
"assertedBy": null
|
173
246
|
}
|
174
|
-
]
|
175
|
-
"testResult": "http://example/test-01.out",
|
176
|
-
"testAction": "http://example/test-01.ttl"
|
247
|
+
]
|
177
248
|
}
|
178
249
|
]
|
179
250
|
}
|
180
|
-
],
|
181
|
-
"generatedBy": {
|
182
|
-
"@id": "https://rubygems.org/gems/earl-report",
|
183
|
-
"@type": [
|
184
|
-
"Software",
|
185
|
-
"doap:Project"
|
186
|
-
],
|
187
|
-
"license": "http://unlicense.org",
|
188
|
-
"developer": [
|
189
|
-
{
|
190
|
-
"@id": "https://greggkellogg.net/foaf#me",
|
191
|
-
"@type": [
|
192
|
-
"foaf:Person",
|
193
|
-
"Assertor"
|
194
|
-
],
|
195
|
-
"foaf:homepage": "https://greggkellogg.net/",
|
196
|
-
"foaf:name": "Gregg Kellogg"
|
197
|
-
}
|
198
|
-
],
|
199
|
-
"homepage": "https://github.com/gkellogg/earl-report",
|
200
|
-
"shortdesc": "Earl Report summary generator",
|
201
|
-
"doapDesc": "EarlReport generates HTML+RDFa rollups of multiple EARL reports",
|
202
|
-
"name": "earl-report",
|
203
|
-
"release": {
|
204
|
-
"@id": "https://github.com/gkellogg/earl-report/tree/0.6.1",
|
205
|
-
"@type": "doap:Version",
|
206
|
-
"doap:created": {
|
207
|
-
"@type": "http://www.w3.org/2001/XMLSchema#date",
|
208
|
-
"@value": "2021-03-19"
|
209
|
-
},
|
210
|
-
"revision": "0.6.1",
|
211
|
-
"name": "earl-report-0.6.1"
|
212
|
-
},
|
213
|
-
"language": "Ruby"
|
214
|
-
},
|
215
|
-
"testSubjects": [
|
216
|
-
{
|
217
|
-
"@id": "https://rubygems.org/gems/rdf-turtle",
|
218
|
-
"@type": [
|
219
|
-
"TestSubject",
|
220
|
-
"Software",
|
221
|
-
"doap:Project"
|
222
|
-
],
|
223
|
-
"developer": [
|
224
|
-
{
|
225
|
-
"@id": "https://greggkellogg.net/foaf#me",
|
226
|
-
"@type": [
|
227
|
-
"foaf:Person",
|
228
|
-
"Assertor"
|
229
|
-
],
|
230
|
-
"foaf:homepage": "https://greggkellogg.net/",
|
231
|
-
"foaf:name": "Gregg Kellogg"
|
232
|
-
}
|
233
|
-
],
|
234
|
-
"homepage": "http://ruby-rdf.github.com/rdf-turtle",
|
235
|
-
"language": "Ruby",
|
236
|
-
"doapDesc": "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.",
|
237
|
-
"name": "RDF::Turtle",
|
238
|
-
"release": {
|
239
|
-
"@id": "_:b0",
|
240
|
-
"revision": "unknown"
|
241
|
-
}
|
242
|
-
}
|
243
251
|
]
|
244
252
|
}
|
data/spec/test-files/results.ttl
CHANGED
@@ -8,12 +8,12 @@
|
|
8
8
|
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
9
9
|
|
10
10
|
<> a earl:Software, doap:Project ;
|
11
|
-
earl:
|
11
|
+
earl:generatedBy <https://rubygems.org/gems/earl-report> ;
|
12
|
+
earl:testSubjects <https://rubygems.org/gems/rdf-turtle> ;
|
13
|
+
mf:report </Users/gregg/Projects/earl-report/spec/test-files/report-complete.ttl> ;
|
12
14
|
dc:bibliographicCitation "[[TURTLE]]" ;
|
13
15
|
doap:name "Turtle Test Results" ;
|
14
|
-
mf:entries (<http://example/manifest.ttl>)
|
15
|
-
earl:generatedBy <https://rubygems.org/gems/earl-report> ;
|
16
|
-
earl:testSubjects <https://rubygems.org/gems/rdf-turtle> .
|
16
|
+
mf:entries (<http://example/manifest.ttl>) .
|
17
17
|
|
18
18
|
# Manifests
|
19
19
|
<http://example/manifest.ttl> a earl:Report, mf:Manifest ;
|
@@ -22,9 +22,11 @@
|
|
22
22
|
mf:entries (<http://example/manifest.ttl#testeval00>
|
23
23
|
_:b1) .
|
24
24
|
|
25
|
-
<http://example/manifest.ttl#testeval00> a
|
25
|
+
<http://example/manifest.ttl#testeval00> a <http://www.w3.org/ns/rdftest#TestTurtleEval>, earl:TestCase, earl:TestCriterion ;
|
26
26
|
rdfs:comment "Blank subject" ;
|
27
|
+
mf:result <http://example/test-00.out> ;
|
27
28
|
mf:name "subm-test-00" ;
|
29
|
+
mf:action <http://example/test-00.ttl> ;
|
28
30
|
earl:assertions [
|
29
31
|
a earl:Assertion ;
|
30
32
|
earl:test <http://example/manifest.ttl#testeval00> ;
|
@@ -34,13 +36,13 @@
|
|
34
36
|
earl:outcome earl:passed
|
35
37
|
] ;
|
36
38
|
earl:assertedBy <https://greggkellogg.net/foaf#me> ;
|
37
|
-
]
|
38
|
-
mf:result <http://example/test-00.out> ;
|
39
|
-
mf:action <http://example/test-00.ttl> .
|
39
|
+
] .
|
40
40
|
|
41
|
-
_:b1 a
|
41
|
+
_:b1 a <http://www.w3.org/ns/rdftest#TestTurtleEval>, earl:TestCase, earl:TestCriterion ;
|
42
42
|
rdfs:comment "@prefix and qnames" ;
|
43
|
+
mf:result <http://example/test-01.out> ;
|
43
44
|
mf:name "subm-test-01" ;
|
45
|
+
mf:action <http://example/test-01.ttl> ;
|
44
46
|
earl:assertions [
|
45
47
|
a earl:Assertion ;
|
46
48
|
earl:test _:b1 ;
|
@@ -49,17 +51,15 @@ _:b1 a earl:TestCriterion, earl:TestCase, <http://www.w3.org/ns/rdftest#TestTurt
|
|
49
51
|
a earl:TestResult ;
|
50
52
|
earl:outcome earl:untested
|
51
53
|
] ;
|
52
|
-
]
|
53
|
-
mf:result <http://example/test-01.out> ;
|
54
|
-
mf:action <http://example/test-01.ttl> .
|
54
|
+
] .
|
55
55
|
|
56
56
|
<https://rubygems.org/gems/rdf-turtle> a earl:TestSubject, earl:Software, doap:Project ;
|
57
|
-
doap:
|
58
|
-
doap:homepage <http://ruby-rdf.github.com/rdf-turtle> ;
|
57
|
+
doap:release [doap:revision "unknown"] ;
|
59
58
|
doap:programming-language "Ruby" ;
|
60
|
-
doap:description "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
|
61
59
|
doap:name "RDF::Turtle" ;
|
62
|
-
doap:
|
60
|
+
doap:description "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
|
61
|
+
doap:homepage <http://ruby-rdf.github.com/rdf-turtle> ;
|
62
|
+
doap:developer <https://greggkellogg.net/foaf#me> .
|
63
63
|
|
64
64
|
<https://greggkellogg.net/foaf#me> a foaf:Person, earl:Assertor ;
|
65
65
|
foaf:homepage <https://greggkellogg.net/> ;
|
@@ -74,10 +74,10 @@ _:b1 a earl:TestCriterion, earl:TestCase, <http://www.w3.org/ns/rdftest#TestTurt
|
|
74
74
|
doap:homepage <https://github.com/gkellogg/earl-report>;
|
75
75
|
doap:programming-language "Ruby";
|
76
76
|
doap:license <http://unlicense.org>;
|
77
|
-
doap:release <https://github.com/gkellogg/earl-report/tree/0.6.
|
77
|
+
doap:release <https://github.com/gkellogg/earl-report/tree/0.6.2>;
|
78
78
|
doap:developer <https://greggkellogg.net/foaf#me> .
|
79
79
|
|
80
|
-
<https://github.com/gkellogg/earl-report/tree/0.6.
|
81
|
-
doap:name "earl-report-0.6.
|
82
|
-
doap:created "2021-03-
|
83
|
-
doap:revision "0.6.
|
80
|
+
<https://github.com/gkellogg/earl-report/tree/0.6.2> a doap:Version;
|
81
|
+
doap:name "earl-report-0.6.2";
|
82
|
+
doap:created "2021-03-25"^^xsd:date;
|
83
|
+
doap:revision "0.6.2" .
|
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.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
@@ -45,6 +45,9 @@ dependencies:
|
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '3.1'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 3.1.13
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -52,6 +55,9 @@ dependencies:
|
|
52
55
|
- - "~>"
|
53
56
|
- !ruby/object:Gem::Version
|
54
57
|
version: '3.1'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 3.1.13
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: json-ld
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,33 +115,19 @@ dependencies:
|
|
109
115
|
- !ruby/object:Gem::Version
|
110
116
|
version: '2.3'
|
111
117
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
118
|
+
name: nokogumbo
|
113
119
|
requirement: !ruby/object:Gem::Requirement
|
114
120
|
requirements:
|
115
121
|
- - "~>"
|
116
122
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
118
|
-
type: :
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '1.10'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rexml
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '3.2'
|
132
|
-
type: :runtime
|
123
|
+
version: '2.0'
|
124
|
+
type: :development
|
133
125
|
prerelease: false
|
134
126
|
version_requirements: !ruby/object:Gem::Requirement
|
135
127
|
requirements:
|
136
128
|
- - "~>"
|
137
129
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
130
|
+
version: '2.0'
|
139
131
|
- !ruby/object:Gem::Dependency
|
140
132
|
name: rdf-rdfa
|
141
133
|
requirement: !ruby/object:Gem::Requirement
|