assembly-objectfile 1.13.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -1
  3. data/.gitignore +0 -1
  4. data/.rubocop.yml +34 -1
  5. data/.rubocop_todo.yml +3 -120
  6. data/Gemfile.lock +97 -0
  7. data/README.md +6 -6
  8. data/assembly-objectfile.gemspec +4 -8
  9. data/config/boot.rb +0 -1
  10. data/lib/{assembly-objectfile → assembly/object_file}/version.rb +1 -1
  11. data/lib/{assembly-objectfile/object_fileable.rb → assembly/object_file.rb} +116 -101
  12. data/lib/assembly-objectfile.rb +14 -19
  13. data/spec/assembly/object_file_spec.rb +452 -0
  14. data/spec/spec_helper.rb +3 -37
  15. metadata +10 -143
  16. data/lib/assembly-objectfile/content_metadata/config.rb +0 -26
  17. data/lib/assembly-objectfile/content_metadata/file.rb +0 -63
  18. data/lib/assembly-objectfile/content_metadata/file_set.rb +0 -73
  19. data/lib/assembly-objectfile/content_metadata/file_set_builder.rb +0 -65
  20. data/lib/assembly-objectfile/content_metadata/nokogiri_builder.rb +0 -57
  21. data/lib/assembly-objectfile/content_metadata.rb +0 -117
  22. data/lib/assembly-objectfile/object_file.rb +0 -29
  23. data/profiles/AdobeRGB1998.icc +0 -0
  24. data/profiles/DotGain20.icc +0 -0
  25. data/profiles/sRGBIEC6196621.icc +0 -0
  26. data/spec/content_metadata_spec.rb +0 -809
  27. data/spec/object_file_spec.rb +0 -222
  28. data/spec/test_data/input/oo000oo0001/00/oo000oo0001_00_001.tif +0 -0
  29. data/spec/test_data/input/oo000oo0001/00/oo000oo0001_00_002.tif +0 -0
  30. data/spec/test_data/input/oo000oo0001/05/oo000oo0001_05_001.jp2 +0 -0
  31. data/spec/test_data/input/oo000oo0001/05/oo000oo0001_05_002.jp2 +0 -0
  32. data/spec/test_data/input/oo000oo0001/15/oo000oo0001_15_001.pdf +0 -1
  33. data/spec/test_data/input/oo000oo0001/15/oo000oo0001_15_002.pdf +0 -1
  34. data/spec/test_data/input/oo000oo0001/31/oo000oo0001_31_001.pdf +0 -1
  35. data/spec/test_data/input/oo000oo0001/50/oo000oo0001_50_001.tif +0 -0
  36. data/spec/test_data/input/oo000oo0001/oo000oo0001_book.pdf +0 -1
  37. data/spec/test_data/input/res1_image1.jp2 +0 -0
  38. data/spec/test_data/input/res1_image2.jp2 +0 -0
  39. data/spec/test_data/input/res1_image2.tif +0 -0
  40. data/spec/test_data/input/res1_teifile.txt +0 -1
  41. data/spec/test_data/input/res2_image1.jp2 +0 -0
  42. data/spec/test_data/input/res2_image1.tif +0 -0
  43. data/spec/test_data/input/res2_image2.jp2 +0 -0
  44. data/spec/test_data/input/res2_image2.tif +0 -0
  45. data/spec/test_data/input/res2_teifile.txt +0 -1
  46. data/spec/test_data/input/res2_textfile.txt +0 -1
  47. data/spec/test_data/input/res3_image1.jp2 +0 -0
  48. data/spec/test_data/input/res3_image1.tif +0 -0
  49. data/spec/test_data/input/res3_teifile.txt +0 -1
  50. data/spec/test_data/input/test.pdf +0 -1
  51. data/spec/test_data/input/test.svg +0 -2
  52. data/spec/test_data/input/test2.jp2 +0 -0
  53. data/spec/test_data/input/test2.tif +0 -0
@@ -1,30 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Assembly
4
- # the path to the gem, used to access profiles stored with the gem
5
- PATH_TO_GEM = File.expand_path("#{File.dirname(__FILE__)}/..")
6
-
7
- # if input image is not one of these mime types, it will not be regarded as a valid image for the purpose of generating a JP2 derivative
4
+ # If input image is not one of these mime types, it will not be regarded as a valid image
5
+ # for the purpose of generating a JP2 derivative
8
6
  VALID_IMAGE_MIMETYPES = ['image/jpeg', 'image/tiff', 'image/tif', 'image/png'].freeze
9
7
 
10
- # if input file has one of these extensions in a 3D object, it will get the 3d resource type
11
- VALID_THREE_DIMENSION_EXTENTIONS = ['.obj'].freeze
12
-
13
- # the list of mimetypes that will be "trusted" by the unix file command; if a mimetype other than one of these is returned
14
- # by the file command, then a check will be made to see if exif data exists...if so, the mimetype returned by the exif data will be used
15
- # if no exif data exists, then the mimetype returned by the unix file command will be used
16
- TRUSTED_MIMETYPES = ['text/plain', 'plain/text', 'application/pdf', 'text/html', 'application/xml'].freeze
8
+ # The list of mimetypes that will be "trusted" by the unix file command; if a mimetype other than
9
+ # one of these is returned by the file command, then a check will be made to see if exif data exists...
10
+ # if so, the mimetype returned by the exif data will be used if no exif data exists, then the
11
+ # mimetype returned by the unix file command will be used
12
+ TRUSTED_MIMETYPES = ['text/plain', 'plain/text', 'application/pdf', 'text/html', 'application/xml',
13
+ 'application/octet-stream'].freeze
17
14
 
18
- # this is a manual override mapping of file extension to mimetype; if a file with the given extension is found, the mapped
19
- # mimetype will be returned and no further methods will be used - this is used to force a specific mimetype to be returned for
20
- # for a given file extension regardless of what exif or the unix file system command returns
21
- # the mapping format is "extension with period: returned mimetype", e.g. for any .json file, you will always get `application/json`
15
+ # This is a manual override mapping of file extension to mimetype; if a file with the given extension
16
+ # is found, the mapped mimetype will be returned and no further methods will be used - this is used
17
+ # to force a specific mimetype to be returned for a given file extension regardless of what exif or
18
+ # the unix file system command returns the mapping format is "extension with period: returned mimetype",
19
+ # e.g. for any .json file, you will always get `application/json`
22
20
  OVERRIDE_MIMETYPES = {
23
21
  '.json': 'application/json'
24
22
  }.freeze
25
23
  end
26
24
 
27
- require 'assembly-objectfile/content_metadata'
28
- require 'assembly-objectfile/object_fileable'
29
- require 'assembly-objectfile/object_file'
30
- require 'assembly-objectfile/version'
25
+ require 'assembly/object_file'
@@ -0,0 +1,452 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Assembly::ObjectFile do
6
+ describe '.common_path' do
7
+ context 'when common path is 2 nodes out of 4' do
8
+ it 'returns the common directory' do
9
+ expect(described_class.common_path(['/Users/peter/00/test.tif',
10
+ '/Users/peter/05/test.jp2'])).to eq('/Users/peter/')
11
+ end
12
+ end
13
+
14
+ context 'when common path is 3 nodes out of 4' do
15
+ it 'returns the common directory' do
16
+ expect(described_class.common_path(['/Users/peter/00/test.tif',
17
+ '/Users/peter/00/test.jp2'])).to eq('/Users/peter/00/')
18
+ end
19
+ end
20
+
21
+ context 'when all in list terminate in diff directories' do
22
+ it 'returns the common directory' do
23
+ expect(described_class.common_path(['/Users/peter/00', '/Users/peter/05'])).to eq('/Users/peter/')
24
+ end
25
+ end
26
+ end
27
+
28
+ describe '#new' do
29
+ context 'without params' do
30
+ let(:object_file) { described_class.new('/some/file.txt') }
31
+
32
+ it 'does not set attributes' do
33
+ expect(object_file.path).to eq('/some/file.txt')
34
+ expect(object_file.label).to be_nil
35
+ expect(object_file.file_attributes).to be_nil
36
+ expect(object_file.provider_sha1).to be_nil
37
+ expect(object_file.provider_md5).to be_nil
38
+ expect(object_file.relative_path).to be_nil
39
+ end
40
+ end
41
+
42
+ context 'with params' do
43
+ let(:object_file) do
44
+ described_class.new('/some/file.txt', label: 'some label',
45
+ file_attributes: { 'shelve' => 'yes',
46
+ 'publish' => 'yes',
47
+ 'preserve' => 'no' },
48
+ relative_path: '/tmp')
49
+ end
50
+
51
+ it 'sets attributes to passed params' do
52
+ expect(object_file.path).to eq('/some/file.txt')
53
+ expect(object_file.label).to eq('some label')
54
+ expect(object_file.file_attributes).to eq('shelve' => 'yes', 'publish' => 'yes', 'preserve' => 'no')
55
+ expect(object_file.provider_sha1).to be_nil
56
+ expect(object_file.provider_md5).to be_nil
57
+ expect(object_file.relative_path).to eq('/tmp')
58
+ end
59
+
60
+ context 'with provider_md5' do
61
+ let(:object_file) { described_class.new('/some/file.txt', provider_md5: 'XYZ') }
62
+
63
+ it 'sets provider_md5 to passed param' do
64
+ expect(object_file.provider_md5).to eq('XYZ')
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ describe '#filename' do
71
+ it 'returns File.basename' do
72
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
73
+ expect(object_file.filename).to eq('test.tif')
74
+ expect(object_file.filename).to eq(File.basename(TEST_TIF_INPUT_FILE))
75
+ end
76
+ end
77
+
78
+ describe '#ext' do
79
+ it 'returns the file extension' do
80
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
81
+ expect(object_file.ext).to eq('.tif')
82
+ end
83
+ end
84
+
85
+ describe '#dirname' do
86
+ it 'returns the File.dirname' do
87
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
88
+ expect(object_file.dirname).to eq(File.dirname(TEST_TIF_INPUT_FILE))
89
+ end
90
+ end
91
+
92
+ describe '#filename_without_ext' do
93
+ it 'returns filename before extension' do
94
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
95
+ expect(object_file.filename_without_ext).to eq('test')
96
+ end
97
+ end
98
+
99
+ describe '#image?' do
100
+ context 'with tiff' do
101
+ it 'true' do
102
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
103
+ expect(object_file.image?).to be(true)
104
+ end
105
+ end
106
+
107
+ context 'with jp2' do
108
+ it 'true' do
109
+ object_file = described_class.new(TEST_JP2_INPUT_FILE)
110
+ expect(object_file.image?).to be(true)
111
+ end
112
+ end
113
+
114
+ context 'with ruby file' do
115
+ it 'false' do
116
+ non_image_file = File.join(PATH_TO_GEM, 'spec/assembly/object_file_spec.rb')
117
+ object_file = described_class.new(non_image_file)
118
+ expect(object_file.image?).to be(false)
119
+ end
120
+ end
121
+
122
+ context 'with xml' do
123
+ it 'false' do
124
+ non_image_file = File.join(PATH_TO_GEM, 'spec/test_data/input/file_with_no_exif.xml')
125
+ object_file = described_class.new(non_image_file)
126
+ expect(object_file.image?).to be(false)
127
+ end
128
+ end
129
+ end
130
+
131
+ describe '#object_type' do
132
+ context 'with tiff' do
133
+ it ':image' do
134
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
135
+ expect(object_file.object_type).to eq(:image)
136
+ end
137
+ end
138
+
139
+ context 'with jp2' do
140
+ it ':image' do
141
+ object_file = described_class.new(TEST_JP2_INPUT_FILE)
142
+ expect(object_file.object_type).to eq(:image)
143
+ end
144
+ end
145
+
146
+ context 'with ruby file' do
147
+ it ':text' do
148
+ non_image_file = File.join(PATH_TO_GEM, 'spec/assembly/object_file_spec.rb')
149
+ object_file = described_class.new(non_image_file)
150
+ expect(object_file.object_type).to eq(:text)
151
+ end
152
+ end
153
+
154
+ context 'with xml' do
155
+ it ':application' do
156
+ non_image_file = File.join(PATH_TO_GEM, 'spec/test_data/input/file_with_no_exif.xml')
157
+ object_file = described_class.new(non_image_file)
158
+ expect(object_file.object_type).to eq(:application)
159
+ end
160
+ end
161
+ end
162
+
163
+ describe '#valid_image?' do
164
+ context 'with tiff' do
165
+ it 'true' do
166
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
167
+ expect(object_file.valid_image?).to be(true)
168
+ end
169
+ end
170
+
171
+ context 'with tiff resolution 1' do
172
+ it 'true' do
173
+ object_file = described_class.new(TEST_RES1_TIF1)
174
+ expect(object_file.valid_image?).to be(true)
175
+ end
176
+ end
177
+
178
+ context 'with tiff no color' do
179
+ it 'true' do
180
+ object_file = described_class.new(TEST_TIFF_NO_COLOR_FILE)
181
+ expect(object_file.valid_image?).to be(true)
182
+ end
183
+ end
184
+
185
+ context 'with jp2' do
186
+ it 'true' do
187
+ object_file = described_class.new(TEST_JP2_INPUT_FILE)
188
+ expect(object_file.valid_image?).to be(true)
189
+ end
190
+ end
191
+
192
+ context 'with ruby file' do
193
+ it 'false' do
194
+ non_image_file = File.join(PATH_TO_GEM, 'spec/assembly/object_file_spec.rb')
195
+ object_file = described_class.new(non_image_file)
196
+ expect(object_file.valid_image?).to be(false)
197
+ end
198
+ end
199
+
200
+ context 'with xml' do
201
+ it 'false' do
202
+ non_image_file = File.join(PATH_TO_GEM, 'spec/test_data/input/file_with_no_exif.xml')
203
+ object_file = described_class.new(non_image_file)
204
+ expect(object_file.valid_image?).to be(false)
205
+ end
206
+ end
207
+ end
208
+
209
+ describe '#mimetype' do
210
+ # rubocop:disable RSpec/RepeatedExampleGroupBody
211
+ context 'with .txt file' do
212
+ it 'plain/text' do
213
+ object_file = described_class.new(TEST_RES1_TEXT)
214
+ expect(object_file.mimetype).to eq('text/plain')
215
+ end
216
+ end
217
+
218
+ context 'with .xml file' do
219
+ it 'plain/text' do
220
+ object_file = described_class.new(TEST_RES1_TEXT)
221
+ expect(object_file.mimetype).to eq('text/plain')
222
+ end
223
+ end
224
+ # rubocop:enable RSpec/RepeatedExampleGroupBody
225
+
226
+ context 'with .tif file' do
227
+ it 'image/tiff' do
228
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
229
+ expect(object_file.mimetype).to eq('image/tiff')
230
+ end
231
+ end
232
+
233
+ context 'with .jp2 file' do
234
+ it 'image/jp2' do
235
+ object_file = described_class.new(TEST_JP2_INPUT_FILE)
236
+ expect(object_file.mimetype).to eq('image/jp2')
237
+ end
238
+ end
239
+
240
+ context 'with .pdf file' do
241
+ it 'application/pdf' do
242
+ object_file = described_class.new(TEST_RES1_PDF)
243
+ expect(object_file.mimetype).to eq('application/pdf')
244
+ end
245
+ end
246
+
247
+ context 'with .obj (3d) file' do
248
+ context 'when default preference (unix file system command)' do
249
+ it 'plain/text' do
250
+ object_file = described_class.new(TEST_OBJ_FILE)
251
+ expect(object_file.mimetype).to eq('text/plain')
252
+ end
253
+ end
254
+
255
+ context 'when mimetype extension gem preferred over unix file system command' do
256
+ it 'application/x-tgif' do
257
+ object_file = described_class.new(TEST_OBJ_FILE, mime_type_order: %i[extension file exif])
258
+ expect(object_file.mimetype).to eq('application/x-tgif')
259
+ end
260
+ end
261
+
262
+ context 'when invalid first preference mimetype generation' do
263
+ it 'ignores invalid mimetype generation method and respects valid method preference order' do
264
+ object_file = described_class.new(TEST_OBJ_FILE, mime_type_order: %i[bogus extension file])
265
+ expect(object_file.mimetype).to eq('application/x-tgif')
266
+ end
267
+ end
268
+ end
269
+
270
+ context 'with .ply 3d file' do
271
+ it 'text/plain' do
272
+ object_file = described_class.new(TEST_PLY_FILE)
273
+ expect(object_file.mimetype).to eq('text/plain')
274
+ end
275
+ end
276
+
277
+ context 'when exif information is damaged' do
278
+ it 'gives us the mimetype' do
279
+ object_file = described_class.new(TEST_FILE_NO_EXIF)
280
+ expect(object_file.filename).to eq('file_with_no_exif.xml')
281
+ expect(object_file.ext).to eq('.xml')
282
+ # we could get either of these mimetypes depending on the OS
283
+ expect(['text/html', 'application/xml'].include?(object_file.mimetype)).to be true
284
+ end
285
+ end
286
+
287
+ context 'when .json file' do
288
+ it 'uses the manual mapping to set the correct mimetype of application/json for a .json file' do
289
+ object_file = described_class.new(TEST_JSON_FILE)
290
+ expect(object_file.send(:exif_mimetype)).to be_nil # exif
291
+ expect(object_file.send(:file_mimetype)).to eq('text/plain') # unix file system command
292
+ expect(object_file.mimetype).to eq('application/json') # our configured mapping overrides both
293
+ end
294
+ end
295
+ end
296
+
297
+ describe '#file_mimetype (unix file system command)' do
298
+ context 'when .json file' do
299
+ it 'text/plain' do
300
+ object_file = described_class.new(TEST_JSON_FILE)
301
+ expect(object_file.send(:file_mimetype)).to eq('text/plain')
302
+ end
303
+ end
304
+
305
+ context 'when .tif file' do
306
+ it 'image/tiff' do
307
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
308
+ expect(object_file.send(:file_mimetype)).to eq('image/tiff')
309
+ end
310
+ end
311
+ end
312
+
313
+ describe '#jp2able?' do
314
+ context 'with jp2 file' do
315
+ it 'false' do
316
+ object_file = described_class.new(TEST_JP2_INPUT_FILE)
317
+ expect(object_file.jp2able?).to be(false)
318
+ end
319
+ end
320
+
321
+ context 'with tiff resolution 1 file' do
322
+ it 'true' do
323
+ object_file = described_class.new(TEST_RES1_TIF1)
324
+ expect(object_file.jp2able?).to be(true)
325
+ end
326
+ end
327
+
328
+ context 'with tiff no color file' do
329
+ it 'true' do
330
+ object_file = described_class.new(TEST_TIFF_NO_COLOR_FILE)
331
+ expect(object_file.jp2able?).to be(true)
332
+ end
333
+ end
334
+ end
335
+
336
+ describe '#md5' do
337
+ it 'computes md5 for an image file' do
338
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
339
+ expect(object_file.md5).to eq('a2400500acf21e43f5440d93be894101')
340
+ end
341
+
342
+ it 'raises RuntimeError if no input file is passed in' do
343
+ object_file = described_class.new('')
344
+ expect { object_file.md5 }.to raise_error(RuntimeError, 'input file does not exist or is a directory')
345
+ end
346
+ end
347
+
348
+ describe '#sha1' do
349
+ it 'computes sha1 for an image file' do
350
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
351
+ expect(object_file.sha1).to eq('8d11fab63089a24c8b17063d29a4b0eac359fb41')
352
+ end
353
+
354
+ it 'raises RuntimeError if no input file is passed in' do
355
+ object_file = described_class.new('')
356
+ expect { object_file.sha1 }.to raise_error(RuntimeError, 'input file does not exist or is a directory')
357
+ end
358
+ end
359
+
360
+ describe '#file_exists?' do
361
+ it 'false when a valid directory is specified instead of a file' do
362
+ path = PATH_TO_GEM
363
+ object_file = described_class.new(path)
364
+ expect(File.exist?(path)).to be true
365
+ expect(File.directory?(path)).to be true
366
+ expect(object_file.file_exists?).to be false
367
+ end
368
+
369
+ it 'false when a non-existent file is specified' do
370
+ path = File.join(PATH_TO_GEM, 'file_not_there.txt')
371
+ object_file = described_class.new(path)
372
+ expect(File.exist?(path)).to be false
373
+ expect(File.directory?(path)).to be false
374
+ expect(object_file.file_exists?).to be false
375
+ end
376
+ end
377
+
378
+ describe '#filesize' do
379
+ it 'tells us the size of an input file' do
380
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
381
+ expect(object_file.filesize).to eq(63_542)
382
+ end
383
+
384
+ it 'raises RuntimeError if no file is passed in' do
385
+ object_file = described_class.new('')
386
+ expect { object_file.filesize }.to raise_error(RuntimeError, 'input file does not exist or is a directory')
387
+ end
388
+ end
389
+
390
+ describe '#encoding' do
391
+ context 'with .tif file' do
392
+ it 'binary' do
393
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
394
+ expect(object_file.send(:encoding)).to eq('binary')
395
+ end
396
+ end
397
+
398
+ context 'with .txt file' do
399
+ it 'binary' do
400
+ object_file = described_class.new(TEST_RES1_TEXT)
401
+ expect(object_file.send(:encoding)).to eq('us-ascii')
402
+ end
403
+ end
404
+ end
405
+
406
+ describe '#exif' do
407
+ it 'returns MiniExiftool object' do
408
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
409
+ expect(object_file.exif).not_to be_nil
410
+ expect(object_file.exif.class).to eq MiniExiftool
411
+ end
412
+
413
+ it 'raises MiniExiftool::Error with file path if exiftool raises one' do
414
+ object_file = described_class.new('spec/test_data/empty.txt')
415
+ expect { object_file.exif }.to raise_error(MiniExiftool::Error,
416
+ "error initializing MiniExiftool for #{object_file.path}")
417
+ end
418
+ end
419
+
420
+ describe '#extension_mimetype' do
421
+ # mime-types gem, based on a file extension lookup
422
+ context 'with .obj file' do
423
+ it 'application/x-tgif' do
424
+ object_file = described_class.new(TEST_OBJ_FILE)
425
+ expect(object_file.send(:extension_mimetype)).to eq('application/x-tgif')
426
+ end
427
+ end
428
+
429
+ context 'with .tif file' do
430
+ it 'image/tiff' do
431
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
432
+ expect(object_file.send(:extension_mimetype)).to eq('image/tiff')
433
+ end
434
+ end
435
+ end
436
+
437
+ describe '#exif_mimetype' do
438
+ context 'with .tif file' do
439
+ it 'image/tiff' do
440
+ object_file = described_class.new(TEST_TIF_INPUT_FILE)
441
+ expect(object_file.send(:exif_mimetype)).to eq('image/tiff')
442
+ end
443
+ end
444
+
445
+ context 'when .json file' do
446
+ it 'nil' do
447
+ object_file = described_class.new(TEST_JSON_FILE)
448
+ expect(object_file.send(:exif_mimetype)).to be_nil
449
+ end
450
+ end
451
+ end
452
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,60 +4,26 @@ require 'simplecov'
4
4
  SimpleCov.start
5
5
 
6
6
  require File.expand_path("#{File.dirname(__FILE__)}/../config/boot")
7
- require 'byebug'
7
+ require 'pry-byebug'
8
8
 
9
9
  RSpec.configure do |config|
10
10
  config.order = 'random'
11
11
  end
12
12
 
13
- TEST_DATA_DIR = File.join(Assembly::PATH_TO_GEM, 'spec', 'test_data')
14
- TEST_INPUT_DIR = File.join(TEST_DATA_DIR, 'input')
15
- TEST_OUTPUT_DIR = File.join(TEST_DATA_DIR, 'output')
13
+ PATH_TO_GEM = File.expand_path("#{File.dirname(__FILE__)}/..")
14
+ TEST_INPUT_DIR = File.join(PATH_TO_GEM, 'spec', 'test_data', 'input')
16
15
  TEST_TIF_INPUT_FILE = File.join(TEST_INPUT_DIR, 'test.tif')
17
- TEST_TIF_INPUT_FILE2 = File.join(TEST_INPUT_DIR, 'test2.tif')
18
- TEST_JPEG_INPUT_FILE = File.join(TEST_INPUT_DIR, 'test.jpg')
19
16
  TEST_JP2_INPUT_FILE = File.join(TEST_INPUT_DIR, 'test.jp2')
20
- TEST_JP2_INPUT_FILE2 = File.join(TEST_INPUT_DIR, 'test2.jp2')
21
- TEST_SVG_INPUT_FILE = File.join(TEST_INPUT_DIR, 'test.svg')
22
- TEST_JP2_OUTPUT_FILE = File.join(TEST_OUTPUT_DIR, 'test.jp2')
23
- TEST_PDF_FILE = File.join(TEST_INPUT_DIR, 'test.pdf')
24
-
25
- TEST_DPG_TIF = File.join(TEST_INPUT_DIR, 'oo000oo0001', '00', 'oo000oo0001_00_001.tif')
26
- TEST_DPG_TIF2 = File.join(TEST_INPUT_DIR, 'oo000oo0001', '00', 'oo000oo0001_00_002.tif')
27
- TEST_DPG_JP = File.join(TEST_INPUT_DIR, 'oo000oo0001', '05', 'oo000oo0001_05_001.jp2')
28
- TEST_DPG_JP2 = File.join(TEST_INPUT_DIR, 'oo000oo0001', '05', 'oo000oo0001_05_002.jp2')
29
- TEST_DPG_PDF = File.join(TEST_INPUT_DIR, 'oo000oo0001', '15', 'oo000oo0001_15_001.pdf')
30
- TEST_DPG_PDF2 = File.join(TEST_INPUT_DIR, 'oo000oo0001', '15', 'oo000oo0001_15_002.pdf')
31
- TEST_DPG_SPECIAL_PDF1 = File.join(TEST_INPUT_DIR, 'oo000oo0001', 'oo000oo0001_book.pdf')
32
- TEST_DPG_SPECIAL_PDF2 = File.join(TEST_INPUT_DIR, 'oo000oo0001', '31', 'oo000oo0001_31_001.pdf')
33
- TEST_DPG_SPECIAL_TIF = File.join(TEST_INPUT_DIR, 'oo000oo0001', '50', 'oo000oo0001_50_001.tif')
34
17
 
35
18
  TEST_TIFF_NO_COLOR_FILE = File.join(TEST_INPUT_DIR, 'test_no_color_profile.tif')
36
19
 
37
20
  TEST_RES1_TIF1 = File.join(TEST_INPUT_DIR, 'res1_image1.tif')
38
- TEST_RES1_JP1 = File.join(TEST_INPUT_DIR, 'res1_image1.jp2')
39
- TEST_RES1_TIF2 = File.join(TEST_INPUT_DIR, 'res1_image2.tif')
40
- TEST_RES1_JP2 = File.join(TEST_INPUT_DIR, 'res1_image2.jp2')
41
- TEST_RES1_TEI = File.join(TEST_INPUT_DIR, 'res1_teifile.txt')
42
21
  TEST_RES1_TEXT = File.join(TEST_INPUT_DIR, 'res1_textfile.txt')
43
22
  TEST_RES1_PDF = File.join(TEST_INPUT_DIR, 'res1_transcript.pdf')
44
23
 
45
- TEST_RES2_TIF1 = File.join(TEST_INPUT_DIR, 'res2_image1.tif')
46
- TEST_RES2_JP1 = File.join(TEST_INPUT_DIR, 'res2_image1.jp2')
47
- TEST_RES2_TIF2 = File.join(TEST_INPUT_DIR, 'res2_image2.tif')
48
- TEST_RES2_JP2 = File.join(TEST_INPUT_DIR, 'res2_image2.jp2')
49
- TEST_RES2_TEI = File.join(TEST_INPUT_DIR, 'res2_teifile.txt')
50
- TEST_RES2_TEXT = File.join(TEST_INPUT_DIR, 'res2_textfile.txt')
51
-
52
- TEST_RES3_TIF1 = File.join(TEST_INPUT_DIR, 'res3_image1.tif')
53
- TEST_RES3_JP1 = File.join(TEST_INPUT_DIR, 'res3_image1.jp2')
54
- TEST_RES3_TEI = File.join(TEST_INPUT_DIR, 'res3_teifile.txt')
55
-
56
24
  TEST_FILE_NO_EXIF = File.join(TEST_INPUT_DIR, 'file_with_no_exif.xml')
57
25
 
58
26
  TEST_JSON_FILE = File.join(TEST_INPUT_DIR, 'test.json')
59
27
 
60
28
  TEST_OBJ_FILE = File.join(TEST_INPUT_DIR, 'someobject.obj')
61
29
  TEST_PLY_FILE = File.join(TEST_INPUT_DIR, 'someobject.ply')
62
-
63
- TEST_DRUID = 'nx288wh8889'