hydra-works 0.8.1 → 0.9.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
  SHA1:
3
- metadata.gz: 07b6006359065b77e76cc0b9d5542c9da189a2fb
4
- data.tar.gz: 7d37f4d93a294ec62adf36a63362663ca8dea153
3
+ metadata.gz: 8e1d3bbe7957645b6170f8bc00a7084fa94e670b
4
+ data.tar.gz: 901fcd09d4e40f5a97114e2f070ee36dffd231d6
5
5
  SHA512:
6
- metadata.gz: 5cf2ff2d43e8fec1805c228e2d46793b178993e49ce6837c68e064ec9b68573cfc9f7a51011185cfbbd146d4da55208d6643383adb037e6d4f5772f6d776c57e
7
- data.tar.gz: 71eadabf972b27c11dcfdcedb8fba6c078fb78ae7929cbae0678c4450713361980c3e5bf765a8547c362caf8243dd9c3f92ddbf1db672467fe191508b699adb8
6
+ metadata.gz: d9b4ff1445474ab473dd55a97fa0de5d3e29a5879614ec0fea840929f959c9b8a8e6d424c1d7224b925863b8f157d20d8cebcce4bdf1abc1f3bb38b8f91752f2
7
+ data.tar.gz: b2cbefad14f81c691c5129fe0c6e7895a6f1a6b3392bd6a129490e2556b42ff4e796836de751752068d4c5c984b675dfdee7b832c2e272649cf62d5ac7d3c01f
data/README.md CHANGED
@@ -15,6 +15,8 @@ The Hydra::Works gem implements the [PCDM](https://github.com/duraspace/pcdm/wik
15
15
  * **Work**: a *pcdm:Object* that holds zero or more **FileSets** and zero or more **Works**
16
16
  * **FileSet**: a *pcdm:Object* that groups one or more related *pcdm:Files*, such as an original file (e.g., PDF document), its derivatives (e.g., a thumbnail), and extracted full-text
17
17
 
18
+ View [a diagram of the Hydra::Works domain model](https://docs.google.com/drawings/d/1if47TYgEhqDLPh3D0026B_cBLa0BEAOpWPs8AqoQMZE/edit).
19
+
18
20
  Behaviors included in the model include:
19
21
 
20
22
  * Characterization of original files within FileSets
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'hydra-pcdm', '~> 0.5'
21
+ spec.add_dependency 'hydra-pcdm', '>= 0.6'
22
22
  spec.add_dependency 'hydra-derivatives', '~> 3.0'
23
23
  spec.add_dependency 'hydra-file_characterization', '~> 0.3', '>= 0.3.3'
24
24
 
@@ -1,5 +1,4 @@
1
1
  require 'hydra/works/version'
2
- require 'active_fedora/aggregation'
3
2
  require 'hydra/pcdm'
4
3
  require 'hydra/derivatives'
5
4
 
@@ -1,9 +1,9 @@
1
1
  module Hydra::Works::Characterization
2
2
  class DocumentSchema < ActiveTriples::Schema
3
3
  property :file_title, predicate: RDF::Vocab::DC11.title
4
- property :file_author, predicate: RDF::Vocab::DC11.creator
4
+ property :creator, predicate: RDF::Vocab::DC11.creator
5
5
  property :page_count, predicate: RDF::Vocab::NFO.pageCount
6
- property :file_language, predicate: RDF::Vocab::DC11.language
6
+ property :language, predicate: RDF::Vocab::DC11.language
7
7
  property :word_count, predicate: RDF::Vocab::NFO.wordCount
8
8
  property :character_count, predicate: RDF::Vocab::NFO.characterCount
9
9
  property :line_count, predicate: RDF::Vocab::NFO.lineCount
@@ -5,6 +5,7 @@ module Hydra::Works::Characterization
5
5
  included do
6
6
  # Apply the document schema. This will add properties defined in the schema.
7
7
  apply_schema DocumentSchema, AlreadyThereStrategy
8
+ parser_mapping.merge!(file_author: :creator, file_language: :language)
8
9
  end
9
10
  end
10
11
  end
@@ -41,7 +41,8 @@ module Hydra::Works
41
41
  else
42
42
  Tempfile.open('') do |t|
43
43
  t.binmode
44
- t.write(file)
44
+ t.write(file.content.read)
45
+ file.content.rewind
45
46
  t.close
46
47
  t.path
47
48
  end
@@ -1,5 +1,5 @@
1
1
  module Hydra
2
2
  module Works
3
- VERSION = '0.8.1'.freeze
3
+ VERSION = '0.9.0'.freeze
4
4
  end
5
5
  end
@@ -59,32 +59,32 @@
59
59
 
60
60
  <types>
61
61
  <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
62
- <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
62
+ <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
63
63
  <fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
64
-
64
+
65
65
  <!-- Default numeric field types. -->
66
66
  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
67
67
  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
68
68
  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
69
69
  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
70
-
70
+
71
71
  <!-- trie numeric field types for faster range queries -->
72
72
  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
73
73
  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
74
74
  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
75
75
  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
76
-
76
+
77
77
  <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
78
78
  Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
79
79
  -->
80
80
  <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
81
81
  <!-- A Trie based date field for faster date range queries and date faceting. -->
82
82
  <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
83
-
84
-
83
+
84
+
85
85
  <!-- This point type indexes the coordinates as separate fields (subFields)
86
86
  If subFieldType is defined, it references a type, and a dynamic field
87
- definition is created matching *___<typename>. Alternately, if
87
+ definition is created matching *___<typename>. Alternately, if
88
88
  subFieldSuffix is defined, that is used to create the subFields.
89
89
  Example: if subFieldType="double", then the coordinates would be
90
90
  indexed in fields myloc_0___double,myloc_1___double.
@@ -94,17 +94,17 @@
94
94
  users normally should not need to know about them.
95
95
  -->
96
96
  <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
97
-
97
+
98
98
  <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
99
99
  <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
100
-
100
+
101
101
  <!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
102
102
  For more information about this and other Spatial fields new to Solr 4, see:
103
103
  http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
104
104
  -->
105
105
  <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
106
- geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" />
107
-
106
+ geo="true" distErrPct="0.025" maxDistErr="0.000009" distanceUnits="degrees" />
107
+
108
108
  <fieldType name="text" class="solr.TextField" omitNorms="false">
109
109
  <analyzer>
110
110
  <tokenizer class="solr.ICUTokenizerFactory"/>
@@ -112,7 +112,7 @@
112
112
  <filter class="solr.TrimFilterFactory"/>
113
113
  </analyzer>
114
114
  </fieldType>
115
-
115
+
116
116
  <!-- A text field that only splits on whitespace for exact matching of words -->
117
117
  <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
118
118
  <analyzer>
@@ -120,7 +120,7 @@
120
120
  <filter class="solr.TrimFilterFactory"/>
121
121
  </analyzer>
122
122
  </fieldType>
123
-
123
+
124
124
  <!-- single token analyzed text, for sorting. Punctuation is significant. -->
125
125
  <fieldtype name="alphaSort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
126
126
  <analyzer>
@@ -129,7 +129,7 @@
129
129
  <filter class="solr.TrimFilterFactory" />
130
130
  </analyzer>
131
131
  </fieldtype>
132
-
132
+
133
133
  <!-- A text field with defaults appropriate for English -->
134
134
  <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
135
135
  <analyzer>
@@ -144,7 +144,7 @@
144
144
  <filter class="solr.TrimFilterFactory"/>
145
145
  </analyzer>
146
146
  </fieldType>
147
-
147
+
148
148
  <!-- queries for paths match documents at that path, or in descendent paths -->
149
149
  <fieldType name="descendent_path" class="solr.TextField">
150
150
  <analyzer type="index">
@@ -154,7 +154,7 @@
154
154
  <tokenizer class="solr.KeywordTokenizerFactory" />
155
155
  </analyzer>
156
156
  </fieldType>
157
-
157
+
158
158
  <!-- queries for paths match documents at that path, or in ancestor paths -->
159
159
  <fieldType name="ancestor_path" class="solr.TextField">
160
160
  <analyzer type="index">
@@ -179,12 +179,12 @@
179
179
  <fields>
180
180
  <!-- If you remove this field, you must _also_ disable the update log in solrconfig.xml
181
181
  or Solr won't start. _version_ and update log are required for SolrCloud
182
- -->
182
+ -->
183
183
  <field name="_version_" type="long" indexed="true" stored="true"/>
184
-
184
+
185
185
  <field name="id" type="string" stored="true" indexed="true" multiValued="false" required="true"/>
186
186
  <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
187
-
187
+
188
188
  <field name="lat" type="tdouble" stored="true" indexed="true" multiValued="false"/>
189
189
  <field name="lng" type="tdouble" stored="true" indexed="true" multiValued="false"/>
190
190
 
@@ -201,7 +201,7 @@
201
201
  <dynamicField name="*_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
202
202
  <dynamicField name="*_tsiv" type="text" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
203
203
  <dynamicField name="*_tsimv" type="text" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
204
-
204
+
205
205
  <!-- English text (_te...) -->
206
206
  <dynamicField name="*_tei" type="text_en" stored="false" indexed="true" multiValued="false"/>
207
207
  <dynamicField name="*_teim" type="text_en" stored="false" indexed="true" multiValued="true"/>
@@ -213,7 +213,7 @@
213
213
  <dynamicField name="*_teimv" type="text_en" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
214
214
  <dynamicField name="*_tesiv" type="text_en" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
215
215
  <dynamicField name="*_tesimv" type="text_en" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
216
-
216
+
217
217
  <!-- string (_s...) -->
218
218
  <dynamicField name="*_si" type="string" stored="false" indexed="true" multiValued="false"/>
219
219
  <dynamicField name="*_sim" type="string" stored="false" indexed="true" multiValued="true"/>
@@ -222,7 +222,7 @@
222
222
  <dynamicField name="*_ssi" type="string" stored="true" indexed="true" multiValued="false"/>
223
223
  <dynamicField name="*_ssim" type="string" stored="true" indexed="true" multiValued="true"/>
224
224
  <dynamicField name="*_ssort" type="alphaSort" stored="false" indexed="true" multiValued="false"/>
225
-
225
+
226
226
  <!-- integer (_i...) -->
227
227
  <dynamicField name="*_ii" type="int" stored="false" indexed="true" multiValued="false"/>
228
228
  <dynamicField name="*_iim" type="int" stored="false" indexed="true" multiValued="true"/>
@@ -230,7 +230,7 @@
230
230
  <dynamicField name="*_ism" type="int" stored="true" indexed="false" multiValued="true"/>
231
231
  <dynamicField name="*_isi" type="int" stored="true" indexed="true" multiValued="false"/>
232
232
  <dynamicField name="*_isim" type="int" stored="true" indexed="true" multiValued="true"/>
233
-
233
+
234
234
  <!-- trie integer (_it...) (for faster range queries) -->
235
235
  <dynamicField name="*_iti" type="tint" stored="false" indexed="true" multiValued="false"/>
236
236
  <dynamicField name="*_itim" type="tint" stored="false" indexed="true" multiValued="true"/>
@@ -238,7 +238,7 @@
238
238
  <dynamicField name="*_itsm" type="tint" stored="true" indexed="false" multiValued="true"/>
239
239
  <dynamicField name="*_itsi" type="tint" stored="true" indexed="true" multiValued="false"/>
240
240
  <dynamicField name="*_itsim" type="tint" stored="true" indexed="true" multiValued="true"/>
241
-
241
+
242
242
  <!-- date (_dt...) -->
243
243
  <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
244
244
  Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z -->
@@ -248,7 +248,7 @@
248
248
  <dynamicField name="*_dtsm" type="date" stored="true" indexed="false" multiValued="true"/>
249
249
  <dynamicField name="*_dtsi" type="date" stored="true" indexed="true" multiValued="false"/>
250
250
  <dynamicField name="*_dtsim" type="date" stored="true" indexed="true" multiValued="true"/>
251
-
251
+
252
252
  <!-- trie date (_dtt...) (for faster range queries) -->
253
253
  <dynamicField name="*_dtti" type="tdate" stored="false" indexed="true" multiValued="false"/>
254
254
  <dynamicField name="*_dttim" type="tdate" stored="false" indexed="true" multiValued="true"/>
@@ -256,7 +256,7 @@
256
256
  <dynamicField name="*_dttsm" type="tdate" stored="true" indexed="false" multiValued="true"/>
257
257
  <dynamicField name="*_dttsi" type="tdate" stored="true" indexed="true" multiValued="false"/>
258
258
  <dynamicField name="*_dttsim" type="tdate" stored="true" indexed="true" multiValued="true"/>
259
-
259
+
260
260
  <!-- long (_l...) -->
261
261
  <dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
262
262
  <dynamicField name="*_lim" type="long" stored="false" indexed="true" multiValued="true"/>
@@ -264,7 +264,7 @@
264
264
  <dynamicField name="*_lsm" type="long" stored="true" indexed="false" multiValued="true"/>
265
265
  <dynamicField name="*_lsi" type="long" stored="true" indexed="true" multiValued="false"/>
266
266
  <dynamicField name="*_lsim" type="long" stored="true" indexed="true" multiValued="true"/>
267
-
267
+
268
268
  <!-- trie long (_lt...) (for faster range queries) -->
269
269
  <dynamicField name="*_lti" type="tlong" stored="false" indexed="true" multiValued="false"/>
270
270
  <dynamicField name="*_ltim" type="tlong" stored="false" indexed="true" multiValued="true"/>
@@ -272,7 +272,7 @@
272
272
  <dynamicField name="*_ltsm" type="tlong" stored="true" indexed="false" multiValued="true"/>
273
273
  <dynamicField name="*_ltsi" type="tlong" stored="true" indexed="true" multiValued="false"/>
274
274
  <dynamicField name="*_ltsim" type="tlong" stored="true" indexed="true" multiValued="true"/>
275
-
275
+
276
276
  <!-- double (_db...) -->
277
277
  <dynamicField name="*_dbi" type="double" stored="false" indexed="true" multiValued="false"/>
278
278
  <dynamicField name="*_dbim" type="double" stored="false" indexed="true" multiValued="true"/>
@@ -280,7 +280,7 @@
280
280
  <dynamicField name="*_dbsm" type="double" stored="true" indexed="false" multiValued="true"/>
281
281
  <dynamicField name="*_dbsi" type="double" stored="true" indexed="true" multiValued="false"/>
282
282
  <dynamicField name="*_dbsim" type="double" stored="true" indexed="true" multiValued="true"/>
283
-
283
+
284
284
  <!-- trie double (_dbt...) (for faster range queries) -->
285
285
  <dynamicField name="*_dbti" type="tdouble" stored="false" indexed="true" multiValued="false"/>
286
286
  <dynamicField name="*_dbtim" type="tdouble" stored="false" indexed="true" multiValued="true"/>
@@ -288,7 +288,7 @@
288
288
  <dynamicField name="*_dbtsm" type="tdouble" stored="true" indexed="false" multiValued="true"/>
289
289
  <dynamicField name="*_dbtsi" type="tdouble" stored="true" indexed="true" multiValued="false"/>
290
290
  <dynamicField name="*_dbtsim" type="tdouble" stored="true" indexed="true" multiValued="true"/>
291
-
291
+
292
292
  <!-- float (_f...) -->
293
293
  <dynamicField name="*_fi" type="float" stored="false" indexed="true" multiValued="false"/>
294
294
  <dynamicField name="*_fim" type="float" stored="false" indexed="true" multiValued="true"/>
@@ -296,7 +296,7 @@
296
296
  <dynamicField name="*_fsm" type="float" stored="true" indexed="false" multiValued="true"/>
297
297
  <dynamicField name="*_fsi" type="float" stored="true" indexed="true" multiValued="false"/>
298
298
  <dynamicField name="*_fsim" type="float" stored="true" indexed="true" multiValued="true"/>
299
-
299
+
300
300
  <!-- trie float (_ft...) (for faster range queries) -->
301
301
  <dynamicField name="*_fti" type="tfloat" stored="false" indexed="true" multiValued="false"/>
302
302
  <dynamicField name="*_ftim" type="tfloat" stored="false" indexed="true" multiValued="true"/>
@@ -304,12 +304,12 @@
304
304
  <dynamicField name="*_ftsm" type="tfloat" stored="true" indexed="false" multiValued="true"/>
305
305
  <dynamicField name="*_ftsi" type="tfloat" stored="true" indexed="true" multiValued="false"/>
306
306
  <dynamicField name="*_ftsim" type="tfloat" stored="true" indexed="true" multiValued="true"/>
307
-
307
+
308
308
  <!-- boolean (_b...) -->
309
309
  <dynamicField name="*_bi" type="boolean" stored="false" indexed="true" multiValued="false"/>
310
310
  <dynamicField name="*_bs" type="boolean" stored="true" indexed="false" multiValued="false"/>
311
311
  <dynamicField name="*_bsi" type="boolean" stored="true" indexed="true" multiValued="false"/>
312
-
312
+
313
313
  <!-- Type used to index the lat and lon components for the "location" FieldType -->
314
314
  <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
315
315
 
@@ -329,7 +329,7 @@
329
329
 
330
330
  </fields>
331
331
 
332
- <!-- Field to use to determine and enforce document uniqueness.
332
+ <!-- Field to use to determine and enforce document uniqueness.
333
333
  Unless this field is marked with required="false", it will be a required field
334
334
  -->
335
335
  <uniqueKey>id</uniqueKey>
@@ -0,0 +1 @@
1
+ X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
@@ -23,7 +23,7 @@ describe Hydra::Works::VirusCheck do
23
23
  end
24
24
 
25
25
  subject { FileWithVirusCheck.new }
26
- let(:file) { Hydra::PCDM::File.new File.join(fixture_path, 'sample-file.pdf') }
26
+ let(:file) { Hydra::PCDM::File.new { |f| f.content = File.new(File.join(fixture_path, 'sample-file.pdf')) } }
27
27
 
28
28
  before do
29
29
  allow(subject).to receive(:original_file) { file }
@@ -61,6 +61,18 @@ describe Hydra::Works::VirusCheck do
61
61
  expect(subject.send(:local_path_for_file, file)).to eq('/tmp/file.pdf')
62
62
  end
63
63
  end
64
+
65
+ context 'original file does not respond to path' do
66
+ before do
67
+ allow(file).to receive(:respond_to?).and_call_original
68
+ allow(file).to receive(:respond_to?).with(:path).and_return(false)
69
+ end
70
+
71
+ it 'reads the content of the original_file' do
72
+ expect(file.content).to receive(:read)
73
+ subject.detect_viruses
74
+ end
75
+ end
64
76
  end
65
77
 
66
78
  context "Without ClamAV" do
@@ -73,7 +85,7 @@ describe Hydra::Works::VirusCheck do
73
85
  end
74
86
 
75
87
  subject { FileWithVirusCheck.new }
76
- let(:file) { Hydra::PCDM::File.new File.join(fixture_path, 'sample-file.pdf') }
88
+ let(:file) { Hydra::PCDM::File.new { |f| f.content = File.new(File.join(fixture_path, 'sample-file.pdf')) } }
77
89
 
78
90
  before do
79
91
  allow(subject).to receive(:original_file) { file }
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-works
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-25 00:00:00.000000000 Z
11
+ date: 2016-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hydra-pcdm
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.5'
19
+ version: '0.6'
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: '0.5'
26
+ version: '0.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: hydra-derivatives
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -241,6 +241,7 @@ files:
241
241
  - spec/fixtures/Example.ogg
242
242
  - spec/fixtures/charter.docx
243
243
  - spec/fixtures/countdown.avi
244
+ - spec/fixtures/eicar.txt
244
245
  - spec/fixtures/fits_0.6.2_avi.xml
245
246
  - spec/fixtures/fits_0.6.2_jp2.xml
246
247
  - spec/fixtures/fits_0.6.2_jpg.xml
@@ -303,7 +304,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
303
304
  version: '0'
304
305
  requirements: []
305
306
  rubyforge_project:
306
- rubygems_version: 2.4.5.1
307
+ rubygems_version: 2.4.8
307
308
  signing_key:
308
309
  specification_version: 4
309
310
  summary: Fundamental repository data model for hydra
@@ -311,6 +312,7 @@ test_files:
311
312
  - spec/fixtures/Example.ogg
312
313
  - spec/fixtures/charter.docx
313
314
  - spec/fixtures/countdown.avi
315
+ - spec/fixtures/eicar.txt
314
316
  - spec/fixtures/fits_0.6.2_avi.xml
315
317
  - spec/fixtures/fits_0.6.2_jp2.xml
316
318
  - spec/fixtures/fits_0.6.2_jpg.xml