paperclip 3.5.4 → 4.3.7

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of paperclip might be problematic. Click here for more details.

Files changed (198) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -6
  3. data/.hound.yml +1066 -0
  4. data/.rubocop.yml +1 -0
  5. data/.travis.yml +11 -17
  6. data/Appraisals +6 -14
  7. data/CONTRIBUTING.md +13 -8
  8. data/Gemfile +16 -3
  9. data/LICENSE +1 -3
  10. data/NEWS +167 -49
  11. data/README.md +294 -75
  12. data/RELEASING.md +17 -0
  13. data/Rakefile +6 -8
  14. data/features/basic_integration.feature +24 -6
  15. data/features/step_definitions/attachment_steps.rb +30 -22
  16. data/features/step_definitions/html_steps.rb +2 -2
  17. data/features/step_definitions/rails_steps.rb +44 -14
  18. data/features/step_definitions/web_steps.rb +1 -103
  19. data/features/support/env.rb +2 -2
  20. data/features/support/file_helpers.rb +2 -2
  21. data/features/support/fixtures/gemfile.txt +1 -1
  22. data/features/support/rails.rb +2 -1
  23. data/gemfiles/3.2.gemfile +14 -6
  24. data/gemfiles/4.1.gemfile +19 -0
  25. data/gemfiles/4.2.gemfile +19 -0
  26. data/lib/generators/paperclip/paperclip_generator.rb +0 -2
  27. data/lib/generators/paperclip/templates/paperclip_migration.rb.erb +1 -1
  28. data/lib/paperclip/attachment.rb +132 -38
  29. data/lib/paperclip/attachment_registry.rb +1 -1
  30. data/lib/paperclip/callbacks.rb +11 -1
  31. data/lib/paperclip/content_type_detector.rb +25 -22
  32. data/lib/paperclip/deprecations.rb +42 -0
  33. data/lib/paperclip/errors.rb +5 -0
  34. data/lib/paperclip/file_command_content_type_detector.rb +6 -8
  35. data/lib/paperclip/geometry_detector_factory.rb +3 -1
  36. data/lib/paperclip/geometry_parser_factory.rb +1 -1
  37. data/lib/paperclip/has_attached_file.rb +10 -0
  38. data/lib/paperclip/interpolations/plural_cache.rb +6 -5
  39. data/lib/paperclip/interpolations.rb +25 -12
  40. data/lib/paperclip/io_adapters/abstract_adapter.rb +3 -1
  41. data/lib/paperclip/io_adapters/attachment_adapter.rb +4 -4
  42. data/lib/paperclip/io_adapters/data_uri_adapter.rb +5 -10
  43. data/lib/paperclip/io_adapters/stringio_adapter.rb +6 -10
  44. data/lib/paperclip/io_adapters/uri_adapter.rb +30 -11
  45. data/lib/paperclip/locales/de.yml +18 -0
  46. data/lib/paperclip/locales/en.yml +1 -0
  47. data/lib/paperclip/locales/es.yml +18 -0
  48. data/lib/paperclip/locales/ja.yml +18 -0
  49. data/lib/paperclip/locales/pt-BR.yml +18 -0
  50. data/lib/paperclip/locales/zh-CN.yml +18 -0
  51. data/lib/paperclip/locales/zh-HK.yml +18 -0
  52. data/lib/paperclip/locales/zh-TW.yml +18 -0
  53. data/lib/paperclip/matchers/have_attached_file_matcher.rb +2 -1
  54. data/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +2 -1
  55. data/lib/paperclip/matchers/validate_attachment_size_matcher.rb +2 -1
  56. data/lib/paperclip/media_type_spoof_detector.rb +89 -0
  57. data/lib/paperclip/processor.rb +0 -37
  58. data/lib/paperclip/processor_helpers.rb +50 -0
  59. data/lib/paperclip/rails_environment.rb +25 -0
  60. data/lib/paperclip/schema.rb +10 -2
  61. data/lib/paperclip/storage/filesystem.rb +1 -1
  62. data/lib/paperclip/storage/fog.rb +18 -7
  63. data/lib/paperclip/storage/s3.rb +53 -22
  64. data/lib/paperclip/style.rb +8 -2
  65. data/lib/paperclip/tempfile_factory.rb +5 -1
  66. data/lib/paperclip/thumbnail.rb +12 -10
  67. data/lib/paperclip/url_generator.rb +11 -3
  68. data/lib/paperclip/validators/attachment_content_type_validator.rb +4 -0
  69. data/lib/paperclip/validators/attachment_file_name_validator.rb +80 -0
  70. data/lib/paperclip/validators/attachment_file_type_ignorance_validator.rb +29 -0
  71. data/lib/paperclip/validators/attachment_presence_validator.rb +4 -0
  72. data/lib/paperclip/validators/attachment_size_validator.rb +11 -3
  73. data/lib/paperclip/validators/media_type_spoof_detection_validator.rb +27 -0
  74. data/lib/paperclip/validators.rb +10 -3
  75. data/lib/paperclip/version.rb +1 -1
  76. data/lib/paperclip.rb +26 -8
  77. data/lib/tasks/paperclip.rake +17 -2
  78. data/paperclip.gemspec +16 -14
  79. data/shoulda_macros/paperclip.rb +0 -1
  80. data/spec/paperclip/attachment_definitions_spec.rb +13 -0
  81. data/{test/attachment_processing_test.rb → spec/paperclip/attachment_processing_spec.rb} +20 -21
  82. data/spec/paperclip/attachment_registry_spec.rb +130 -0
  83. data/{test/attachment_test.rb → spec/paperclip/attachment_spec.rb} +438 -397
  84. data/{test/content_type_detector_test.rb → spec/paperclip/content_type_detector_spec.rb} +16 -19
  85. data/spec/paperclip/deprecations_spec.rb +65 -0
  86. data/{test/file_command_content_type_detector_test.rb → spec/paperclip/file_command_content_type_detector_spec.rb} +5 -6
  87. data/spec/paperclip/filename_cleaner_spec.rb +14 -0
  88. data/spec/paperclip/geometry_detector_spec.rb +39 -0
  89. data/{test/geometry_parser_test.rb → spec/paperclip/geometry_parser_spec.rb} +27 -27
  90. data/{test/geometry_test.rb → spec/paperclip/geometry_spec.rb} +50 -52
  91. data/spec/paperclip/glue_spec.rb +44 -0
  92. data/{test/has_attached_file_test.rb → spec/paperclip/has_attached_file_spec.rb} +45 -28
  93. data/{test/integration_test.rb → spec/paperclip/integration_spec.rb} +134 -126
  94. data/{test/interpolations_test.rb → spec/paperclip/interpolations_spec.rb} +70 -46
  95. data/spec/paperclip/io_adapters/abstract_adapter_spec.rb +78 -0
  96. data/{test/io_adapters/attachment_adapter_test.rb → spec/paperclip/io_adapters/attachment_adapter_spec.rb} +27 -29
  97. data/{test/io_adapters/data_uri_adapter_test.rb → spec/paperclip/io_adapters/data_uri_adapter_spec.rb} +26 -17
  98. data/spec/paperclip/io_adapters/empty_string_adapter_spec.rb +17 -0
  99. data/{test/io_adapters/file_adapter_test.rb → spec/paperclip/io_adapters/file_adapter_spec.rb} +36 -40
  100. data/{test/io_adapters/http_url_proxy_adapter_test.rb → spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb} +31 -29
  101. data/spec/paperclip/io_adapters/identity_adapter_spec.rb +8 -0
  102. data/{test/io_adapters/nil_adapter_test.rb → spec/paperclip/io_adapters/nil_adapter_spec.rb} +7 -7
  103. data/{test/io_adapters/registry_test.rb → spec/paperclip/io_adapters/registry_spec.rb} +10 -7
  104. data/{test/io_adapters/stringio_adapter_test.rb → spec/paperclip/io_adapters/stringio_adapter_spec.rb} +20 -17
  105. data/{test/io_adapters/uploaded_file_adapter_test.rb → spec/paperclip/io_adapters/uploaded_file_adapter_spec.rb} +41 -41
  106. data/{test/io_adapters/uri_adapter_test.rb → spec/paperclip/io_adapters/uri_adapter_spec.rb} +53 -28
  107. data/spec/paperclip/matchers/have_attached_file_matcher_spec.rb +19 -0
  108. data/spec/paperclip/matchers/validate_attachment_content_type_matcher_spec.rb +99 -0
  109. data/spec/paperclip/matchers/validate_attachment_presence_matcher_spec.rb +69 -0
  110. data/spec/paperclip/matchers/validate_attachment_size_matcher_spec.rb +88 -0
  111. data/spec/paperclip/media_type_spoof_detector_spec.rb +79 -0
  112. data/spec/paperclip/meta_class_spec.rb +30 -0
  113. data/spec/paperclip/paperclip_missing_attachment_styles_spec.rb +84 -0
  114. data/{test/paperclip_test.rb → spec/paperclip/paperclip_spec.rb} +53 -48
  115. data/spec/paperclip/plural_cache_spec.rb +37 -0
  116. data/spec/paperclip/processor_helpers_spec.rb +57 -0
  117. data/{test/processor_test.rb → spec/paperclip/processor_spec.rb} +5 -5
  118. data/spec/paperclip/rails_environment_spec.rb +33 -0
  119. data/{test/rake_test.rb → spec/paperclip/rake_spec.rb} +15 -15
  120. data/spec/paperclip/schema_spec.rb +248 -0
  121. data/{test/storage/filesystem_test.rb → spec/paperclip/storage/filesystem_spec.rb} +18 -18
  122. data/spec/paperclip/storage/fog_spec.rb +535 -0
  123. data/spec/paperclip/storage/s3_live_spec.rb +182 -0
  124. data/spec/paperclip/storage/s3_spec.rb +1526 -0
  125. data/spec/paperclip/style_spec.rb +255 -0
  126. data/spec/paperclip/tempfile_factory_spec.rb +33 -0
  127. data/{test/thumbnail_test.rb → spec/paperclip/thumbnail_spec.rb} +123 -107
  128. data/spec/paperclip/url_generator_spec.rb +211 -0
  129. data/spec/paperclip/validators/attachment_content_type_validator_spec.rb +322 -0
  130. data/spec/paperclip/validators/attachment_file_name_validator_spec.rb +160 -0
  131. data/{test/validators/attachment_presence_validator_test.rb → spec/paperclip/validators/attachment_presence_validator_spec.rb} +20 -20
  132. data/{test/validators/attachment_size_validator_test.rb → spec/paperclip/validators/attachment_size_validator_spec.rb} +65 -58
  133. data/spec/paperclip/validators/media_type_spoof_detection_validator_spec.rb +52 -0
  134. data/spec/paperclip/validators_spec.rb +164 -0
  135. data/spec/spec_helper.rb +43 -0
  136. data/spec/support/assertions.rb +71 -0
  137. data/spec/support/deprecations.rb +9 -0
  138. data/spec/support/fake_model.rb +25 -0
  139. data/spec/support/fake_rails.rb +12 -0
  140. data/spec/support/fixtures/empty.html +1 -0
  141. data/spec/support/fixtures/empty.xlsx +0 -0
  142. data/spec/support/fixtures/spaced file.jpg +0 -0
  143. data/spec/support/matchers/accept.rb +5 -0
  144. data/spec/support/matchers/exist.rb +5 -0
  145. data/spec/support/matchers/have_column.rb +23 -0
  146. data/spec/support/model_reconstruction.rb +60 -0
  147. data/spec/support/rails_helpers.rb +7 -0
  148. data/spec/support/test_data.rb +13 -0
  149. data/spec/support/version_helper.rb +9 -0
  150. metadata +334 -219
  151. data/RUNNING_TESTS.md +0 -4
  152. data/gemfiles/3.0.gemfile +0 -11
  153. data/gemfiles/3.1.gemfile +0 -11
  154. data/gemfiles/4.0.gemfile +0 -11
  155. data/test/attachment_definitions_test.rb +0 -12
  156. data/test/attachment_registry_test.rb +0 -88
  157. data/test/filename_cleaner_test.rb +0 -14
  158. data/test/generator_test.rb +0 -84
  159. data/test/geometry_detector_test.rb +0 -24
  160. data/test/helper.rb +0 -232
  161. data/test/io_adapters/abstract_adapter_test.rb +0 -58
  162. data/test/io_adapters/empty_string_adapter_test.rb +0 -18
  163. data/test/io_adapters/identity_adapter_test.rb +0 -8
  164. data/test/matchers/have_attached_file_matcher_test.rb +0 -24
  165. data/test/matchers/validate_attachment_content_type_matcher_test.rb +0 -110
  166. data/test/matchers/validate_attachment_presence_matcher_test.rb +0 -69
  167. data/test/matchers/validate_attachment_size_matcher_test.rb +0 -86
  168. data/test/meta_class_test.rb +0 -32
  169. data/test/paperclip_missing_attachment_styles_test.rb +0 -90
  170. data/test/plural_cache_test.rb +0 -36
  171. data/test/schema_test.rb +0 -200
  172. data/test/storage/fog_test.rb +0 -473
  173. data/test/storage/s3_live_test.rb +0 -179
  174. data/test/storage/s3_test.rb +0 -1356
  175. data/test/style_test.rb +0 -213
  176. data/test/support/mock_model.rb +0 -2
  177. data/test/tempfile_factory_test.rb +0 -17
  178. data/test/url_generator_test.rb +0 -187
  179. data/test/validators/attachment_content_type_validator_test.rb +0 -324
  180. data/test/validators_test.rb +0 -61
  181. /data/{test → spec}/database.yml +0 -0
  182. /data/{test → spec/support}/fixtures/12k.png +0 -0
  183. /data/{test → spec/support}/fixtures/50x50.png +0 -0
  184. /data/{test → spec/support}/fixtures/5k.png +0 -0
  185. /data/{test → spec/support}/fixtures/animated +0 -0
  186. /data/{test → spec/support}/fixtures/animated.gif +0 -0
  187. /data/{test → spec/support}/fixtures/animated.unknown +0 -0
  188. /data/{test → spec/support}/fixtures/bad.png +0 -0
  189. /data/{test → spec/support}/fixtures/fog.yml +0 -0
  190. /data/{test → spec/support}/fixtures/rotated.jpg +0 -0
  191. /data/{test → spec/support}/fixtures/s3.yml +0 -0
  192. /data/{test → spec/support}/fixtures/spaced file.png +0 -0
  193. /data/{test → spec/support}/fixtures/text.txt +0 -0
  194. /data/{test → spec/support}/fixtures/twopage.pdf +0 -0
  195. /data/{test → spec/support}/fixtures/uppercase.PNG +0 -0
  196. /data/{test → spec}/support/mock_attachment.rb +0 -0
  197. /data/{test → spec}/support/mock_interpolator.rb +0 -0
  198. /data/{test → spec}/support/mock_url_generator_builder.rb +0 -0
@@ -0,0 +1,255 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Paperclip::Style do
5
+ context "A style rule" do
6
+ before do
7
+ @attachment = attachment path: ":basename.:extension",
8
+ styles: { foo: {geometry: "100x100#", format: :png} },
9
+ whiny: true
10
+ @style = @attachment.styles[:foo]
11
+ end
12
+
13
+ it "is held as a Style object" do
14
+ expect(@style).to be_a Paperclip::Style
15
+ end
16
+
17
+ it "gets processors from the attachment definition" do
18
+ assert_equal [:thumbnail], @style.processors
19
+ end
20
+
21
+ it "has the right geometry" do
22
+ assert_equal "100x100#", @style.geometry
23
+ end
24
+
25
+ it "is whiny if the attachment is" do
26
+ assert @style.whiny?
27
+ end
28
+
29
+ it "responds to hash notation" do
30
+ assert_equal [:thumbnail], @style[:processors]
31
+ assert_equal "100x100#", @style[:geometry]
32
+ end
33
+
34
+ it "returns the name of the style in processor options" do
35
+ assert_equal :foo, @style.processor_options[:style]
36
+ end
37
+ end
38
+
39
+ context "A style rule with properties supplied as procs" do
40
+ before do
41
+ @attachment = attachment path: ":basename.:extension",
42
+ whiny_thumbnails: true,
43
+ processors: lambda {|a| [:test]},
44
+ styles: {
45
+ foo: lambda{|a| "300x300#"},
46
+ bar: {
47
+ geometry: lambda{|a| "300x300#"},
48
+ convert_options: lambda{|a| "-do_stuff"},
49
+ source_file_options: lambda{|a| "-do_extra_stuff"}
50
+ }
51
+ }
52
+ end
53
+
54
+ it "calls procs when they are needed" do
55
+ assert_equal "300x300#", @attachment.styles[:foo].geometry
56
+ assert_equal "300x300#", @attachment.styles[:bar].geometry
57
+ assert_equal [:test], @attachment.styles[:foo].processors
58
+ assert_equal [:test], @attachment.styles[:bar].processors
59
+ assert_equal "-do_stuff", @attachment.styles[:bar].convert_options
60
+ assert_equal "-do_extra_stuff", @attachment.styles[:bar].source_file_options
61
+ end
62
+ end
63
+
64
+ context "An attachment with style rules in various forms" do
65
+ before do
66
+ styles = {}
67
+ styles[:aslist] = ["100x100", :png]
68
+ styles[:ashash] = {geometry: "100x100", format: :png}
69
+ styles[:asstring] = "100x100"
70
+ @attachment = attachment path: ":basename.:extension",
71
+ styles: styles
72
+ end
73
+
74
+ it "has the right number of styles" do
75
+ expect(@attachment.styles).to be_a Hash
76
+ assert_equal 3, @attachment.styles.size
77
+ end
78
+
79
+ it "has styles as Style objects" do
80
+ [:aslist, :ashash, :aslist].each do |s|
81
+ expect(@attachment.styles[s]).to be_a Paperclip::Style
82
+ end
83
+ end
84
+
85
+ it "has the right geometries" do
86
+ [:aslist, :ashash, :aslist].each do |s|
87
+ assert_equal @attachment.styles[s].geometry, "100x100"
88
+ end
89
+ end
90
+
91
+ it "has the right formats" do
92
+ assert_equal @attachment.styles[:aslist].format, :png
93
+ assert_equal @attachment.styles[:ashash].format, :png
94
+ assert_nil @attachment.styles[:asstring].format
95
+ end
96
+
97
+ it "retains order" do
98
+ assert_equal [:aslist, :ashash, :asstring], @attachment.styles.keys
99
+ end
100
+ end
101
+
102
+ context "An attachment with :convert_options" do
103
+ it "does not have called extra_options_for(:thumb/:large) on initialization" do
104
+ @attachment = attachment path: ":basename.:extension",
105
+ styles: {thumb: "100x100", large: "400x400"},
106
+ convert_options: {all: "-do_stuff", thumb: "-thumbnailize"}
107
+ @attachment.expects(:extra_options_for).never
108
+ @style = @attachment.styles[:thumb]
109
+ end
110
+
111
+ it "calls extra_options_for(:thumb/:large) when convert options are requested" do
112
+ @attachment = attachment path: ":basename.:extension",
113
+ styles: {thumb: "100x100", large: "400x400"},
114
+ convert_options: {all: "-do_stuff", thumb: "-thumbnailize"}
115
+ @style = @attachment.styles[:thumb]
116
+ @file = StringIO.new("...")
117
+ @file.stubs(:original_filename).returns("file.jpg")
118
+
119
+ @attachment.expects(:extra_options_for).with(:thumb)
120
+ @attachment.styles[:thumb].convert_options
121
+ end
122
+ end
123
+
124
+ context "An attachment with :source_file_options" do
125
+ it "does not have called extra_source_file_options_for(:thumb/:large) on initialization" do
126
+ @attachment = attachment path: ":basename.:extension",
127
+ styles: {thumb: "100x100", large: "400x400"},
128
+ source_file_options: {all: "-density 400", thumb: "-depth 8"}
129
+ @attachment.expects(:extra_source_file_options_for).never
130
+ @style = @attachment.styles[:thumb]
131
+ end
132
+
133
+ it "calls extra_options_for(:thumb/:large) when convert options are requested" do
134
+ @attachment = attachment path: ":basename.:extension",
135
+ styles: {thumb: "100x100", large: "400x400"},
136
+ source_file_options: {all: "-density 400", thumb: "-depth 8"}
137
+ @style = @attachment.styles[:thumb]
138
+ @file = StringIO.new("...")
139
+ @file.stubs(:original_filename).returns("file.jpg")
140
+
141
+ @attachment.expects(:extra_source_file_options_for).with(:thumb)
142
+ @attachment.styles[:thumb].source_file_options
143
+ end
144
+ end
145
+
146
+ context "A style rule with its own :processors" do
147
+ before do
148
+ @attachment = attachment path: ":basename.:extension",
149
+ styles: {
150
+ foo: {
151
+ geometry: "100x100#",
152
+ format: :png,
153
+ processors: [:test]
154
+ }
155
+ },
156
+ processors: [:thumbnail]
157
+ @style = @attachment.styles[:foo]
158
+ end
159
+
160
+ it "does not get processors from the attachment" do
161
+ @attachment.expects(:processors).never
162
+ assert_not_equal [:thumbnail], @style.processors
163
+ end
164
+
165
+ it "reports its own processors" do
166
+ assert_equal [:test], @style.processors
167
+ end
168
+
169
+ end
170
+
171
+ context "A style rule with :processors supplied as procs" do
172
+ before do
173
+ @attachment = attachment path: ":basename.:extension",
174
+ styles: {
175
+ foo: {
176
+ geometry: "100x100#",
177
+ format: :png,
178
+ processors: lambda{|a| [:test]}
179
+ }
180
+ },
181
+ processors: [:thumbnail]
182
+ end
183
+
184
+ it "defers processing of procs until they are needed" do
185
+ expect(@attachment.styles[:foo].instance_variable_get("@processors")).to be_a Proc
186
+ end
187
+
188
+ it "calls procs when they are needed" do
189
+ assert_equal [:test], @attachment.styles[:foo].processors
190
+ end
191
+ end
192
+
193
+ context "An attachment with :convert_options and :source_file_options in :styles" do
194
+ before do
195
+ @attachment = attachment path: ":basename.:extension",
196
+ styles: {
197
+ thumb: "100x100",
198
+ large: {geometry: "400x400",
199
+ convert_options: "-do_stuff",
200
+ source_file_options: "-do_extra_stuff"
201
+ }
202
+ }
203
+ @file = StringIO.new("...")
204
+ @file.stubs(:original_filename).returns("file.jpg")
205
+ end
206
+
207
+ it "has empty options for :thumb style" do
208
+ assert_equal "", @attachment.styles[:thumb].processor_options[:convert_options]
209
+ assert_equal "", @attachment.styles[:thumb].processor_options[:source_file_options]
210
+ end
211
+
212
+ it "has the right options for :large style" do
213
+ assert_equal "-do_stuff", @attachment.styles[:large].processor_options[:convert_options]
214
+ assert_equal "-do_extra_stuff", @attachment.styles[:large].processor_options[:source_file_options]
215
+ end
216
+ end
217
+
218
+ context "A style rule supplied with default format" do
219
+ before do
220
+ @attachment = attachment default_format: :png,
221
+ styles: {
222
+ asstring: "300x300#",
223
+ aslist: ["300x300#", :jpg],
224
+ ashash: {
225
+ geometry: "300x300#",
226
+ convert_options: "-do_stuff"
227
+ }
228
+ }
229
+ end
230
+
231
+ it "has the right number of styles" do
232
+ expect(@attachment.styles).to be_a Hash
233
+ assert_equal 3, @attachment.styles.size
234
+ end
235
+
236
+ it "has styles as Style objects" do
237
+ [:aslist, :ashash, :aslist].each do |s|
238
+ expect(@attachment.styles[s]).to be_a Paperclip::Style
239
+ end
240
+ end
241
+
242
+ it "has the right geometries" do
243
+ [:aslist, :ashash, :aslist].each do |s|
244
+ assert_equal @attachment.styles[s].geometry, "300x300#"
245
+ end
246
+ end
247
+
248
+ it "has the right formats" do
249
+ assert_equal @attachment.styles[:aslist].format, :jpg
250
+ assert_equal @attachment.styles[:ashash].format, :png
251
+ assert_equal @attachment.styles[:asstring].format, :png
252
+ end
253
+
254
+ end
255
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Paperclip::TempfileFactory do
4
+ it "is able to generate a tempfile with the right name" do
5
+ file = subject.generate("omg.png")
6
+ assert File.extname(file.path), "png"
7
+ end
8
+
9
+ it "is able to generate a tempfile with the right name with a tilde at the beginning" do
10
+ file = subject.generate("~omg.png")
11
+ assert File.extname(file.path), "png"
12
+ end
13
+
14
+ it "is able to generate a tempfile with the right name with a tilde at the end" do
15
+ file = subject.generate("omg.png~")
16
+ assert File.extname(file.path), "png"
17
+ end
18
+
19
+ it "is able to generate a tempfile from a file with a really long name" do
20
+ filename = "#{"longfilename" * 100}.png"
21
+ file = subject.generate(filename)
22
+ assert File.extname(file.path), "png"
23
+ end
24
+
25
+ it 'is able to take nothing as a parameter and not error' do
26
+ file = subject.generate
27
+ assert File.exist?(file.path)
28
+ end
29
+
30
+ it "does not throw Errno::ENAMETOOLONG when it has a really long name" do
31
+ expect { subject.generate("o" * 255) }.to_not raise_error
32
+ end
33
+ end