ffi-libarchive 0.4.4 → 0.4.6
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 +4 -4
- data/lib/ffi-libarchive/version.rb +1 -1
- metadata +3 -40
- data/Gemfile +0 -10
- data/README.md +0 -77
- data/Rakefile +0 -28
- data/VERSION +0 -1
- data/ffi-libarchive.gemspec +0 -25
- data/test/data/test.tar.gz +0 -0
- data/test/sets/ts_read.rb +0 -143
- data/test/sets/ts_write.rb +0 -122
- data/test/test_ffi-libarchive.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c72d2c946ebbe1abc58adcc317403ec80da09dc6f1279da0a6ac4ba9b97f69b0
|
4
|
+
data.tar.gz: 28b4880ea52ac6818b2c8278aece3cbb1733c6df31a7832bf0d7b079f6bb2e8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc3da073141178fb7c7a92d86a345cfb1767218a1b30251b7ad610e8f3e21372e1937e63a4f5bc2375ebd032d3cb8401ac834c80bac35fb1821d081b779b850a
|
7
|
+
data.tar.gz: fa05aa479a2909b02e5e74f8ec361e9cae5a6092cbe42a3db1b6443c02eee740d0eee9fb91ec2a485904641eb8de98e6675f386e17b22217c086cf56de0f717c
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi-libarchive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Bellone
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-12-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: ffi
|
@@ -40,34 +40,6 @@ dependencies:
|
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '0'
|
43
|
-
- !ruby/object:Gem::Dependency
|
44
|
-
name: rake
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '0'
|
50
|
-
type: :development
|
51
|
-
prerelease: false
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
53
|
-
requirements:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: '0'
|
57
|
-
- !ruby/object:Gem::Dependency
|
58
|
-
name: test-unit
|
59
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
-
requirements:
|
61
|
-
- - ">="
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '0'
|
64
|
-
type: :development
|
65
|
-
prerelease: false
|
66
|
-
version_requirements: !ruby/object:Gem::Requirement
|
67
|
-
requirements:
|
68
|
-
- - ">="
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: '0'
|
71
43
|
description: A Ruby FFI binding to libarchive.
|
72
44
|
email:
|
73
45
|
- jbellone@bloomberg.net
|
@@ -77,12 +49,7 @@ executables: []
|
|
77
49
|
extensions: []
|
78
50
|
extra_rdoc_files: []
|
79
51
|
files:
|
80
|
-
- Gemfile
|
81
52
|
- LICENSE
|
82
|
-
- README.md
|
83
|
-
- Rakefile
|
84
|
-
- VERSION
|
85
|
-
- ffi-libarchive.gemspec
|
86
53
|
- lib/ffi-libarchive.rb
|
87
54
|
- lib/ffi-libarchive/archive.rb
|
88
55
|
- lib/ffi-libarchive/entry.rb
|
@@ -90,10 +57,6 @@ files:
|
|
90
57
|
- lib/ffi-libarchive/stat.rb
|
91
58
|
- lib/ffi-libarchive/version.rb
|
92
59
|
- lib/ffi-libarchive/writer.rb
|
93
|
-
- test/data/test.tar.gz
|
94
|
-
- test/sets/ts_read.rb
|
95
|
-
- test/sets/ts_write.rb
|
96
|
-
- test/test_ffi-libarchive.rb
|
97
60
|
homepage: https://github.com/chef/ffi-libarchive
|
98
61
|
licenses:
|
99
62
|
- Apache-2.0
|
@@ -114,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
77
|
version: '0'
|
115
78
|
requirements: []
|
116
79
|
rubyforge_project:
|
117
|
-
rubygems_version: 2.7.
|
80
|
+
rubygems_version: 2.7.6
|
118
81
|
signing_key:
|
119
82
|
specification_version: 4
|
120
83
|
summary: A Ruby FFI binding to libarchive.
|
data/Gemfile
DELETED
data/README.md
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
ffi-libarchive
|
2
|
-
==============
|
3
|
-
A Ruby FFI binding to [libarchive][0].
|
4
|
-
|
5
|
-
This library provides Ruby FFI bindings to the well-known
|
6
|
-
[libarchive library][0].
|
7
|
-
|
8
|
-
## Installation
|
9
|
-
|
10
|
-
Ensure that you have libarchive installed. On Debian/Ubuntu:
|
11
|
-
|
12
|
-
```sh
|
13
|
-
apt install libarchive13
|
14
|
-
```
|
15
|
-
|
16
|
-
On macOS with Homebrew:
|
17
|
-
```sh
|
18
|
-
brew install libarchive
|
19
|
-
```
|
20
|
-
|
21
|
-
Add this line to your application's Gemfile:
|
22
|
-
|
23
|
-
```ruby
|
24
|
-
gem 'ffi-libarchive'
|
25
|
-
```
|
26
|
-
|
27
|
-
And then execute:
|
28
|
-
|
29
|
-
```shell
|
30
|
-
$ bundle
|
31
|
-
```
|
32
|
-
|
33
|
-
Or install it yourself as:
|
34
|
-
|
35
|
-
```shell
|
36
|
-
$ gem install ffi-libarchive
|
37
|
-
```
|
38
|
-
|
39
|
-
## Usage
|
40
|
-
|
41
|
-
To extract an archive into the current directory:
|
42
|
-
|
43
|
-
```ruby
|
44
|
-
flags = Archive::EXTRACT_PERM
|
45
|
-
reader = Archive::Reader.open_filename('/path/to/archive.tgz')
|
46
|
-
|
47
|
-
reader.each_entry do |entry|
|
48
|
-
reader.extract(entry, flags.to_i)
|
49
|
-
end
|
50
|
-
reader.close
|
51
|
-
```
|
52
|
-
|
53
|
-
To create a gzipped tar archive:
|
54
|
-
|
55
|
-
```ruby
|
56
|
-
Archive.write_open_filename('my.tgz', Archive::COMPRESSION_GZIP, Archive::FORMAT_TAR_PAX_RESTRICTED) do |tar|
|
57
|
-
content = File.read 'some_path'
|
58
|
-
size = content.size
|
59
|
-
tar.new_entry do |e|
|
60
|
-
e.pathname = 'some_path'
|
61
|
-
e.size = size
|
62
|
-
e.filetype = Archive::Entry::FILE
|
63
|
-
tar.write_header e
|
64
|
-
tar.write_data content
|
65
|
-
end
|
66
|
-
end
|
67
|
-
```
|
68
|
-
|
69
|
-
## Contributing
|
70
|
-
|
71
|
-
Bug reports and pull requests are welcome on GitHub at <https://github.com/chef/ffi-libarchive>. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Community Guidelines](https://docs.chef.io/community_guidelines.html) code of conduct.
|
72
|
-
|
73
|
-
## License
|
74
|
-
|
75
|
-
The gem is available as open source under the terms of the Apache License, v2
|
76
|
-
|
77
|
-
[0]: https://github.com/libarchive/libarchive
|
data/Rakefile
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
#!/usr/bin/env rake
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "bundler/gem_tasks"
|
5
|
-
require "chefstyle"
|
6
|
-
require "rubocop/rake_task"
|
7
|
-
require "rake/testtask"
|
8
|
-
|
9
|
-
namespace :style do
|
10
|
-
desc "Run Ruby style checks"
|
11
|
-
RuboCop::RakeTask.new(:ruby)
|
12
|
-
end
|
13
|
-
|
14
|
-
Rake::TestTask.new(:test) do |t|
|
15
|
-
t.libs << "test"
|
16
|
-
t.libs << "lib"
|
17
|
-
t.test_files = FileList["test/test_ffi-libarchive.rb"]
|
18
|
-
end
|
19
|
-
|
20
|
-
desc "Run all style checks"
|
21
|
-
task style: ["style:ruby"]
|
22
|
-
|
23
|
-
desc "Run style & unit tests on Travis"
|
24
|
-
task travis: %w{style test}
|
25
|
-
|
26
|
-
# Default
|
27
|
-
desc "Run style, unit"
|
28
|
-
task default: %w{style test}
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.4.4
|
data/ffi-libarchive.gemspec
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path("../lib", __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require "ffi-libarchive/version"
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = "ffi-libarchive"
|
8
|
-
s.version = Archive::VERSION
|
9
|
-
s.authors = ["John Bellone", "Jamie Winsor", "Frank Fischer"]
|
10
|
-
s.email = %w{jbellone@bloomberg.net jamie@vialstudios.com frank-fischer@shadow-soft.de}
|
11
|
-
s.description = "A Ruby FFI binding to libarchive."
|
12
|
-
s.summary = s.description
|
13
|
-
s.homepage = "https://github.com/chef/ffi-libarchive"
|
14
|
-
s.license = "Apache-2.0"
|
15
|
-
|
16
|
-
s.files = %w{ Gemfile Rakefile README.md LICENSE VERSION } + Dir.glob("{lib,test}/**/*", File::FNM_DOTMATCH).reject { |f| File.directory?(f) } + Dir.glob("*.gemspec")
|
17
|
-
s.require_paths = %w{lib}
|
18
|
-
s.required_ruby_version = ">= 2.4.0"
|
19
|
-
|
20
|
-
s.add_dependency "ffi", "~> 1.0"
|
21
|
-
|
22
|
-
s.add_development_dependency "bundler"
|
23
|
-
s.add_development_dependency "rake"
|
24
|
-
s.add_development_dependency "test-unit"
|
25
|
-
end
|
data/test/data/test.tar.gz
DELETED
Binary file
|
data/test/sets/ts_read.rb
DELETED
@@ -1,143 +0,0 @@
|
|
1
|
-
require "ffi-libarchive"
|
2
|
-
require "tmpdir"
|
3
|
-
require "test/unit"
|
4
|
-
|
5
|
-
class TS_ReadArchive < Test::Unit::TestCase
|
6
|
-
|
7
|
-
CONTENT_SPEC = [
|
8
|
-
["test/", "directory", 0755, nil ],
|
9
|
-
["test/b/", "directory", 0755, nil ],
|
10
|
-
["test/b/c/", "directory", 0755, nil ],
|
11
|
-
["test/b/c/c.dat", "file", 0600, "\266\262\v_\266\243\305\3601\204\277\351\354\265\003\036\036\365f\377\210\205\032\222\346\370b\360u\032Y\301".b ],
|
12
|
-
["test/b/c/d/", "directory", 0711, nil ],
|
13
|
-
["test/b/c/d/d.dat", "symbolic_link", 0777, "../c.dat" ],
|
14
|
-
["test/b/b.dat", "file", 0640, "s&\245\354(M\331=\270\000!s\355\240\252\355'N\304\343\bY\317\t\274\210\3128\321\347\234!".b ],
|
15
|
-
["test/a.dat", "file", 0777, "\021\216\231Y\354\236\271\372\336\213\224R\211{D{\277\262\304\211xu\330\\\275@~\035\vSRM".b ]
|
16
|
-
].freeze
|
17
|
-
|
18
|
-
def setup
|
19
|
-
File.open("data/test.tar.gz", "rb") do |f|
|
20
|
-
@archive_content = f.read
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_read_tar_gz_from_file
|
25
|
-
Archive.read_open_filename("data/test.tar.gz") do |ar|
|
26
|
-
verify_content(ar)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_read_tar_gz_from_file_with_external_gunzip
|
31
|
-
Archive.read_open_filename("data/test.tar.gz", "gunzip") do |ar|
|
32
|
-
verify_content(ar)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_read_tar_gz_from_memory
|
37
|
-
Archive.read_open_memory(@archive_content) do |ar|
|
38
|
-
verify_content(ar)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_read_tar_gz_from_memory_with_external_gunzip
|
43
|
-
Archive.read_open_memory(@archive_content, "gunzip") do |ar|
|
44
|
-
verify_content(ar)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_read_entry_bigger_than_internal_buffer
|
49
|
-
alphabet = "abcdefghijklmnopqrstuvwxyz"
|
50
|
-
entry_size = 1024 * 4 - 3
|
51
|
-
|
52
|
-
srand
|
53
|
-
content = ""
|
54
|
-
1.upto(entry_size) do |i|
|
55
|
-
index = rand(alphabet.size)
|
56
|
-
content += alphabet[index, 1]
|
57
|
-
end
|
58
|
-
|
59
|
-
Dir.mktmpdir do |dir|
|
60
|
-
Archive.write_open_filename(dir + "/test.tar.gz",
|
61
|
-
Archive::COMPRESSION_BZIP2, Archive::FORMAT_TAR) do |ar|
|
62
|
-
ar.new_entry do |entry|
|
63
|
-
entry.pathname = "chubby.dat"
|
64
|
-
entry.mode = 0666
|
65
|
-
entry.filetype = Archive::Entry::FILE
|
66
|
-
entry.atime = Time.now.to_i
|
67
|
-
entry.mtime = Time.now.to_i
|
68
|
-
entry.size = entry_size
|
69
|
-
ar.write_header(entry)
|
70
|
-
ar.write_data(content)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
Archive.read_open_filename(dir + "/test.tar.gz") do |ar|
|
75
|
-
ar.next_header
|
76
|
-
data = ar.read_data
|
77
|
-
|
78
|
-
assert_equal entry_size, data.size
|
79
|
-
assert_equal content.size, data.size
|
80
|
-
assert_equal content, data
|
81
|
-
end
|
82
|
-
|
83
|
-
Archive.read_open_filename(dir + "/test.tar.gz") do |ar|
|
84
|
-
ar.next_header
|
85
|
-
data = ""
|
86
|
-
ar.read_data(128) { |chunk| data += chunk }
|
87
|
-
|
88
|
-
assert_equal content, data
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_extract_no_additional_flags
|
94
|
-
Dir.mktmpdir do |dir|
|
95
|
-
Archive.read_open_filename("data/test.tar.gz") do |ar|
|
96
|
-
Dir.chdir(dir) do
|
97
|
-
ar.each_entry do |e|
|
98
|
-
ar.extract(e)
|
99
|
-
assert_not_equal File.mtime(e.pathname), e.mtime
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
def test_extract_extract_time
|
107
|
-
Dir.mktmpdir do |dir|
|
108
|
-
Archive.read_open_filename("data/test.tar.gz") do |ar|
|
109
|
-
Dir.chdir(dir) do
|
110
|
-
ar.each_entry do |e|
|
111
|
-
ar.extract(e, Archive::EXTRACT_TIME.to_i)
|
112
|
-
next if e.directory? || e.symbolic_link?
|
113
|
-
assert_equal File.mtime(e.pathname), e.mtime
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
private
|
121
|
-
|
122
|
-
def verify_content(ar)
|
123
|
-
content_spec_idx = 0
|
124
|
-
|
125
|
-
while (entry = ar.next_header)
|
126
|
-
expect_pathname, expect_type, expect_mode, expect_content = CONTENT_SPEC[content_spec_idx]
|
127
|
-
|
128
|
-
assert_equal expect_pathname, entry.pathname
|
129
|
-
assert_equal entry.send("#{expect_type}?"), true
|
130
|
-
assert_equal expect_mode, (entry.mode & 07777)
|
131
|
-
|
132
|
-
if entry.symbolic_link?
|
133
|
-
assert_equal expect_content, entry.symlink
|
134
|
-
elsif entry.file?
|
135
|
-
content = ar.read_data(1024)
|
136
|
-
assert_equal expect_content, content
|
137
|
-
end
|
138
|
-
|
139
|
-
content_spec_idx += 1
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
end
|
data/test/sets/ts_write.rb
DELETED
@@ -1,122 +0,0 @@
|
|
1
|
-
require "ffi-libarchive"
|
2
|
-
require "tmpdir"
|
3
|
-
require "test/unit"
|
4
|
-
|
5
|
-
class TS_WriteArchive < Test::Unit::TestCase
|
6
|
-
|
7
|
-
CONTENT_SPEC = [
|
8
|
-
["test/", "directory", 0755, nil ],
|
9
|
-
["test/b/", "directory", 0755, nil ],
|
10
|
-
["test/b/c/", "directory", 0755, nil ],
|
11
|
-
["test/b/c/c.dat", "file", 0600, "\266\262\v_\266\243\305\3601\204\277\351\354\265\003\036\036\365f\377\210\205\032\222\346\370b\360u\032Y\301".b ],
|
12
|
-
["test/b/c/d/", "directory", 0711, nil ],
|
13
|
-
["test/b/c/d/d.dat", "symbolic_link", 0777, "../c.dat" ],
|
14
|
-
["test/b/b.dat", "file", 0640, "s&\245\354(M\331=\270\000!s\355\240\252\355'N\304\343\bY\317\t\274\210\3128\321\347\234!".b ],
|
15
|
-
["test/a.dat", "file", 0777, "\021\216\231Y\354\236\271\372\336\213\224R\211{D{\277\262\304\211xu\330\\\275@~\035\vSRM".b ]
|
16
|
-
].freeze
|
17
|
-
|
18
|
-
def test_end_to_end_write_read_tar_gz
|
19
|
-
Dir.mktmpdir do |dir|
|
20
|
-
Archive.write_open_filename(dir + "/test.tar.gz", :gzip, :tar) do |ar|
|
21
|
-
write_content(ar)
|
22
|
-
end
|
23
|
-
|
24
|
-
verify_content(dir + "/test.tar.gz")
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_end_to_end_write_read_memory
|
29
|
-
memory = ""
|
30
|
-
Archive.write_open_memory(memory, Archive::COMPRESSION_GZIP, Archive::FORMAT_TAR) do |ar|
|
31
|
-
write_content ar
|
32
|
-
end
|
33
|
-
verify_content_memory(memory)
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_end_to_end_write_read_tar_gz_with_external_gzip
|
37
|
-
Dir.mktmpdir do |dir|
|
38
|
-
Archive.write_open_filename(dir + "/test.tar.gz", "gzip", :tar) do |ar|
|
39
|
-
write_content(ar)
|
40
|
-
end
|
41
|
-
|
42
|
-
verify_content(dir + "/test.tar.gz")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
def write_content(ar)
|
49
|
-
content_spec_idx = 0
|
50
|
-
|
51
|
-
while content_spec_idx < CONTENT_SPEC.size()
|
52
|
-
entry_path, entry_type, entry_mode, entry_content = \
|
53
|
-
CONTENT_SPEC[content_spec_idx]
|
54
|
-
|
55
|
-
ar.new_entry do |entry|
|
56
|
-
entry.pathname = entry_path
|
57
|
-
entry.mode = entry_mode
|
58
|
-
entry.filetype = eval "Archive::Entry::#{entry_type.upcase}" # rubocop:disable Security/Eval
|
59
|
-
entry.size = entry_content.size if entry_content
|
60
|
-
entry.symlink = entry_content if entry_type == "symbolic_link"
|
61
|
-
entry.atime = Time.now.to_i
|
62
|
-
entry.mtime = Time.now.to_i
|
63
|
-
ar.write_header(entry)
|
64
|
-
|
65
|
-
if entry_type == "file"
|
66
|
-
ar.write_data(entry_content)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
content_spec_idx += 1
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def verify_content_memory(memory)
|
75
|
-
Archive.read_open_memory(memory) do |ar|
|
76
|
-
content_spec_idx = 0
|
77
|
-
|
78
|
-
while (entry = ar.next_header)
|
79
|
-
expect_pathname, expect_type, expect_mode, expect_content = \
|
80
|
-
CONTENT_SPEC[content_spec_idx]
|
81
|
-
|
82
|
-
assert_equal expect_pathname, entry.pathname
|
83
|
-
assert_equal entry.send("#{expect_type}?"), true
|
84
|
-
assert_equal expect_mode, (entry.mode & 07777)
|
85
|
-
|
86
|
-
if entry.symbolic_link?
|
87
|
-
assert_equal expect_content, entry.symlink
|
88
|
-
elsif entry.file?
|
89
|
-
content = ar.read_data(1024)
|
90
|
-
assert_equal expect_content, content
|
91
|
-
end
|
92
|
-
|
93
|
-
content_spec_idx += 1
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def verify_content(filename)
|
99
|
-
Archive.read_open_filename(filename) do |ar|
|
100
|
-
content_spec_idx = 0
|
101
|
-
|
102
|
-
while (entry = ar.next_header)
|
103
|
-
expect_pathname, expect_type, expect_mode, expect_content = \
|
104
|
-
CONTENT_SPEC[content_spec_idx]
|
105
|
-
|
106
|
-
assert_equal expect_pathname, entry.pathname
|
107
|
-
assert_equal entry.send("#{expect_type}?"), true
|
108
|
-
assert_equal expect_mode, (entry.mode & 07777)
|
109
|
-
|
110
|
-
if entry.symbolic_link?
|
111
|
-
assert_equal expect_content, entry.symlink
|
112
|
-
elsif entry.file?
|
113
|
-
content = ar.read_data(1024)
|
114
|
-
assert_equal expect_content, content
|
115
|
-
end
|
116
|
-
|
117
|
-
content_spec_idx += 1
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
end
|