earl-report 0.4.7 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -6
- data/VERSION +1 -1
- data/lib/earl_report.rb +90 -63
- data/lib/earl_report/views/earl_report.html.haml +18 -8
- data/spec/earl_report_spec.rb +8 -8
- data/spec/spec_helper.rb +1 -0
- data/spec/test-files/doap.ttl +5 -5
- data/spec/test-files/report-complete.ttl +6 -6
- data/spec/test-files/report-no-doap.ttl +1 -1
- data/spec/test-files/report-no-foaf.ttl +6 -6
- data/spec/test-files/results.html +18 -18
- data/spec/test-files/results.jsonld +63 -58
- data/spec/test-files/results.ttl +24 -23
- metadata +37 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6345cb8e00528750c59fd766f4f960b147bfa3bf9bc381647125ef998796c48
|
4
|
+
data.tar.gz: 5ee09de5bf8bbf07c8f50a402675e57f8188942862ca5b5093dd9b59b41fb7ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab5a74f3491417239de8588836631c6a096714e7e4ef53a4d77fbc0f828c83c60b066a69eeed28a7908f62b393b0b882d9e1e56d1836512acb8a81c20516b4c8
|
7
|
+
data.tar.gz: edc4f281a97edb3d2614fe8db7bcdbf92d841a7764c9a0f917215bccc57197697f1e87b5c548cebd7eab981762d01475cee014f80840d1855e34aac791ec2b25
|
data/README.md
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
Ruby gem to consolidate multiple EARL report and generate a rollup conformance report.
|
3
3
|
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/earl-report.png)](http://badge.fury.io/rb/earl-report)
|
5
|
-
[![Build Status](https://
|
6
|
-
[![Coverage Status](https://coveralls.io/repos/gkellogg/earl-report/badge.svg)](https://coveralls.io/r/gkellogg/earl-report)
|
5
|
+
[![Build Status](https://github.com/gkellogg/earl-report/workflows/CI/badge.svg?branch=develop)](https://github.com/gkellogg/earl-report/actions?query=workflow%3ACI)
|
6
|
+
[![Coverage Status](https://coveralls.io/repos/gkellogg/earl-report/badge.svg?branch=develop)](https://coveralls.io/r/gkellogg/earl-report?branch=develop)
|
7
7
|
|
8
8
|
## Description
|
9
9
|
Reads a test manifest in the
|
@@ -18,7 +18,7 @@ in the following form:
|
|
18
18
|
|
19
19
|
[ a earl:Assertion;
|
20
20
|
earl:assertedBy <http://greggkellogg.net/foaf#me>;
|
21
|
-
earl:subject <
|
21
|
+
earl:subject <https://rubygems.org/gems/rdf-turtle>;
|
22
22
|
earl:test <http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/manifest.ttl#turtle-syntax-file-01>;
|
23
23
|
earl:result [
|
24
24
|
a earl:TestResult;
|
@@ -29,11 +29,16 @@ in the following form:
|
|
29
29
|
Additionally, `earl:subject` is expected to reference a [DOAP]() description
|
30
30
|
of the reported software, in the following form:
|
31
31
|
|
32
|
-
<
|
32
|
+
<https://rubygems.org/gems/rdf-turtle> a doap:Project, earl:TestSubject, earl:Software ;
|
33
33
|
doap:name "RDF::Turtle" ;
|
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,
|
@@ -98,7 +103,7 @@ Version 0.3 and prior re-constructed the test manifest used to create the body o
|
|
98
103
|
dc:date "2012-11-06T19:23:29-08:00"^^xsd:dateTime;
|
99
104
|
earl:outcome earl:passed
|
100
105
|
];
|
101
|
-
earl:subject <
|
106
|
+
earl:subject <https://rubygems.org/gems/rdf-turtle>;
|
102
107
|
earl:test <http://example/manifest.ttl#testeval00>
|
103
108
|
]) .
|
104
109
|
|
@@ -127,7 +132,7 @@ Generally, creating a `json` format first is more efficient. Subsequent invocati
|
|
127
132
|
When run, `earl-report` attempts to open the file `.earl` in the current directory. This file is in [YAML][] format with entries for each option. Use the `--rc` option to automatically generate it.
|
128
133
|
|
129
134
|
## Author
|
130
|
-
* [Gregg Kellogg](
|
135
|
+
* [Gregg Kellogg](https://github.com/gkellogg) - <http://greggkellogg.net/>
|
131
136
|
|
132
137
|
## License
|
133
138
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.2
|
data/lib/earl_report.rb
CHANGED
@@ -33,12 +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 ?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 ?release . }
|
43
|
+
OPTIONAL { ?release doap:revision ?revision .}
|
42
44
|
OPTIONAL { ?developer a ?devType .}
|
43
45
|
OPTIONAL { ?developer foaf:name ?devName .}
|
44
46
|
OPTIONAL { ?developer foaf:homepage ?devHomepage .}
|
@@ -78,8 +80,9 @@ class EarlReport
|
|
78
80
|
|
79
81
|
TEST_FRAME = {
|
80
82
|
"@context" => {
|
81
|
-
"@
|
82
|
-
"
|
83
|
+
"@version" => 1.1,
|
84
|
+
"@vocab" => "http://www.w3.org/ns/earl#",
|
85
|
+
"foaf:homepage"=> {"@type" => "@id"},
|
83
86
|
"dc" => "http://purl.org/dc/terms/",
|
84
87
|
"doap" => "http://usefulinc.com/ns/doap#",
|
85
88
|
"earl" => "http://www.w3.org/ns/earl#",
|
@@ -123,8 +126,10 @@ class EarlReport
|
|
123
126
|
},
|
124
127
|
"testSubjects" => {
|
125
128
|
"@embed" => "@always",
|
129
|
+
"@requireAll" => false,
|
126
130
|
"@type" => "earl:TestSubject",
|
127
131
|
"developer" => {"@embed" => "@always"},
|
132
|
+
"release" => {"@embed" => "@always"},
|
128
133
|
"homepage" => {"@embed" => "@never"}
|
129
134
|
},
|
130
135
|
"entries" => [{
|
@@ -216,7 +221,15 @@ class EarlReport
|
|
216
221
|
test_resources = tests.values.map {|v| v[:uri]}.uniq.compact
|
217
222
|
subjects = {}
|
218
223
|
|
219
|
-
|
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
|
+
release_node_mapper = {}
|
232
|
+
|
220
233
|
# Read test assertion files into assertion graph
|
221
234
|
files.flatten.each do |file|
|
222
235
|
status "read #{file}"
|
@@ -233,10 +246,10 @@ class EarlReport
|
|
233
246
|
|
234
247
|
# Load DOAP definitions
|
235
248
|
unless solution[:name] # not loaded
|
236
|
-
status "read doap description for #{subject}"
|
249
|
+
status " read doap description for #{subject}"
|
237
250
|
begin
|
238
251
|
doap_graph = RDF::Graph.load(subject)
|
239
|
-
status "
|
252
|
+
status " loaded #{doap_graph.count} triples"
|
240
253
|
file_graph << doap_graph.to_a
|
241
254
|
rescue
|
242
255
|
warn "\nfailed to load DOAP from #{subject}: #{$!}"
|
@@ -256,10 +269,10 @@ class EarlReport
|
|
256
269
|
if !solutions.first[:developer]
|
257
270
|
warn "\nNo developer identified for #{solutions.first[:uri]}"
|
258
271
|
elsif !solutions.first[:devName]
|
259
|
-
status "read description for developer #{solutions.first[:developer].inspect}"
|
272
|
+
status " read description for developer #{solutions.first[:developer].inspect}"
|
260
273
|
begin
|
261
274
|
foaf_graph = RDF::Graph.load(solutions.first[:developer])
|
262
|
-
status "
|
275
|
+
status " loaded #{foaf_graph.count} triples"
|
263
276
|
file_graph << foaf_graph.to_a
|
264
277
|
# Reload solutions
|
265
278
|
solutions = SPARQL.execute(TEST_SUBJECT_QUERY, file_graph)
|
@@ -268,6 +281,7 @@ class EarlReport
|
|
268
281
|
end
|
269
282
|
end
|
270
283
|
|
284
|
+
release = nil
|
271
285
|
solutions.each do |solution|
|
272
286
|
# Kepp track of subjects
|
273
287
|
subjects[solution[:uri]] = RDF::URI(file)
|
@@ -289,56 +303,61 @@ class EarlReport
|
|
289
303
|
graph << RDF::Statement(solution[:developer], RDF.type, solution[:devType]) if solution[:devType]
|
290
304
|
graph << RDF::Statement(solution[:developer], RDF::Vocab::FOAF.name, devName) if devName
|
291
305
|
graph << RDF::Statement(solution[:developer], RDF::Vocab::FOAF.homepage, solution[:devHomepage]) if solution[:devHomepage]
|
306
|
+
|
307
|
+
# Make sure BNode identifiers don't leak
|
308
|
+
release ||= if !solution[:release] || solution[:release].node?
|
309
|
+
RDF::Node.new
|
310
|
+
else
|
311
|
+
solution[:release]
|
312
|
+
end
|
313
|
+
graph << RDF::Statement(solution[:uri], RDF::Vocab::DOAP.release, release)
|
314
|
+
graph << RDF::Statement(release, RDF::Vocab::DOAP.revision, (solution[:revision] || "unknown"))
|
292
315
|
end
|
293
316
|
|
294
|
-
|
295
|
-
|
296
|
-
|
317
|
+
# Make sure that each assertion matches a test and add reference from test to assertion
|
318
|
+
found_solutions = false
|
319
|
+
subject = nil
|
297
320
|
|
298
|
-
|
299
|
-
|
321
|
+
status " query assertions"
|
322
|
+
SPARQL.execute(ASSERTION_QUERY, file_graph).each do |solution|
|
323
|
+
subject = solution[:subject]
|
324
|
+
unless tests[solution[:test]]
|
325
|
+
assertion_stats["Skipped"] = assertion_stats["Skipped"].to_i + 1
|
326
|
+
$stderr.puts "Skipping result for #{solution[:test]} for #{subject}, which is not defined in manifests"
|
327
|
+
next
|
328
|
+
end
|
329
|
+
unless subjects[subject]
|
330
|
+
assertion_stats["Missing Subject"] = assertion_stats["Missing Subject"].to_i + 1
|
331
|
+
$stderr.puts "No test result subject found for #{subject}: in #{subjects.keys.join(', ')}"
|
332
|
+
next
|
333
|
+
end
|
334
|
+
found_solutions ||= true
|
335
|
+
assertion_stats["Found"] = assertion_stats["Found"].to_i + 1
|
300
336
|
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
memo.merge(test => Array.new(subjects.length))
|
305
|
-
end
|
337
|
+
# Add this solution at the appropriate index within that list
|
338
|
+
ndx = subjects.keys.find_index(subject)
|
339
|
+
ary = test_assertion_lists[solution[:test]]
|
306
340
|
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
341
|
+
ary[ndx] = a = RDF::Node.new
|
342
|
+
graph << RDF::Statement(a, RDF.type, EARL.Assertion)
|
343
|
+
graph << RDF::Statement(a, EARL.subject, subject)
|
344
|
+
graph << RDF::Statement(a, EARL.test, solution[:test])
|
345
|
+
graph << RDF::Statement(a, EARL.assertedBy, solution[:by])
|
346
|
+
graph << RDF::Statement(a, EARL.mode, solution[:mode]) if solution[:mode]
|
347
|
+
r = RDF::Node.new
|
348
|
+
graph << RDF::Statement(a, EARL.result, r)
|
349
|
+
graph << RDF::Statement(r, RDF.type, EARL.TestResult)
|
350
|
+
graph << RDF::Statement(r, EARL.outcome, solution[:outcome])
|
351
|
+
end
|
352
|
+
|
353
|
+
# See if subject did not report results, which may indicate a formatting error in the EARL source
|
354
|
+
$stderr.puts "No results found for #{subject} using #{ASSERTION_QUERY}" unless found_solutions
|
320
355
|
end
|
321
|
-
found_solutions[subject] = true
|
322
|
-
assertion_stats["Found"] = assertion_stats["Found"].to_i + 1
|
323
|
-
|
324
|
-
# Add this solution at the appropriate index within that list
|
325
|
-
ndx = subjects.keys.find_index(subject)
|
326
|
-
ary = test_assertion_lists[solution[:test]] ||= []
|
327
|
-
|
328
|
-
ary[ndx] = a = RDF::Node.new
|
329
|
-
graph << RDF::Statement(a, RDF.type, EARL.Assertion)
|
330
|
-
graph << RDF::Statement(a, EARL.subject, subject)
|
331
|
-
graph << RDF::Statement(a, EARL.test, solution[:test])
|
332
|
-
graph << RDF::Statement(a, EARL.assertedBy, solution[:by])
|
333
|
-
graph << RDF::Statement(a, EARL.mode, solution[:mode]) if solution[:mode]
|
334
|
-
r = RDF::Node.new
|
335
|
-
graph << RDF::Statement(a, EARL.result, r)
|
336
|
-
graph << RDF::Statement(r, RDF.type, EARL.TestResult)
|
337
|
-
graph << RDF::Statement(r, EARL.outcome, solution[:outcome])
|
338
356
|
end
|
339
357
|
|
340
358
|
# Add ordered assertions for each test
|
341
359
|
test_assertion_lists.each do |test, ary|
|
360
|
+
ary[subjects.length - 1] ||= nil # extend for all subjects
|
342
361
|
# Fill any missing entries with an untested outcome
|
343
362
|
ary.each_with_index do |a, ndx|
|
344
363
|
unless a
|
@@ -360,11 +379,6 @@ class EarlReport
|
|
360
379
|
|
361
380
|
assertion_stats.each {|stat, count| status("Assertions #{stat}: #{count}")}
|
362
381
|
|
363
|
-
# See if any subject did not report results, which may indicate a formatting error in the EARL source
|
364
|
-
subjects.reject {|s| found_solutions[s]}.each do |sub|
|
365
|
-
$stderr.puts "No results found for #{sub} using #{ASSERTION_QUERY}"
|
366
|
-
end
|
367
|
-
|
368
382
|
# Add report wrapper to graph
|
369
383
|
ttl = %(
|
370
384
|
@prefix dc: <http://purl.org/dc/terms/> .
|
@@ -376,12 +390,12 @@ class EarlReport
|
|
376
390
|
<> a earl:Software, doap:Project;
|
377
391
|
doap:name #{quoted(@options.fetch(:name, 'Unknown'))};
|
378
392
|
dc:bibliographicCitation "#{@options.fetch(:bibRef, 'Unknown reference')}";
|
379
|
-
earl:generatedBy <
|
393
|
+
earl:generatedBy <https://rubygems.org/gems/earl-report>;
|
380
394
|
earl:assertions #{subjects.values.map {|f| f.to_ntriples}.join(",\n ")};
|
381
395
|
earl:testSubjects #{subjects.keys.map {|f| f.to_ntriples}.join(",\n ")};
|
382
396
|
mf:entries (#{man_uris.map {|f| f.to_ntriples}.join("\n ")}) .
|
383
397
|
|
384
|
-
<
|
398
|
+
<https://rubygems.org/gems/earl-report> a earl:Software, doap:Project;
|
385
399
|
doap:name "earl-report";
|
386
400
|
doap:shortdesc "Earl Report summary generator"@en;
|
387
401
|
doap:description "EarlReport generates HTML+RDFa rollups of multiple EARL reports"@en;
|
@@ -473,13 +487,26 @@ class EarlReport
|
|
473
487
|
def json_hash
|
474
488
|
@json_hash ||= begin
|
475
489
|
# Customized JSON-LD output
|
476
|
-
|
477
|
-
JSON::LD::API.frame(expanded, TEST_FRAME,
|
490
|
+
result = JSON::LD::API.fromRDF(graph) do |expanded|
|
491
|
+
framed = JSON::LD::API.frame(expanded, TEST_FRAME,
|
492
|
+
expanded: true,
|
493
|
+
embed: '@never',
|
494
|
+
pruneBlankNodeIdentifiers: false)
|
495
|
+
# Reorder test subjects by @id
|
496
|
+
framed['testSubjects'] = Array(framed['testSubjects']).sort_by {|t| t['@id']}
|
497
|
+
|
498
|
+
# Reorder test assertions to make them consistent with subject order
|
499
|
+
Array(framed['entries']).each do |manifest|
|
500
|
+
manifest['entries'].each do |test|
|
501
|
+
test['assertions'] = test['assertions'].sort_by {|a| a['subject']}
|
502
|
+
end
|
503
|
+
end
|
504
|
+
framed
|
478
505
|
end
|
479
|
-
unless
|
480
|
-
raise "Expected JSON result to have a single entry, it had #{
|
506
|
+
unless result.is_a?(Hash)
|
507
|
+
raise "Expected JSON result to have a single entry, it had #{result.length rescue 'unknown'} entries"
|
481
508
|
end
|
482
|
-
|
509
|
+
result
|
483
510
|
end
|
484
511
|
end
|
485
512
|
|
@@ -516,18 +543,18 @@ class EarlReport
|
|
516
543
|
|
517
544
|
# Write test subjects
|
518
545
|
io.puts "\n# Test Subjects"
|
519
|
-
graph.query(subject: top_level, predicate: EARL.testSubjects).each do |s|
|
546
|
+
graph.query({subject: top_level, predicate: EARL.testSubjects}).each do |s|
|
520
547
|
writer.send(:statement, s.object)
|
521
548
|
|
522
549
|
# Write each developer
|
523
|
-
graph.query(subject: s.object, predicate: RDF::Vocab::DOAP.developer).each do |d|
|
550
|
+
graph.query({subject: s.object, predicate: RDF::Vocab::DOAP.developer}).each do |d|
|
524
551
|
writer.send(:statement, d.object)
|
525
552
|
end
|
526
553
|
end
|
527
554
|
|
528
555
|
# Write generator
|
529
556
|
io.puts "\n# Report Generation Software"
|
530
|
-
writer.send(:statement, RDF::URI("
|
557
|
+
writer.send(:statement, RDF::URI("https://rubygems.org/gems/earl-report"))
|
531
558
|
writer.send(:statement, RDF::URI("https://github.com/gkellogg/earl-report/tree/#{VERSION}"))
|
532
559
|
end
|
533
560
|
|
@@ -10,7 +10,7 @@
|
|
10
10
|
-# "assertions": ["./rdf.rb-earl.ttl"],
|
11
11
|
-# "testSubjects": [
|
12
12
|
-# {
|
13
|
-
-# "@id": "
|
13
|
+
-# "@id": "https://rubygems.org/gems/rdf-turtle",
|
14
14
|
-# "@type": "earl:TestSubject",
|
15
15
|
-# "name": "RDF::Turtle"
|
16
16
|
-# },
|
@@ -29,7 +29,7 @@
|
|
29
29
|
-# "@type": "earl:Assertion",
|
30
30
|
-# "assertedBy": "http://greggkellogg.net/foaf#me",
|
31
31
|
-# "test": "http://svn.apache.org/repos/asf/jena/Experimental/riot-reader/testing/RIOT/Lang/TurtleSubm/manifest.ttl#testeval00",
|
32
|
-
-# "subject": "
|
32
|
+
-# "subject": "https://rubygems.org/gems/rdf-turtle",
|
33
33
|
-# "result": {
|
34
34
|
-# "@type": "earl:TestResult",
|
35
35
|
-# "outcome": "earl:passed"
|
@@ -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']}
|
@@ -369,6 +371,13 @@
|
|
369
371
|
%dt= "Description"
|
370
372
|
%dd{property: "doap:description", lang: 'en'}<
|
371
373
|
~ CGI.escapeHTML subject['doapDesc']
|
374
|
+
- if subject['release']
|
375
|
+
- subject['release'] = subject['release'].first if subject['release'].is_a?(Array)
|
376
|
+
- subject['release']['revision'] = subject['release']['revision']['@value'] if subject['release']['revision'].is_a?(Hash)
|
377
|
+
%dt= "Release"
|
378
|
+
%dd{property: "doap:release"}<
|
379
|
+
%span{property: "doap:revision"}<
|
380
|
+
~ CGI.escapeHTML subject['release']['revision'].to_s
|
372
381
|
- if subject['language']
|
373
382
|
- subject['language'] = subject['language']['@value'] if subject['language'].is_a?(Hash)
|
374
383
|
%dt= "Programming Language"
|
@@ -436,10 +445,10 @@
|
|
436
445
|
%p{property: "dc:description rdfs:comment"}<
|
437
446
|
~ CGI.escapeHTML test['description'].to_s
|
438
447
|
%pre{class: "example actionDoc", property: "mf:action", resource: test['testAction'], title: "#{test['title']} Input"}<
|
439
|
-
~
|
448
|
+
~ URI.open(test['testAction']) {|f| f.set_encoding(Encoding::UTF_8); CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testAction']} not loaded"
|
440
449
|
- if test['testResult']
|
441
450
|
%pre{class: "example resultDoc", property: "mf:result", resource: test['testResult'], title: "#{test['title']} Result"}<
|
442
|
-
~
|
451
|
+
~ URI.open(test['testResult']) {|f| f.set_encoding(Encoding::UTF_8); CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testResult']} not loaded"
|
443
452
|
%section.appendix#report-generation-software{property: "earl:generatedBy", resource: tests['generatedBy']['@id'], typeof: tests['generatedBy']['@type'].join(' ')}
|
444
453
|
%h2
|
445
454
|
%span.secno="D."
|
@@ -457,7 +466,8 @@
|
|
457
466
|
%span{property: "doap:release", resource: rel['@id'], typeof: 'doap:Version'}
|
458
467
|
%span{property: "doap:revision"}<=rel['revision']
|
459
468
|
%meta{property: "doap:name", content: rel['name']}
|
460
|
-
|
469
|
+
- if rel['created']
|
470
|
+
%meta{property: "doap:created", content: rel['created'], datatype: "xsd:date"}
|
461
471
|
an
|
462
472
|
%a{property: "doap:license", href: doap['license']}<="Unlicensed"
|
463
473
|
%span{property: "doap:programming-language"}<="Ruby"
|
data/spec/earl_report_spec.rb
CHANGED
@@ -79,7 +79,7 @@ describe EarlReport do
|
|
79
79
|
end
|
80
80
|
|
81
81
|
it "loads doap" do
|
82
|
-
expect(subject.graph.subjects.to_a).to include(RDF::URI("
|
82
|
+
expect(subject.graph.subjects.to_a).to include(RDF::URI("https://rubygems.org/gems/rdf-turtle"))
|
83
83
|
end
|
84
84
|
|
85
85
|
it "loads foaf" do
|
@@ -96,7 +96,7 @@ describe EarlReport do
|
|
96
96
|
.with(File.expand_path("../test-files/report-no-doap.ttl", __FILE__))
|
97
97
|
.and_return(reportNoDoap)
|
98
98
|
expect(RDF::Graph).to receive(:load)
|
99
|
-
.with("
|
99
|
+
.with("https://rubygems.org/gems/rdf-turtle")
|
100
100
|
.and_return(doap)
|
101
101
|
end
|
102
102
|
|
@@ -116,7 +116,7 @@ describe EarlReport do
|
|
116
116
|
end
|
117
117
|
|
118
118
|
it "loads doap" do
|
119
|
-
expect(subject.graph.subjects.to_a).to include(RDF::URI("
|
119
|
+
expect(subject.graph.subjects.to_a).to include(RDF::URI("https://rubygems.org/gems/rdf-turtle"))
|
120
120
|
end
|
121
121
|
|
122
122
|
it "loads foaf" do
|
@@ -153,7 +153,7 @@ describe EarlReport do
|
|
153
153
|
end
|
154
154
|
|
155
155
|
it "loads doap" do
|
156
|
-
expect(subject.graph.subjects.to_a).to include(RDF::URI("
|
156
|
+
expect(subject.graph.subjects.to_a).to include(RDF::URI("https://rubygems.org/gems/rdf-turtle"))
|
157
157
|
end
|
158
158
|
|
159
159
|
it "loads foaf" do
|
@@ -384,7 +384,7 @@ describe EarlReport do
|
|
384
384
|
dc:bibliographicCitation "[[TURTLE]]";
|
385
385
|
earl:generatedBy ?generatedBy;
|
386
386
|
earl:assertions ?assertionFile;
|
387
|
-
earl:testSubjects <
|
387
|
+
earl:testSubjects <https://rubygems.org/gems/rdf-turtle>;
|
388
388
|
mf:entries (<http://example/manifest.ttl>) .
|
389
389
|
|
390
390
|
<http://example/manifest.ttl> a earl:Report, mf:Manifest;
|
@@ -401,7 +401,7 @@ describe EarlReport do
|
|
401
401
|
PREFIX earl: <http://www.w3.org/ns/earl#>
|
402
402
|
|
403
403
|
ASK WHERE {
|
404
|
-
<
|
404
|
+
<https://rubygems.org/gems/rdf-turtle> a earl:TestSubject, doap:Project;
|
405
405
|
doap:name "RDF::Turtle";
|
406
406
|
doap:description """RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."""@en;
|
407
407
|
doap:programming-language "Ruby";
|
@@ -429,7 +429,7 @@ describe EarlReport do
|
|
429
429
|
mf:name "subm-test-00";
|
430
430
|
mf:action <http://example/test-00.ttl>;
|
431
431
|
mf:result <http://example/test-00.out>;
|
432
|
-
earl:assertions [ a earl:Assertion; earl:subject <
|
432
|
+
earl:assertions [ a earl:Assertion; earl:subject <https://rubygems.org/gems/rdf-turtle> ] .
|
433
433
|
}
|
434
434
|
)
|
435
435
|
|
@@ -440,7 +440,7 @@ describe EarlReport do
|
|
440
440
|
[ a earl:Assertion;
|
441
441
|
earl:assertedBy <http://greggkellogg.net/foaf#me>;
|
442
442
|
earl:test <http://example/manifest.ttl#testeval00>;
|
443
|
-
earl:subject <
|
443
|
+
earl:subject <https://rubygems.org/gems/rdf-turtle>;
|
444
444
|
earl:mode earl:automatic;
|
445
445
|
earl:result [ a earl:TestResult; earl:outcome earl:passed] ] .
|
446
446
|
}
|
data/spec/spec_helper.rb
CHANGED
data/spec/test-files/doap.ttl
CHANGED
@@ -7,10 +7,10 @@
|
|
7
7
|
@prefix ex: <http://example.org/> .
|
8
8
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
9
9
|
|
10
|
-
<
|
10
|
+
<https://rubygems.org/gems/rdf-turtle> a doap:Project, earl:TestSubject, earl:Software ;
|
11
11
|
doap:name "RDF::Turtle" ;
|
12
12
|
doap:homepage <http://ruby-rdf.github.com/rdf-turtle> ;
|
13
|
-
doap:license <http://creativecommons.org/
|
13
|
+
doap:license <http://creativecommons.org/publicdomain/zero/1.0/> ;
|
14
14
|
doap:shortdesc "Turtle reader/writer for Ruby."@en ;
|
15
15
|
doap:description "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
|
16
16
|
doap:created "2011-08-29"^^xsd:date;
|
@@ -18,9 +18,9 @@
|
|
18
18
|
doap:implements <http://www.w3.org/TR/turtle/> ;
|
19
19
|
doap:category <http://dbpedia.org/resource/Resource_Description_Framework>,
|
20
20
|
<http://dbpedia.org/resource/Ruby_(programming_language)> ;
|
21
|
-
doap:download-page <
|
21
|
+
doap:download-page <https://rubygems.org/gems/rdf-turtle> ;
|
22
22
|
doap:mailing-list <http://lists.w3.org/Archives/Public/public-rdf-ruby/> ;
|
23
|
-
doap:bug-database <
|
23
|
+
doap:bug-database <https://github.com/ruby-rdf/rdf-turtle/issues> ;
|
24
24
|
doap:blog <http://greggkellogg.net/> ;
|
25
25
|
doap:developer <http://greggkellogg.net/foaf#me> ;
|
26
26
|
doap:maintainer <http://greggkellogg.net/foaf#me> ;
|
@@ -30,4 +30,4 @@
|
|
30
30
|
dc:description "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
|
31
31
|
dc:date "2011-08-29"^^xsd:date;
|
32
32
|
dc:creator <http://greggkellogg.net/foaf#me>;
|
33
|
-
dc:isPartOf <
|
33
|
+
dc:isPartOf <https://rubygems.org/gems/rdf> .
|
@@ -7,10 +7,10 @@
|
|
7
7
|
@prefix ex: <http://example.org/> .
|
8
8
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
9
9
|
|
10
|
-
<
|
10
|
+
<https://rubygems.org/gems/rdf-turtle> a doap:Project, earl:TestSubject, earl:Software ;
|
11
11
|
doap:name "RDF::Turtle" ;
|
12
12
|
doap:homepage <http://ruby-rdf.github.com/rdf-turtle> ;
|
13
|
-
doap:license <http://creativecommons.org/
|
13
|
+
doap:license <http://creativecommons.org/publicdomain/zero/1.0/> ;
|
14
14
|
doap:shortdesc "Turtle reader/writer for Ruby."@en ;
|
15
15
|
doap:description "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
|
16
16
|
doap:created "2011-08-29"^^xsd:date;
|
@@ -18,9 +18,9 @@
|
|
18
18
|
doap:implements <http://www.w3.org/TR/turtle/> ;
|
19
19
|
doap:category <http://dbpedia.org/resource/Resource_Description_Framework>,
|
20
20
|
<http://dbpedia.org/resource/Ruby_(programming_language)> ;
|
21
|
-
doap:download-page <
|
21
|
+
doap:download-page <https://rubygems.org/gems/rdf-turtle> ;
|
22
22
|
doap:mailing-list <http://lists.w3.org/Archives/Public/public-rdf-ruby/> ;
|
23
|
-
doap:bug-database <
|
23
|
+
doap:bug-database <https://github.com/ruby-rdf/rdf-turtle/issues> ;
|
24
24
|
doap:blog <http://greggkellogg.net/> ;
|
25
25
|
doap:developer <http://greggkellogg.net/foaf#me> ;
|
26
26
|
doap:maintainer <http://greggkellogg.net/foaf#me> ;
|
@@ -30,7 +30,7 @@
|
|
30
30
|
dc:description "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
|
31
31
|
dc:date "2011-08-29"^^xsd:date;
|
32
32
|
dc:creator <http://greggkellogg.net/foaf#me>;
|
33
|
-
dc:isPartOf <
|
33
|
+
dc:isPartOf <https://rubygems.org/gems/rdf> .
|
34
34
|
|
35
35
|
<http://greggkellogg.net/foaf#me> a foaf:Person, earl:Assertor;
|
36
36
|
foaf:name "Gregg Kellogg";
|
@@ -39,7 +39,7 @@
|
|
39
39
|
|
40
40
|
[ a earl:Assertion;
|
41
41
|
earl:assertedBy <http://greggkellogg.net/foaf#me>;
|
42
|
-
earl:subject <
|
42
|
+
earl:subject <https://rubygems.org/gems/rdf-turtle>;
|
43
43
|
earl:test <http://example/manifest.ttl#testeval00>;
|
44
44
|
earl:result [
|
45
45
|
a earl:TestResult;
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
[ a earl:Assertion;
|
16
16
|
earl:assertedBy <http://greggkellogg.net/foaf#me>;
|
17
|
-
earl:subject <
|
17
|
+
earl:subject <https://rubygems.org/gems/rdf-turtle>;
|
18
18
|
earl:test <http://example/manifest.ttl#testeval00>;
|
19
19
|
earl:result [
|
20
20
|
a earl:TestResult;
|
@@ -7,10 +7,10 @@
|
|
7
7
|
@prefix ex: <http://example.org/> .
|
8
8
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
9
9
|
|
10
|
-
<
|
10
|
+
<https://rubygems.org/gems/rdf-turtle> a doap:Project, earl:TestSubject, earl:Software ;
|
11
11
|
doap:name "RDF::Turtle" ;
|
12
12
|
doap:homepage <http://ruby-rdf.github.com/rdf-turtle> ;
|
13
|
-
doap:license <http://creativecommons.org/
|
13
|
+
doap:license <http://creativecommons.org/publicdomain/zero/1.0/> ;
|
14
14
|
doap:shortdesc "Turtle reader/writer for Ruby."@en ;
|
15
15
|
doap:description "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
|
16
16
|
doap:created "2011-08-29"^^xsd:date;
|
@@ -18,9 +18,9 @@
|
|
18
18
|
doap:implements <http://www.w3.org/TR/turtle/> ;
|
19
19
|
doap:category <http://dbpedia.org/resource/Resource_Description_Framework>,
|
20
20
|
<http://dbpedia.org/resource/Ruby_(programming_language)> ;
|
21
|
-
doap:download-page <
|
21
|
+
doap:download-page <https://rubygems.org/gems/rdf-turtle> ;
|
22
22
|
doap:mailing-list <http://lists.w3.org/Archives/Public/public-rdf-ruby/> ;
|
23
|
-
doap:bug-database <
|
23
|
+
doap:bug-database <https://github.com/ruby-rdf/rdf-turtle/issues> ;
|
24
24
|
doap:blog <http://greggkellogg.net/> ;
|
25
25
|
doap:developer <http://greggkellogg.net/foaf#me> ;
|
26
26
|
doap:maintainer <http://greggkellogg.net/foaf#me> ;
|
@@ -30,13 +30,13 @@
|
|
30
30
|
dc:description "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
|
31
31
|
dc:date "2011-08-29"^^xsd:date;
|
32
32
|
dc:creator <http://greggkellogg.net/foaf#me>;
|
33
|
-
dc:isPartOf <
|
33
|
+
dc:isPartOf <https://rubygems.org/gems/rdf> .
|
34
34
|
|
35
35
|
<http://greggkellogg.net/foaf#me> a earl:Assertor .
|
36
36
|
|
37
37
|
[ a earl:Assertion;
|
38
38
|
earl:assertedBy <http://greggkellogg.net/foaf#me>;
|
39
|
-
earl:subject <
|
39
|
+
earl:subject <https://rubygems.org/gems/rdf-turtle>;
|
40
40
|
earl:test <http://example/manifest.ttl#testeval00>;
|
41
41
|
earl:result [
|
42
42
|
a earl:TestResult;
|
@@ -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='
|
77
|
-
|
76
|
+
<time class='dt-published' datetime='2021-01-19' property='dc:issued'>
|
77
|
+
19 January 2021
|
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,14 +245,14 @@ 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='http://www.w3.org/ns/rdftest#TestTurtleEval TestCriterion
|
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
252
|
<td class='PASS' property='earl:assertions' typeof='Assertion'>
|
253
253
|
<link href='http://greggkellogg.net/foaf#me' property='earl:assertedBy' />
|
254
254
|
<link href='http://example/manifest.ttl#testeval00' property='earl:test' />
|
255
|
-
<link href='
|
255
|
+
<link href='https://rubygems.org/gems/rdf-turtle' property='earl:subject' />
|
256
256
|
<link href='earl:automatic' property='earl:mode' />
|
257
257
|
<span property='earl:result' typeof='TestResult'>
|
258
258
|
<span property='earl:outcome' resource='earl:passed'>
|
@@ -261,13 +261,12 @@ PASS
|
|
261
261
|
</span>
|
262
262
|
</td>
|
263
263
|
</tr>
|
264
|
-
<tr inlist='inlist' rel='mf:entries' resource='_:b1' typeof='http://www.w3.org/ns/rdftest#TestTurtleEval TestCriterion
|
264
|
+
<tr inlist='inlist' rel='mf:entries' resource='_:b1' typeof='http://www.w3.org/ns/rdftest#TestTurtleEval TestCase TestCriterion'>
|
265
265
|
<td>
|
266
266
|
<a href='#test_b4d4f9531721bf1a6e4562f27353abd3'>subm-test-01</a>
|
267
267
|
</td>
|
268
268
|
<td class='UNTESTED' property='earl:assertions' typeof='Assertion'>
|
269
|
-
<link href='
|
270
|
-
<link href='http://rubygems.org/gems/rdf-turtle' property='earl:subject' />
|
269
|
+
<link href='https://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'>
|
273
272
|
UNTESTED
|
@@ -297,14 +296,16 @@ This report was tested using the following test subjects:
|
|
297
296
|
<dl>
|
298
297
|
<dt id='subj_0'>
|
299
298
|
<span class='secno'>A.1</span>
|
300
|
-
<a href='
|
301
|
-
<span about='
|
299
|
+
<a href='https://rubygems.org/gems/rdf-turtle'>
|
300
|
+
<span about='https://rubygems.org/gems/rdf-turtle' property='doap:name'>RDF::Turtle</span>
|
302
301
|
</a>
|
303
302
|
</dt>
|
304
|
-
<dd property='earl:testSubjects' resource='
|
303
|
+
<dd property='earl:testSubjects' resource='https://rubygems.org/gems/rdf-turtle' typeof='Software TestSubject doap:Project'>
|
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>
|
307
|
+
<dt>Release</dt>
|
308
|
+
<dd property='doap:release'><span property='doap:revision'>unknown</span></dd>
|
308
309
|
<dt>Programming Language</dt>
|
309
310
|
<dd property='doap:programming-language'>Ruby</dd>
|
310
311
|
<dt>Home Page</dt>
|
@@ -315,7 +316,7 @@ http://ruby-rdf.github.com/rdf-turtle
|
|
315
316
|
</dd>
|
316
317
|
<dt>Developer</dt>
|
317
318
|
<dd rel='doap:developer'>
|
318
|
-
<div resource='http://greggkellogg.net/foaf#me' typeof='
|
319
|
+
<div resource='http://greggkellogg.net/foaf#me' typeof='foaf:Person Assertor'>
|
319
320
|
<a href='http://greggkellogg.net/foaf#me'>
|
320
321
|
<span property='foaf:name'>Gregg Kellogg</span>
|
321
322
|
</a>
|
@@ -387,21 +388,20 @@ Test
|
|
387
388
|
</div>
|
388
389
|
</dl>
|
389
390
|
</section>
|
390
|
-
<section class='appendix' id='report-generation-software' property='earl:generatedBy' resource='
|
391
|
+
<section class='appendix' id='report-generation-software' property='earl:generatedBy' resource='https://rubygems.org/gems/earl-report' typeof='Software doap:Project'>
|
391
392
|
<h2>
|
392
393
|
<span class='secno'>D.</span>
|
393
394
|
Report Generation Software
|
394
395
|
</h2>
|
395
396
|
<p>
|
396
397
|
This report generated by
|
397
|
-
<span property='doap:name'><a href='
|
398
|
+
<span property='doap:name'><a href='https://rubygems.org/gems/earl-report'>earl-report</a></span>
|
398
399
|
<meta content='Earl Report summary generator' property='doap:shortdesc' />
|
399
400
|
<meta content='EarlReport generates HTML+RDFa rollups of multiple EARL reports' property='doap:description' />
|
400
401
|
version
|
401
|
-
<span property='doap:release' resource='https://github.com/gkellogg/earl-report/tree/0.
|
402
|
-
<span property='doap:revision'>0.
|
403
|
-
<meta content='earl-report-0.
|
404
|
-
<meta datatype='xsd:date' property='doap:created' />
|
402
|
+
<span property='doap:release' resource='https://github.com/gkellogg/earl-report/tree/0.5.1' typeof='doap:Version'>
|
403
|
+
<span property='doap:revision'>0.5.1</span>
|
404
|
+
<meta content='earl-report-0.5.1' property='doap:name' />
|
405
405
|
</span>
|
406
406
|
an
|
407
407
|
<a href='http://unlicense.org' property='doap:license'>Unlicensed</a>
|
@@ -1,5 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"@context": {
|
3
|
+
"@version": 1.1,
|
3
4
|
"@vocab": "http://www.w3.org/ns/earl#",
|
4
5
|
"foaf:homepage": {
|
5
6
|
"@type": "@id"
|
@@ -107,72 +108,105 @@
|
|
107
108
|
"doap:Project"
|
108
109
|
],
|
109
110
|
"name": "Turtle Test Results",
|
110
|
-
"bibRef": "[[TURTLE]]",
|
111
111
|
"generatedBy": {
|
112
|
-
"@id": "
|
112
|
+
"@id": "https://rubygems.org/gems/earl-report",
|
113
113
|
"@type": [
|
114
114
|
"Software",
|
115
115
|
"doap:Project"
|
116
116
|
],
|
117
|
-
"shortdesc": "Earl Report summary generator",
|
118
117
|
"name": "earl-report",
|
118
|
+
"shortdesc": "Earl Report summary generator",
|
119
|
+
"doapDesc": "EarlReport generates HTML+RDFa rollups of multiple EARL reports",
|
120
|
+
"license": "http://unlicense.org",
|
121
|
+
"language": "Ruby",
|
119
122
|
"developer": [
|
120
123
|
{
|
121
124
|
"@id": "http://greggkellogg.net/foaf#me",
|
122
125
|
"@type": [
|
123
|
-
"
|
124
|
-
"
|
126
|
+
"foaf:Person",
|
127
|
+
"Assertor"
|
125
128
|
],
|
126
129
|
"foaf:name": "Gregg Kellogg",
|
127
130
|
"foaf:homepage": "http://greggkellogg.net/"
|
128
131
|
}
|
129
132
|
],
|
130
|
-
"
|
131
|
-
"language": "Ruby",
|
133
|
+
"homepage": "https://github.com/gkellogg/earl-report",
|
132
134
|
"release": {
|
133
|
-
"@id": "https://github.com/gkellogg/earl-report/tree/0.
|
135
|
+
"@id": "https://github.com/gkellogg/earl-report/tree/0.5.1",
|
134
136
|
"@type": "doap:Version",
|
135
|
-
"name": "earl-report-0.
|
137
|
+
"name": "earl-report-0.5.1",
|
136
138
|
"doap:created": {
|
137
|
-
"@
|
138
|
-
"@
|
139
|
+
"@type": "http://www.w3.org/2001/XMLSchema#date",
|
140
|
+
"@value": "2020-04-11"
|
139
141
|
},
|
140
|
-
"revision": "0.
|
141
|
-
}
|
142
|
-
"homepage": "https://github.com/gkellogg/earl-report",
|
143
|
-
"license": "http://unlicense.org"
|
142
|
+
"revision": "0.5.1"
|
143
|
+
}
|
144
144
|
},
|
145
|
+
"bibRef": "[[TURTLE]]",
|
146
|
+
"testSubjects": [
|
147
|
+
{
|
148
|
+
"@id": "https://rubygems.org/gems/rdf-turtle",
|
149
|
+
"@type": [
|
150
|
+
"Software",
|
151
|
+
"TestSubject",
|
152
|
+
"doap:Project"
|
153
|
+
],
|
154
|
+
"name": "RDF::Turtle",
|
155
|
+
"doapDesc": "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.",
|
156
|
+
"language": "Ruby",
|
157
|
+
"developer": [
|
158
|
+
{
|
159
|
+
"@id": "http://greggkellogg.net/foaf#me",
|
160
|
+
"@type": [
|
161
|
+
"foaf:Person",
|
162
|
+
"Assertor"
|
163
|
+
],
|
164
|
+
"foaf:name": "Gregg Kellogg",
|
165
|
+
"foaf:homepage": "http://greggkellogg.net/"
|
166
|
+
}
|
167
|
+
],
|
168
|
+
"homepage": "http://ruby-rdf.github.com/rdf-turtle",
|
169
|
+
"release": {
|
170
|
+
"@id": "_:b2",
|
171
|
+
"revision": "unknown"
|
172
|
+
}
|
173
|
+
}
|
174
|
+
],
|
175
|
+
"assertions": [
|
176
|
+
"/Users/gregg/Projects/earl-report/spec/test-files/report-complete.ttl"
|
177
|
+
],
|
145
178
|
"entries": [
|
146
179
|
{
|
147
180
|
"@id": "http://example/manifest.ttl",
|
148
181
|
"@type": [
|
149
|
-
"
|
150
|
-
"
|
182
|
+
"mf:Manifest",
|
183
|
+
"Report"
|
151
184
|
],
|
152
185
|
"rdfs:comment": "Description for Example Test Cases",
|
186
|
+
"title": "Example Test Cases",
|
153
187
|
"entries": [
|
154
188
|
{
|
155
189
|
"@id": "http://example/manifest.ttl#testeval00",
|
156
190
|
"@type": [
|
157
191
|
"http://www.w3.org/ns/rdftest#TestTurtleEval",
|
158
|
-
"
|
159
|
-
"
|
192
|
+
"TestCase",
|
193
|
+
"TestCriterion"
|
160
194
|
],
|
161
195
|
"testResult": "http://example/test-00.out",
|
162
196
|
"rdfs:comment": "Blank subject",
|
163
197
|
"assertions": [
|
164
198
|
{
|
165
|
-
"@id": "_:
|
199
|
+
"@id": "_:b4",
|
166
200
|
"@type": "Assertion",
|
167
201
|
"test": "http://example/manifest.ttl#testeval00",
|
168
|
-
"mode": "earl:automatic",
|
169
|
-
"subject": "http://rubygems.org/gems/rdf-turtle",
|
170
202
|
"assertedBy": "http://greggkellogg.net/foaf#me",
|
203
|
+
"subject": "https://rubygems.org/gems/rdf-turtle",
|
171
204
|
"result": {
|
172
|
-
"@id": "_:
|
205
|
+
"@id": "_:b5",
|
173
206
|
"@type": "TestResult",
|
174
207
|
"outcome": "earl:passed"
|
175
|
-
}
|
208
|
+
},
|
209
|
+
"mode": "earl:automatic"
|
176
210
|
}
|
177
211
|
],
|
178
212
|
"title": "subm-test-00",
|
@@ -182,8 +216,8 @@
|
|
182
216
|
"@id": "_:b0",
|
183
217
|
"@type": [
|
184
218
|
"http://www.w3.org/ns/rdftest#TestTurtleEval",
|
185
|
-
"
|
186
|
-
"
|
219
|
+
"TestCase",
|
220
|
+
"TestCriterion"
|
187
221
|
],
|
188
222
|
"testResult": "http://example/test-01.out",
|
189
223
|
"rdfs:comment": "@prefix and qnames",
|
@@ -192,9 +226,9 @@
|
|
192
226
|
"@id": "_:b1",
|
193
227
|
"@type": "Assertion",
|
194
228
|
"test": "_:b0",
|
195
|
-
"subject": "
|
229
|
+
"subject": "https://rubygems.org/gems/rdf-turtle",
|
196
230
|
"result": {
|
197
|
-
"@id": "_:
|
231
|
+
"@id": "_:b3",
|
198
232
|
"@type": "TestResult",
|
199
233
|
"outcome": "earl:untested"
|
200
234
|
},
|
@@ -204,36 +238,7 @@
|
|
204
238
|
"title": "subm-test-01",
|
205
239
|
"testAction": "http://example/test-01.ttl"
|
206
240
|
}
|
207
|
-
]
|
208
|
-
"title": "Example Test Cases"
|
209
|
-
}
|
210
|
-
],
|
211
|
-
"assertions": [
|
212
|
-
"/Users/gregg/Projects/earl-report/spec/test-files/report-complete.ttl"
|
213
|
-
],
|
214
|
-
"testSubjects": [
|
215
|
-
{
|
216
|
-
"@id": "http://rubygems.org/gems/rdf-turtle",
|
217
|
-
"@type": [
|
218
|
-
"Software",
|
219
|
-
"TestSubject",
|
220
|
-
"doap:Project"
|
221
|
-
],
|
222
|
-
"name": "RDF::Turtle",
|
223
|
-
"developer": [
|
224
|
-
{
|
225
|
-
"@id": "http://greggkellogg.net/foaf#me",
|
226
|
-
"@type": [
|
227
|
-
"Assertor",
|
228
|
-
"foaf:Person"
|
229
|
-
],
|
230
|
-
"foaf:name": "Gregg Kellogg",
|
231
|
-
"foaf:homepage": "http://greggkellogg.net/"
|
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."
|
241
|
+
]
|
237
242
|
}
|
238
243
|
]
|
239
244
|
}
|
data/spec/test-files/results.ttl
CHANGED
@@ -13,20 +13,20 @@
|
|
13
13
|
doap:name "Turtle Test Results";
|
14
14
|
mf:entries (<http://example/manifest.ttl>);
|
15
15
|
earl:assertions </Users/gregg/Projects/earl-report/spec/test-files/report-complete.ttl>;
|
16
|
-
earl:generatedBy <
|
17
|
-
earl:testSubjects <
|
16
|
+
earl:generatedBy <https://rubygems.org/gems/earl-report>;
|
17
|
+
earl:testSubjects <https://rubygems.org/gems/rdf-turtle> .
|
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> _:g487980);
|
25
25
|
mf:name "Example Test Cases" .
|
26
26
|
|
27
27
|
<http://example/manifest.ttl#testeval00> a <http://www.w3.org/ns/rdftest#TestTurtleEval>,
|
28
|
-
earl:
|
29
|
-
earl:
|
28
|
+
earl:TestCase,
|
29
|
+
earl:TestCriterion;
|
30
30
|
rdfs:comment "Blank subject";
|
31
31
|
mf:action <http://example/test-00.ttl>;
|
32
32
|
mf:name "subm-test-00";
|
@@ -39,13 +39,13 @@
|
|
39
39
|
a earl:TestResult;
|
40
40
|
earl:outcome earl:passed
|
41
41
|
];
|
42
|
-
earl:subject <
|
42
|
+
earl:subject <https://rubygems.org/gems/rdf-turtle>;
|
43
43
|
earl:test <http://example/manifest.ttl#testeval00>
|
44
44
|
] .
|
45
45
|
|
46
|
-
_:
|
47
|
-
earl:
|
48
|
-
earl:
|
46
|
+
_:g487980 a <http://www.w3.org/ns/rdftest#TestTurtleEval>,
|
47
|
+
earl:TestCase,
|
48
|
+
earl:TestCriterion;
|
49
49
|
rdfs:comment "@prefix and qnames";
|
50
50
|
mf:action <http://example/test-01.ttl>;
|
51
51
|
mf:name "subm-test-01";
|
@@ -56,29 +56,30 @@ _:g70364851762280 a <http://www.w3.org/ns/rdftest#TestTurtleEval>,
|
|
56
56
|
a earl:TestResult;
|
57
57
|
earl:outcome earl:untested
|
58
58
|
];
|
59
|
-
earl:subject <
|
60
|
-
earl:test _:
|
59
|
+
earl:subject <https://rubygems.org/gems/rdf-turtle>;
|
60
|
+
earl:test _:g487980
|
61
61
|
] .
|
62
62
|
|
63
63
|
# Test Subjects
|
64
64
|
|
65
|
-
<
|
65
|
+
<https://rubygems.org/gems/rdf-turtle> a earl:Software,
|
66
66
|
earl:TestSubject,
|
67
67
|
doap:Project;
|
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
|
-
doap:programming-language "Ruby"
|
72
|
+
doap:programming-language "Ruby";
|
73
|
+
doap:release [doap:revision "unknown"] .
|
73
74
|
|
74
|
-
<http://greggkellogg.net/foaf#me> a
|
75
|
-
|
75
|
+
<http://greggkellogg.net/foaf#me> a foaf:Person,
|
76
|
+
earl:Assertor;
|
76
77
|
foaf:homepage <http://greggkellogg.net/>;
|
77
78
|
foaf:name "Gregg Kellogg" .
|
78
79
|
|
79
80
|
# Report Generation Software
|
80
81
|
|
81
|
-
<
|
82
|
+
<https://rubygems.org/gems/earl-report> a earl:Software,
|
82
83
|
doap:Project;
|
83
84
|
doap:description "EarlReport generates HTML+RDFa rollups of multiple EARL reports"@en;
|
84
85
|
doap:developer <http://greggkellogg.net/foaf#me>;
|
@@ -86,10 +87,10 @@ _:g70364851762280 a <http://www.w3.org/ns/rdftest#TestTurtleEval>,
|
|
86
87
|
doap:license <http://unlicense.org>;
|
87
88
|
doap:name "earl-report";
|
88
89
|
doap:programming-language "Ruby";
|
89
|
-
doap:release <https://github.com/gkellogg/earl-report/tree/0.
|
90
|
+
doap:release <https://github.com/gkellogg/earl-report/tree/0.5.1>;
|
90
91
|
doap:shortdesc "Earl Report summary generator"@en .
|
91
92
|
|
92
|
-
<https://github.com/gkellogg/earl-report/tree/0.
|
93
|
-
doap:created "
|
94
|
-
doap:name "earl-report-0.
|
95
|
-
doap:revision "0.
|
93
|
+
<https://github.com/gkellogg/earl-report/tree/0.5.1> a doap:Version;
|
94
|
+
doap:created "2020-04-11"^^xsd:date;
|
95
|
+
doap:name "earl-report-0.5.1";
|
96
|
+
doap:revision "0.5.1" .
|
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: linkeddata
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '3.
|
19
|
+
version: '3.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '3.
|
26
|
+
version: '3.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: haml
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '5.
|
33
|
+
version: '5.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '5.
|
40
|
+
version: '5.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: kramdown
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '2.3'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '2.3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: nokogiri
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,20 +66,34 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rexml
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.2'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.2'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '3.
|
89
|
+
version: '3.9'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3.
|
96
|
+
version: '3.9'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rspec-its
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +142,14 @@ dependencies:
|
|
128
142
|
requirements:
|
129
143
|
- - "~>"
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
145
|
+
version: '13.0'
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - "~>"
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
152
|
+
version: '13.0'
|
139
153
|
description: EarlReport generates HTML+RDFa rollups of multiple EARL reports.
|
140
154
|
email: gregg@greggkellogg.net
|
141
155
|
executables:
|
@@ -162,11 +176,11 @@ files:
|
|
162
176
|
- spec/test-files/results.ttl
|
163
177
|
- spec/test-files/test-00.out
|
164
178
|
- spec/test-files/test-00.ttl
|
165
|
-
homepage:
|
179
|
+
homepage: https://github.com/gkellogg/earl-report
|
166
180
|
licenses:
|
167
181
|
- Unlicense
|
168
182
|
metadata: {}
|
169
|
-
post_install_message:
|
183
|
+
post_install_message:
|
170
184
|
rdoc_options: []
|
171
185
|
require_paths:
|
172
186
|
- lib
|
@@ -181,21 +195,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
195
|
- !ruby/object:Gem::Version
|
182
196
|
version: '0'
|
183
197
|
requirements: []
|
184
|
-
rubygems_version: 3.
|
185
|
-
signing_key:
|
198
|
+
rubygems_version: 3.2.3
|
199
|
+
signing_key:
|
186
200
|
specification_version: 4
|
187
201
|
summary: Earl Report summary generator
|
188
202
|
test_files:
|
189
|
-
- spec/spec_helper.rb
|
190
203
|
- spec/earl_report_spec.rb
|
204
|
+
- spec/spec_helper.rb
|
205
|
+
- spec/test-files/doap.ttl
|
191
206
|
- spec/test-files/foaf.ttl
|
192
207
|
- spec/test-files/manifest.ttl
|
193
|
-
- spec/test-files/doap.ttl
|
194
|
-
- spec/test-files/results.jsonld
|
195
|
-
- spec/test-files/results.ttl
|
196
208
|
- spec/test-files/report-complete.ttl
|
197
209
|
- spec/test-files/report-no-doap.ttl
|
198
|
-
- spec/test-files/results.html
|
199
210
|
- spec/test-files/report-no-foaf.ttl
|
200
|
-
- spec/test-files/
|
211
|
+
- spec/test-files/results.html
|
212
|
+
- spec/test-files/results.jsonld
|
213
|
+
- spec/test-files/results.ttl
|
201
214
|
- spec/test-files/test-00.out
|
215
|
+
- spec/test-files/test-00.ttl
|