earl-report 0.4.9 → 0.5.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 +5 -0
- data/VERSION +1 -1
- data/lib/earl_report.rb +59 -57
- data/lib/earl_report/views/earl_report.html.haml +9 -6
- data/spec/spec_helper.rb +1 -0
- data/spec/test-files/results.html +12 -14
- data/spec/test-files/results.jsonld +87 -87
- data/spec/test-files/results.ttl +18 -18
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49a823f243638c7162903264e52f226f6f02e8e85943f1a4cd97a12594b080ab
|
4
|
+
data.tar.gz: b4855bcd3dbddc0e3b8eff04dbfd1ff8e8ed062827878471268e11b0fd509dbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c971edc43f724554263423eb192fde98aa810cf2eaed21a5349f3199e765550087e8ce34ee0e8191c073b075415cf49f40ae5905b41bcc5954b0221fb7667c36
|
7
|
+
data.tar.gz: bf787b883a24228aab04490fb93b32e26b9763dd67e00565f61040b0a1bfd0e1bef4a41e91353182c685c5bf7913e8c5d17a141feeac691abfb7d3b36695bc91
|
data/README.md
CHANGED
@@ -34,6 +34,11 @@ of the reported software, in the following form:
|
|
34
34
|
doap:developer <http://greggkellogg.net/foaf#me> ;
|
35
35
|
doap:homepage <http://ruby-rdf.github.com/rdf-turtle> ;
|
36
36
|
doap:description "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
|
37
|
+
doap:release [
|
38
|
+
doap:name "RDF::Turtle 3.1.0" ;
|
39
|
+
doap:created "2015-09-27"^^xsd:date ;
|
40
|
+
doap:revision "3.1.0"
|
41
|
+
] ;
|
37
42
|
doap:programming-language "Ruby" .
|
38
43
|
|
39
44
|
The [DOAP]() description may be included in the [EARL]() report. If not found,
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/lib/earl_report.rb
CHANGED
@@ -33,13 +33,14 @@ class EarlReport
|
|
33
33
|
PREFIX doap: <http://usefulinc.com/ns/doap#>
|
34
34
|
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
35
35
|
|
36
|
-
SELECT DISTINCT ?uri ?name ?doapDesc ?revision ?homepage ?language ?developer ?devName ?devType ?devHomepage
|
36
|
+
SELECT DISTINCT ?uri ?name ?doapDesc ?release ?revision ?homepage ?language ?developer ?devName ?devType ?devHomepage
|
37
37
|
WHERE {
|
38
38
|
?uri a doap:Project; doap:name ?name; doap:developer ?developer .
|
39
39
|
OPTIONAL { ?uri doap:homepage ?homepage . }
|
40
40
|
OPTIONAL { ?uri doap:description ?doapDesc . }
|
41
41
|
OPTIONAL { ?uri doap:programming-language ?language . }
|
42
|
-
OPTIONAL { ?uri doap:release
|
42
|
+
OPTIONAL { ?uri doap:release ?release . }
|
43
|
+
OPTIONAL { ?release doap:revision ?revision .}
|
43
44
|
OPTIONAL { ?developer a ?devType .}
|
44
45
|
OPTIONAL { ?developer foaf:name ?devName .}
|
45
46
|
OPTIONAL { ?developer foaf:homepage ?devHomepage .}
|
@@ -220,7 +221,14 @@ class EarlReport
|
|
220
221
|
test_resources = tests.values.map {|v| v[:uri]}.uniq.compact
|
221
222
|
subjects = {}
|
222
223
|
|
223
|
-
|
224
|
+
# Initialize test assertions with an entry for each test subject
|
225
|
+
test_assertion_lists = {}
|
226
|
+
test_assertion_lists = tests.keys.inject({}) do |memo, test|
|
227
|
+
memo.merge(test => [])
|
228
|
+
end
|
229
|
+
|
230
|
+
assertion_stats = {}
|
231
|
+
|
224
232
|
# Read test assertion files into assertion graph
|
225
233
|
files.flatten.each do |file|
|
226
234
|
status "read #{file}"
|
@@ -237,10 +245,10 @@ class EarlReport
|
|
237
245
|
|
238
246
|
# Load DOAP definitions
|
239
247
|
unless solution[:name] # not loaded
|
240
|
-
status "read doap description for #{subject}"
|
248
|
+
status " read doap description for #{subject}"
|
241
249
|
begin
|
242
250
|
doap_graph = RDF::Graph.load(subject)
|
243
|
-
status "
|
251
|
+
status " loaded #{doap_graph.count} triples"
|
244
252
|
file_graph << doap_graph.to_a
|
245
253
|
rescue
|
246
254
|
warn "\nfailed to load DOAP from #{subject}: #{$!}"
|
@@ -260,10 +268,10 @@ class EarlReport
|
|
260
268
|
if !solutions.first[:developer]
|
261
269
|
warn "\nNo developer identified for #{solutions.first[:uri]}"
|
262
270
|
elsif !solutions.first[:devName]
|
263
|
-
status "read description for developer #{solutions.first[:developer].inspect}"
|
271
|
+
status " read description for developer #{solutions.first[:developer].inspect}"
|
264
272
|
begin
|
265
273
|
foaf_graph = RDF::Graph.load(solutions.first[:developer])
|
266
|
-
status "
|
274
|
+
status " loaded #{foaf_graph.count} triples"
|
267
275
|
file_graph << foaf_graph.to_a
|
268
276
|
# Reload solutions
|
269
277
|
solutions = SPARQL.execute(TEST_SUBJECT_QUERY, file_graph)
|
@@ -272,6 +280,7 @@ class EarlReport
|
|
272
280
|
end
|
273
281
|
end
|
274
282
|
|
283
|
+
release = nil
|
275
284
|
solutions.each do |solution|
|
276
285
|
# Kepp track of subjects
|
277
286
|
subjects[solution[:uri]] = RDF::URI(file)
|
@@ -294,59 +303,55 @@ class EarlReport
|
|
294
303
|
graph << RDF::Statement(solution[:developer], RDF::Vocab::FOAF.name, devName) if devName
|
295
304
|
graph << RDF::Statement(solution[:developer], RDF::Vocab::FOAF.homepage, solution[:devHomepage]) if solution[:devHomepage]
|
296
305
|
|
297
|
-
|
298
|
-
graph << RDF::Statement(solution[:uri], RDF::Vocab::DOAP.release,
|
299
|
-
graph << RDF::Statement(
|
306
|
+
release ||= solution[:release] || RDF::Node.new
|
307
|
+
graph << RDF::Statement(solution[:uri], RDF::Vocab::DOAP.release, release)
|
308
|
+
graph << RDF::Statement(release, RDF::Vocab::DOAP.revision, (solution[:revision] || "unknown"))
|
300
309
|
end
|
301
310
|
|
302
|
-
|
303
|
-
|
304
|
-
|
311
|
+
# Make sure that each assertion matches a test and add reference from test to assertion
|
312
|
+
found_solutions = false
|
313
|
+
subject = nil
|
305
314
|
|
306
|
-
|
307
|
-
|
315
|
+
status " query assertions"
|
316
|
+
SPARQL.execute(ASSERTION_QUERY, file_graph).each do |solution|
|
317
|
+
subject = solution[:subject]
|
318
|
+
unless tests[solution[:test]]
|
319
|
+
assertion_stats["Skipped"] = assertion_stats["Skipped"].to_i + 1
|
320
|
+
$stderr.puts "Skipping result for #{solution[:test]} for #{subject}, which is not defined in manifests"
|
321
|
+
next
|
322
|
+
end
|
323
|
+
unless subjects[subject]
|
324
|
+
assertion_stats["Missing Subject"] = assertion_stats["Missing Subject"].to_i + 1
|
325
|
+
$stderr.puts "No test result subject found for #{subject}: in #{subjects.keys.join(', ')}"
|
326
|
+
next
|
327
|
+
end
|
328
|
+
found_solutions ||= true
|
329
|
+
assertion_stats["Found"] = assertion_stats["Found"].to_i + 1
|
308
330
|
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
memo.merge(test => Array.new(subjects.length))
|
313
|
-
end
|
331
|
+
# Add this solution at the appropriate index within that list
|
332
|
+
ndx = subjects.keys.find_index(subject)
|
333
|
+
ary = test_assertion_lists[solution[:test]]
|
314
334
|
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
335
|
+
ary[ndx] = a = RDF::Node.new
|
336
|
+
graph << RDF::Statement(a, RDF.type, EARL.Assertion)
|
337
|
+
graph << RDF::Statement(a, EARL.subject, subject)
|
338
|
+
graph << RDF::Statement(a, EARL.test, solution[:test])
|
339
|
+
graph << RDF::Statement(a, EARL.assertedBy, solution[:by])
|
340
|
+
graph << RDF::Statement(a, EARL.mode, solution[:mode]) if solution[:mode]
|
341
|
+
r = RDF::Node.new
|
342
|
+
graph << RDF::Statement(a, EARL.result, r)
|
343
|
+
graph << RDF::Statement(r, RDF.type, EARL.TestResult)
|
344
|
+
graph << RDF::Statement(r, EARL.outcome, solution[:outcome])
|
345
|
+
end
|
346
|
+
|
347
|
+
# See if subject did not report results, which may indicate a formatting error in the EARL source
|
348
|
+
$stderr.puts "No results found for #{subject} using #{ASSERTION_QUERY}" unless found_solutions
|
328
349
|
end
|
329
|
-
found_solutions[subject] = true
|
330
|
-
assertion_stats["Found"] = assertion_stats["Found"].to_i + 1
|
331
|
-
|
332
|
-
# Add this solution at the appropriate index within that list
|
333
|
-
ndx = subjects.keys.find_index(subject)
|
334
|
-
ary = test_assertion_lists[solution[:test]] ||= []
|
335
|
-
|
336
|
-
ary[ndx] = a = RDF::Node.new
|
337
|
-
graph << RDF::Statement(a, RDF.type, EARL.Assertion)
|
338
|
-
graph << RDF::Statement(a, EARL.subject, subject)
|
339
|
-
graph << RDF::Statement(a, EARL.test, solution[:test])
|
340
|
-
graph << RDF::Statement(a, EARL.assertedBy, solution[:by])
|
341
|
-
graph << RDF::Statement(a, EARL.mode, solution[:mode]) if solution[:mode]
|
342
|
-
r = RDF::Node.new
|
343
|
-
graph << RDF::Statement(a, EARL.result, r)
|
344
|
-
graph << RDF::Statement(r, RDF.type, EARL.TestResult)
|
345
|
-
graph << RDF::Statement(r, EARL.outcome, solution[:outcome])
|
346
350
|
end
|
347
351
|
|
348
352
|
# Add ordered assertions for each test
|
349
353
|
test_assertion_lists.each do |test, ary|
|
354
|
+
ary[subjects.length - 1] ||= nil # extend for all subjects
|
350
355
|
# Fill any missing entries with an untested outcome
|
351
356
|
ary.each_with_index do |a, ndx|
|
352
357
|
unless a
|
@@ -368,11 +373,6 @@ class EarlReport
|
|
368
373
|
|
369
374
|
assertion_stats.each {|stat, count| status("Assertions #{stat}: #{count}")}
|
370
375
|
|
371
|
-
# See if any subject did not report results, which may indicate a formatting error in the EARL source
|
372
|
-
subjects.reject {|s| found_solutions[s]}.each do |sub|
|
373
|
-
$stderr.puts "No results found for #{sub} using #{ASSERTION_QUERY}"
|
374
|
-
end
|
375
|
-
|
376
376
|
# Add report wrapper to graph
|
377
377
|
ttl = %(
|
378
378
|
@prefix dc: <http://purl.org/dc/terms/> .
|
@@ -482,9 +482,11 @@ class EarlReport
|
|
482
482
|
@json_hash ||= begin
|
483
483
|
# Customized JSON-LD output
|
484
484
|
result = JSON::LD::API.fromRDF(graph) do |expanded|
|
485
|
-
framed = JSON::LD::API.frame(expanded, TEST_FRAME,
|
485
|
+
framed = JSON::LD::API.frame(expanded, TEST_FRAME,
|
486
|
+
expanded: true,
|
487
|
+
embed: '@never',
|
488
|
+
pruneBlankNodeIdentifiers: false)
|
486
489
|
# Reorder test subjects by @id
|
487
|
-
#require 'byebug'; byebug
|
488
490
|
framed['testSubjects'] = framed['testSubjects'].sort_by {|t| t['@id']}
|
489
491
|
|
490
492
|
# Reorder test assertions to make them consistent with subject order
|
@@ -334,10 +334,12 @@
|
|
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
336
|
%td{class: pass_fail, property: "earl:assertions", typeof: assertion['@type']}
|
337
|
-
- if assertion['assertedBy']
|
337
|
+
- if assertion['assertedBy'] && !assertion['assertedBy'].start_with?('_:')
|
338
338
|
%link{property: "earl:assertedBy", href: assertion['assertedBy']}
|
339
|
-
|
340
|
-
|
339
|
+
- if assertion['test'] && !assertion['test'].start_with?('_:')
|
340
|
+
%link{property: "earl:test", href: assertion['test']}
|
341
|
+
- if assertion['subject'] && !assertion['subject'].start_with?('_:')
|
342
|
+
%link{property: "earl:subject", href: assertion['subject']}
|
341
343
|
- if assertion['mode']
|
342
344
|
%link{property: 'earl:mode', href: assertion['mode']}
|
343
345
|
%span{property: "earl:result", typeof: assertion['result']['@type']}
|
@@ -443,10 +445,10 @@
|
|
443
445
|
%p{property: "dc:description rdfs:comment"}<
|
444
446
|
~ CGI.escapeHTML test['description'].to_s
|
445
447
|
%pre{class: "example actionDoc", property: "mf:action", resource: test['testAction'], title: "#{test['title']} Input"}<
|
446
|
-
~
|
448
|
+
~ URI.open(test['testAction']) {|f| f.set_encoding(Encoding::UTF_8); CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testAction']} not loaded"
|
447
449
|
- if test['testResult']
|
448
450
|
%pre{class: "example resultDoc", property: "mf:result", resource: test['testResult'], title: "#{test['title']} Result"}<
|
449
|
-
~
|
451
|
+
~ URI.open(test['testResult']) {|f| f.set_encoding(Encoding::UTF_8); CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testResult']} not loaded"
|
450
452
|
%section.appendix#report-generation-software{property: "earl:generatedBy", resource: tests['generatedBy']['@id'], typeof: tests['generatedBy']['@type'].join(' ')}
|
451
453
|
%h2
|
452
454
|
%span.secno="D."
|
@@ -464,7 +466,8 @@
|
|
464
466
|
%span{property: "doap:release", resource: rel['@id'], typeof: 'doap:Version'}
|
465
467
|
%span{property: "doap:revision"}<=rel['revision']
|
466
468
|
%meta{property: "doap:name", content: rel['name']}
|
467
|
-
|
469
|
+
- if rel['created']
|
470
|
+
%meta{property: "doap:created", content: rel['created'], datatype: "xsd:date"}
|
468
471
|
an
|
469
472
|
%a{property: "doap:license", href: doap['license']}<="Unlicensed"
|
470
473
|
%span{property: "doap:programming-language"}<="Ruby"
|
data/spec/spec_helper.rb
CHANGED
@@ -73,8 +73,8 @@ Implementation Report
|
|
73
73
|
<h2 id='w3c-document-28-october-2015'>
|
74
74
|
<abbr title='World Wide Web Consortium'>W3C</abbr>
|
75
75
|
Document
|
76
|
-
<time class='dt-published' datetime='2020-
|
77
|
-
|
76
|
+
<time class='dt-published' datetime='2020-04-10' property='dc:issued'>
|
77
|
+
10 April 2020
|
78
78
|
</time>
|
79
79
|
</h2>
|
80
80
|
<dl>
|
@@ -231,7 +231,7 @@ Report Generation Software
|
|
231
231
|
<span class='secno'>2.</span>
|
232
232
|
Test Manifests
|
233
233
|
</h2>
|
234
|
-
<section id='Description-for-Example-Test-Cases' resource='http://example/manifest.ttl' typeof='
|
234
|
+
<section id='Description-for-Example-Test-Cases' resource='http://example/manifest.ttl' typeof='mf:Manifest Report'>
|
235
235
|
<h2>
|
236
236
|
<span class='secno'>2.1</span>
|
237
237
|
<span property='dc:title mf:name'>Example Test Cases</span>
|
@@ -245,7 +245,7 @@ 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='TestCriterion http://www.w3.org/ns/rdftest#TestTurtleEval
|
248
|
+
<tr inlist='inlist' rel='mf:entries' resource='http://example/manifest.ttl#testeval00' typeof='TestCase TestCriterion http://www.w3.org/ns/rdftest#TestTurtleEval'>
|
249
249
|
<td>
|
250
250
|
<a href='#test_1fdd82ac4caf30510cabfdb0a5987ddd'>subm-test-00</a>
|
251
251
|
</td>
|
@@ -261,12 +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='_:b4' typeof='TestCase TestCriterion http://www.w3.org/ns/rdftest#TestTurtleEval'>
|
265
265
|
<td>
|
266
|
-
<a href='#
|
266
|
+
<a href='#test_c3a45336bb3ff1ac310bee3349a6ace7'>subm-test-01</a>
|
267
267
|
</td>
|
268
268
|
<td class='UNTESTED' property='earl:assertions' typeof='Assertion'>
|
269
|
-
<link href='_:b5' property='earl:test' />
|
270
269
|
<link href='http://rubygems.org/gems/rdf-turtle' property='earl:subject' />
|
271
270
|
<span property='earl:result' typeof='TestResult'>
|
272
271
|
<span property='earl:outcome' resource='earl:untested'>
|
@@ -301,7 +300,7 @@ This report was tested using the following test subjects:
|
|
301
300
|
<span about='http://rubygems.org/gems/rdf-turtle' property='doap:name'>RDF::Turtle</span>
|
302
301
|
</a>
|
303
302
|
</dt>
|
304
|
-
<dd property='earl:testSubjects' resource='http://rubygems.org/gems/rdf-turtle' typeof='
|
303
|
+
<dd property='earl:testSubjects' resource='http://rubygems.org/gems/rdf-turtle' typeof='doap:Project TestSubject Software'>
|
305
304
|
<dl>
|
306
305
|
<dt>Description</dt>
|
307
306
|
<dd lang='en' property='doap:description'>RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.</dd>
|
@@ -377,11 +376,11 @@ Test
|
|
377
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>
|
378
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>
|
379
378
|
</dd>
|
380
|
-
<dt id='
|
379
|
+
<dt id='test_c3a45336bb3ff1ac310bee3349a6ace7' resource='_:b4'>
|
381
380
|
Test
|
382
381
|
<span property='dc:title mf:name'>subm-test-01</span>
|
383
382
|
</dt>
|
384
|
-
<dd resource='_:
|
383
|
+
<dd resource='_:b4'>
|
385
384
|
<p property='dc:description rdfs:comment'></p>
|
386
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>
|
387
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>
|
@@ -400,10 +399,9 @@ This report generated by
|
|
400
399
|
<meta content='Earl Report summary generator' property='doap:shortdesc' />
|
401
400
|
<meta content='EarlReport generates HTML+RDFa rollups of multiple EARL reports' property='doap:description' />
|
402
401
|
version
|
403
|
-
<span property='doap:release' resource='https://github.com/gkellogg/earl-report/tree/0.4.
|
404
|
-
<span property='doap:revision'>0.4.
|
405
|
-
<meta content='earl-report-0.4.
|
406
|
-
<meta datatype='xsd:date' property='doap:created' />
|
402
|
+
<span property='doap:release' resource='https://github.com/gkellogg/earl-report/tree/0.4.9' typeof='doap:Version'>
|
403
|
+
<span property='doap:revision'>0.4.9</span>
|
404
|
+
<meta content='earl-report-0.4.9' property='doap:name' />
|
407
405
|
</span>
|
408
406
|
an
|
409
407
|
<a href='http://unlicense.org' property='doap:license'>Unlicensed</a>
|
@@ -108,137 +108,137 @@
|
|
108
108
|
"Software"
|
109
109
|
],
|
110
110
|
"name": "Turtle Test Results",
|
111
|
+
"assertions": [
|
112
|
+
"/Users/gregg/Projects/earl-report/spec/test-files/report-complete.ttl"
|
113
|
+
],
|
114
|
+
"generatedBy": {
|
115
|
+
"@id": "http://rubygems.org/gems/earl-report",
|
116
|
+
"@type": [
|
117
|
+
"doap:Project",
|
118
|
+
"Software"
|
119
|
+
],
|
120
|
+
"release": {
|
121
|
+
"@id": "https://github.com/gkellogg/earl-report/tree/0.4.9",
|
122
|
+
"@type": "doap:Version",
|
123
|
+
"name": "earl-report-0.4.9",
|
124
|
+
"doap:created": {
|
125
|
+
"@value": "2020-04-01",
|
126
|
+
"@type": "http://www.w3.org/2001/XMLSchema#date"
|
127
|
+
},
|
128
|
+
"revision": "0.4.9"
|
129
|
+
},
|
130
|
+
"name": "earl-report",
|
131
|
+
"homepage": "https://github.com/gkellogg/earl-report",
|
132
|
+
"developer": [
|
133
|
+
{
|
134
|
+
"@id": "http://greggkellogg.net/foaf#me",
|
135
|
+
"@type": [
|
136
|
+
"Assertor",
|
137
|
+
"foaf:Person"
|
138
|
+
],
|
139
|
+
"foaf:homepage": "http://greggkellogg.net/",
|
140
|
+
"foaf:name": "Gregg Kellogg"
|
141
|
+
}
|
142
|
+
],
|
143
|
+
"license": "http://unlicense.org",
|
144
|
+
"doapDesc": "EarlReport generates HTML+RDFa rollups of multiple EARL reports",
|
145
|
+
"shortdesc": "Earl Report summary generator",
|
146
|
+
"language": "Ruby"
|
147
|
+
},
|
148
|
+
"testSubjects": [
|
149
|
+
{
|
150
|
+
"@id": "http://rubygems.org/gems/rdf-turtle",
|
151
|
+
"@type": [
|
152
|
+
"doap:Project",
|
153
|
+
"TestSubject",
|
154
|
+
"Software"
|
155
|
+
],
|
156
|
+
"release": {
|
157
|
+
"@id": "_:b4",
|
158
|
+
"revision": "unknown"
|
159
|
+
},
|
160
|
+
"name": "RDF::Turtle",
|
161
|
+
"homepage": "http://ruby-rdf.github.com/rdf-turtle",
|
162
|
+
"developer": [
|
163
|
+
{
|
164
|
+
"@id": "http://greggkellogg.net/foaf#me",
|
165
|
+
"@type": [
|
166
|
+
"Assertor",
|
167
|
+
"foaf:Person"
|
168
|
+
],
|
169
|
+
"foaf:homepage": "http://greggkellogg.net/",
|
170
|
+
"foaf:name": "Gregg Kellogg"
|
171
|
+
}
|
172
|
+
],
|
173
|
+
"doapDesc": "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.",
|
174
|
+
"language": "Ruby"
|
175
|
+
}
|
176
|
+
],
|
177
|
+
"bibRef": "[[TURTLE]]",
|
111
178
|
"entries": [
|
112
179
|
{
|
113
180
|
"@id": "http://example/manifest.ttl",
|
114
181
|
"@type": [
|
115
|
-
"
|
116
|
-
"
|
182
|
+
"mf:Manifest",
|
183
|
+
"Report"
|
117
184
|
],
|
118
|
-
"title": "Example Test Cases",
|
119
185
|
"rdfs:comment": "Description for Example Test Cases",
|
186
|
+
"title": "Example Test Cases",
|
120
187
|
"entries": [
|
121
188
|
{
|
122
189
|
"@id": "http://example/manifest.ttl#testeval00",
|
123
190
|
"@type": [
|
191
|
+
"TestCase",
|
124
192
|
"TestCriterion",
|
125
|
-
"http://www.w3.org/ns/rdftest#TestTurtleEval"
|
126
|
-
"TestCase"
|
193
|
+
"http://www.w3.org/ns/rdftest#TestTurtleEval"
|
127
194
|
],
|
128
|
-
"title": "subm-test-00",
|
129
195
|
"rdfs:comment": "Blank subject",
|
130
|
-
"
|
196
|
+
"title": "subm-test-00",
|
131
197
|
"assertions": [
|
132
198
|
{
|
199
|
+
"@id": "_:b2",
|
133
200
|
"@type": "Assertion",
|
134
201
|
"mode": "earl:automatic",
|
202
|
+
"test": "http://example/manifest.ttl#testeval00",
|
203
|
+
"subject": "http://rubygems.org/gems/rdf-turtle",
|
135
204
|
"result": {
|
205
|
+
"@id": "_:b1",
|
136
206
|
"@type": "TestResult",
|
137
207
|
"outcome": "earl:passed"
|
138
208
|
},
|
139
|
-
"
|
140
|
-
"assertedBy": "http://greggkellogg.net/foaf#me",
|
141
|
-
"subject": "http://rubygems.org/gems/rdf-turtle"
|
209
|
+
"assertedBy": "http://greggkellogg.net/foaf#me"
|
142
210
|
}
|
143
211
|
],
|
212
|
+
"testAction": "http://example/test-00.ttl",
|
144
213
|
"testResult": "http://example/test-00.out"
|
145
214
|
},
|
146
215
|
{
|
147
|
-
"@id": "_:
|
216
|
+
"@id": "_:b0",
|
148
217
|
"@type": [
|
218
|
+
"TestCase",
|
149
219
|
"TestCriterion",
|
150
|
-
"http://www.w3.org/ns/rdftest#TestTurtleEval"
|
151
|
-
"TestCase"
|
220
|
+
"http://www.w3.org/ns/rdftest#TestTurtleEval"
|
152
221
|
],
|
153
|
-
"title": "subm-test-01",
|
154
222
|
"rdfs:comment": "@prefix and qnames",
|
155
|
-
"
|
223
|
+
"title": "subm-test-01",
|
156
224
|
"assertions": [
|
157
225
|
{
|
226
|
+
"@id": "_:b3",
|
158
227
|
"@type": "Assertion",
|
159
228
|
"result": {
|
229
|
+
"@id": "_:b5",
|
160
230
|
"@type": "TestResult",
|
161
231
|
"outcome": "earl:untested"
|
162
232
|
},
|
163
|
-
"test": "_:
|
233
|
+
"test": "_:b0",
|
164
234
|
"subject": "http://rubygems.org/gems/rdf-turtle",
|
165
235
|
"assertedBy": null
|
166
236
|
}
|
167
237
|
],
|
238
|
+
"testAction": "http://example/test-01.ttl",
|
168
239
|
"testResult": "http://example/test-01.out"
|
169
240
|
}
|
170
241
|
]
|
171
242
|
}
|
172
|
-
],
|
173
|
-
"generatedBy": {
|
174
|
-
"@id": "http://rubygems.org/gems/earl-report",
|
175
|
-
"@type": [
|
176
|
-
"doap:Project",
|
177
|
-
"Software"
|
178
|
-
],
|
179
|
-
"doapDesc": "EarlReport generates HTML+RDFa rollups of multiple EARL reports",
|
180
|
-
"shortdesc": "Earl Report summary generator",
|
181
|
-
"name": "earl-report",
|
182
|
-
"developer": [
|
183
|
-
{
|
184
|
-
"@id": "http://greggkellogg.net/foaf#me",
|
185
|
-
"@type": [
|
186
|
-
"Assertor",
|
187
|
-
"foaf:Person"
|
188
|
-
],
|
189
|
-
"foaf:name": "Gregg Kellogg",
|
190
|
-
"foaf:homepage": "http://greggkellogg.net/"
|
191
|
-
}
|
192
|
-
],
|
193
|
-
"homepage": "https://github.com/gkellogg/earl-report",
|
194
|
-
"release": {
|
195
|
-
"@id": "https://github.com/gkellogg/earl-report/tree/0.4.8",
|
196
|
-
"@type": "doap:Version",
|
197
|
-
"doap:created": {
|
198
|
-
"@value": "2019-09-06",
|
199
|
-
"@type": "http://www.w3.org/2001/XMLSchema#date"
|
200
|
-
},
|
201
|
-
"name": "earl-report-0.4.8",
|
202
|
-
"revision": "0.4.8"
|
203
|
-
},
|
204
|
-
"language": "Ruby",
|
205
|
-
"license": "http://unlicense.org"
|
206
|
-
},
|
207
|
-
"testSubjects": [
|
208
|
-
{
|
209
|
-
"@id": "http://rubygems.org/gems/rdf-turtle",
|
210
|
-
"@type": [
|
211
|
-
"TestSubject",
|
212
|
-
"doap:Project",
|
213
|
-
"Software"
|
214
|
-
],
|
215
|
-
"doapDesc": "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.",
|
216
|
-
"name": "RDF::Turtle",
|
217
|
-
"developer": [
|
218
|
-
{
|
219
|
-
"@id": "http://greggkellogg.net/foaf#me",
|
220
|
-
"@type": [
|
221
|
-
"Assertor",
|
222
|
-
"foaf:Person"
|
223
|
-
],
|
224
|
-
"foaf:name": "Gregg Kellogg",
|
225
|
-
"foaf:homepage": "http://greggkellogg.net/"
|
226
|
-
}
|
227
|
-
],
|
228
|
-
"homepage": "http://ruby-rdf.github.com/rdf-turtle",
|
229
|
-
"release": [
|
230
|
-
{
|
231
|
-
"revision": "unknown"
|
232
|
-
},
|
233
|
-
{
|
234
|
-
"revision": "unknown"
|
235
|
-
}
|
236
|
-
],
|
237
|
-
"language": "Ruby"
|
238
|
-
}
|
239
|
-
],
|
240
|
-
"bibRef": "[[TURTLE]]",
|
241
|
-
"assertions": [
|
242
|
-
"/Users/gregg/Projects/earl-report/spec/test-files/report-complete.ttl"
|
243
243
|
]
|
244
244
|
}
|
data/spec/test-files/results.ttl
CHANGED
@@ -18,15 +18,15 @@
|
|
18
18
|
|
19
19
|
# Manifests
|
20
20
|
|
21
|
-
<http://example/manifest.ttl> a
|
22
|
-
|
21
|
+
<http://example/manifest.ttl> a mf:Manifest,
|
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> _:g407680);
|
25
25
|
mf:name "Example Test Cases" .
|
26
26
|
|
27
|
-
<http://example/manifest.ttl#testeval00> a earl:
|
28
|
-
|
29
|
-
|
27
|
+
<http://example/manifest.ttl#testeval00> a earl:TestCase,
|
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
|
+
_:g407680 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,20 +57,20 @@ _:g406000 a earl:TestCriterion,
|
|
57
57
|
earl:outcome earl:untested
|
58
58
|
];
|
59
59
|
earl:subject <http://rubygems.org/gems/rdf-turtle>;
|
60
|
-
earl:test _:
|
60
|
+
earl:test _:g407680
|
61
61
|
] .
|
62
62
|
|
63
63
|
# Test Subjects
|
64
64
|
|
65
|
-
<http://rubygems.org/gems/rdf-turtle> a
|
66
|
-
|
65
|
+
<http://rubygems.org/gems/rdf-turtle> a doap:Project,
|
66
|
+
earl:TestSubject,
|
67
67
|
earl:Software;
|
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
|
-
doap:release [doap:revision "unknown"]
|
73
|
+
doap:release [doap:revision "unknown"] .
|
74
74
|
|
75
75
|
<http://greggkellogg.net/foaf#me> a earl:Assertor,
|
76
76
|
foaf:Person;
|
@@ -87,10 +87,10 @@ _:g406000 a earl:TestCriterion,
|
|
87
87
|
doap:license <http://unlicense.org>;
|
88
88
|
doap:name "earl-report";
|
89
89
|
doap:programming-language "Ruby";
|
90
|
-
doap:release <https://github.com/gkellogg/earl-report/tree/0.4.
|
90
|
+
doap:release <https://github.com/gkellogg/earl-report/tree/0.4.9>;
|
91
91
|
doap:shortdesc "Earl Report summary generator"@en .
|
92
92
|
|
93
|
-
<https://github.com/gkellogg/earl-report/tree/0.4.
|
94
|
-
doap:created "
|
95
|
-
doap:name "earl-report-0.4.
|
96
|
-
doap:revision "0.4.
|
93
|
+
<https://github.com/gkellogg/earl-report/tree/0.4.9> a doap:Version;
|
94
|
+
doap:created "2020-04-01"^^xsd:date;
|
95
|
+
doap:name "earl-report-0.4.9";
|
96
|
+
doap:revision "0.4.9" .
|
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
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: linkeddata
|