hydra-works 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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