forked from instructure/canvas-lms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrubyzip_spec.rb
More file actions
57 lines (46 loc) · 1.4 KB
/
Copy pathrubyzip_spec.rb
File metadata and controls
57 lines (46 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# coding: utf-8
require 'spec_helper'
describe "rubyzip encoding fix patch" do
before(:all) do
@utf8_name = "utf-8 molé"
@ascii_name = "ascii mol\xE9".force_encoding('ASCII-8BIT')
@tmpfile = Tempfile.new('datafile')
@tmpfile.write('some data')
@tmpfile.close
tmpzipfile = Tempfile.new('zipfile')
@zip_path = tmpzipfile.path
tmpzipfile.close!
Zip::File.open(@zip_path, true) do |arch|
arch.add @utf8_name, @tmpfile.path
arch.add @ascii_name, @tmpfile.path
end
end
after(:all) do
@tmpfile.unlink
File.unlink @zip_path
end
context "with zip file" do
before(:each) do
@arch = Zip::File.open(@zip_path, 'r')
end
after(:each) do
@arch.close
end
describe "entries" do
it "should return UTF-8 names in UTF-8 encoding" do
expect(@arch.entries.map(&:name).select { |filename| filename.encoding.to_s == 'UTF-8' }).to eql [@utf8_name]
end
it "should return non-UTF-8 names in ASCII-8BIT encoding" do
expect(@arch.entries.map(&:name).select { |filename| filename.encoding.to_s == 'ASCII-8BIT' }).to eql [@ascii_name]
end
end
describe "find_entry" do
it "should find a UTF-8 name" do
expect(@arch.find_entry(@utf8_name)).not_to be_nil
end
it "should find a non-UTF-8 name" do
expect(@arch.find_entry(@ascii_name)).not_to be_nil
end
end
end
end