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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5d9b1de6d1ff74153dad8f2ff10691a43066da67b118c2c3cac375d030963e9
4
- data.tar.gz: 2717c41b45c6f878157d070e34ca459530eda435b668e83141e6acb730f0be7b
3
+ metadata.gz: 7879d1953b9802807a57232a01207aa3b63f5ed80c025273ccdfe826e6f86c93
4
+ data.tar.gz: bf899c9f720aa8b8f67694e7398f693502fef7fb748b3fa5136acd05fe7495ca
5
5
  SHA512:
6
- metadata.gz: f32d6ee582e6fb93c7a87f43a88c8146ec2ca952cb6000e8459213d65260cb454a253947adefe013d8cd0026aa847fde157a0eda0949077cb72e265f06ed61b3
7
- data.tar.gz: 6ade127c2bb38bb1bec57106a71672d091a107799e6b2e1f37e65ecc66e4608a2573455a50470be918636aa230669b88fbde660e65c9172d660619982539dd73
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.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 `earl:assertions`. Additionally, all included manifests are included in a top-level entity referenced via `mf:entries`. For example:
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
- earl:assertions (<spec/test-files/report-complete.ttl>) .
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
- earl:assertions ([
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.6.2
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
- earl:assertions #{subjects.values.map {|f| f.to_ntriples}.join(",\n ")};
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
- "earl:assertions #{dv.map {|a| ttl_assertion(a)}.join(", ")}"
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, property: "earl:assertions", typeof: assertion['@type']}
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 earl:assertions"}
421
+ %section.appendix#individual-test-results{rel: "xhv:related mf:report"}
422
422
  %h2
423
423
  %span.secno="B."
424
424
  Individual Test Results
@@ -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
- earl:assertions ?assertionFile;
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
- earl:assertions [ a earl:Assertion; earl:subject <https://rubygems.org/gems/rdf-turtle> ] .
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='TestCriterion TestCase http://www.w3.org/ns/rdftest#TestTurtleEval'>
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' property='earl:assertions' typeof='Assertion'>
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='_:b3' typeof='TestCriterion TestCase http://www.w3.org/ns/rdftest#TestTurtleEval'>
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='#test_14698d4bb89cdb1ecd9215e2a55d29c6'>subm-test-01</a>
266
+ <a href='#test_b4d4f9531721bf1a6e4562f27353abd3'>subm-test-01</a>
267
267
  </td>
268
- <td class='UNTESTED' property='earl:assertions' typeof='Assertion'>
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 earl:assertions'>
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='test_14698d4bb89cdb1ecd9215e2a55d29c6' resource='_:b3'>
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='_:b3'>
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.1' typeof='doap:Version'>
403
- <span property='doap:revision'>0.6.1</span>
404
- <meta content='earl-report-0.6.1' property='doap:name' />
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
- "TestCriterion",
199
+ "http://www.w3.org/ns/rdftest#TestTurtleEval",
129
200
  "TestCase",
130
- "http://www.w3.org/ns/rdftest#TestTurtleEval"
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": "_:b1",
209
+ "@id": "_:b2",
137
210
  "@type": "Assertion",
138
- "assertedBy": "https://greggkellogg.net/foaf#me",
139
- "subject": "https://rubygems.org/gems/rdf-turtle",
211
+ "test": "http://example/manifest.ttl#testeval00",
140
212
  "result": {
141
- "@id": "_:b4",
213
+ "@id": "_:b3",
142
214
  "@type": "TestResult",
143
215
  "outcome": "earl:passed"
144
216
  },
145
217
  "mode": "earl:automatic",
146
- "test": "http://example/manifest.ttl#testeval00"
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": "_:b2",
224
+ "@id": "_:b1",
154
225
  "@type": [
155
- "TestCriterion",
226
+ "http://www.w3.org/ns/rdftest#TestTurtleEval",
156
227
  "TestCase",
157
- "http://www.w3.org/ns/rdftest#TestTurtleEval"
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": "_:b3",
236
+ "@id": "_:b4",
164
237
  "@type": "Assertion",
165
- "subject": "https://rubygems.org/gems/rdf-turtle",
238
+ "test": "_:b1",
166
239
  "result": {
167
240
  "@id": "_:b5",
168
241
  "@type": "TestResult",
169
242
  "outcome": "earl:untested"
170
243
  },
171
- "test": "_:b2",
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
  }
@@ -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:assertions </Users/gregg/Projects/earl-report/spec/test-files/report-complete.ttl> ;
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 earl:TestCriterion, earl:TestCase, <http://www.w3.org/ns/rdftest#TestTurtleEval> ;
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 earl:TestCriterion, earl:TestCase, <http://www.w3.org/ns/rdftest#TestTurtleEval> ;
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:developer <https://greggkellogg.net/foaf#me> ;
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:release [doap:revision "unknown"] .
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.1>;
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.1> a doap:Version;
81
- doap:name "earl-report-0.6.1";
82
- doap:created "2021-03-19"^^xsd:date;
83
- doap:revision "0.6.1" .
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.6.2
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: nokogiri
118
+ name: nokogumbo
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
121
  - - "~>"
116
122
  - !ruby/object:Gem::Version
117
- version: '1.10'
118
- type: :runtime
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: '3.2'
130
+ version: '2.0'
139
131
  - !ruby/object:Gem::Dependency
140
132
  name: rdf-rdfa
141
133
  requirement: !ruby/object:Gem::Requirement