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
73 lines (62 loc) · 2.07 KB
/
Copy pathrubyzip_spec.rb
File metadata and controls
73 lines (62 loc) · 2.07 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# coding: utf-8
#
# Copyright (C) 2013 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
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