archive-ar 0.0.6 → 0.0.7

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YWY1YWRjODBiOTQ0NTY0MGJiZTRlYWEyNDk4MTVhOWE0ZDIzODRiMw==
4
+ ZjljZDM4OGY1Y2Y5OTViNjNmYjVlOGY4MzQzM2E3YmJiMWVkNWRjZQ==
5
5
  data.tar.gz: !binary |-
6
- YzJkMGUzMGM5MzljNjAwMWEyMjYxM2QyNjIyOGEyOWQ4MzZhMzc0Mg==
6
+ M2Y1YjY1NDYzNTA0ZDZkNmIyMGMwOTY4ODNhYzc1YTAxY2Y5NWM2Yg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MDllMDhkOGRlNjNmOTc2YmU3ZWE3MmNkMjRhZjNkNjkzYTgwZTk1MTZlOWFl
10
- ZTZkNTYxZjc0NTc1ZTQ1YmE3ODliZDY5NDVkNDVlN2EzMGExNjNmMDUzMGQ0
11
- ZWYyODZhNDI0NDAzYWFkNWVmYTEwMGZkNjQxYWQ5OWE3Mzc5ZjQ=
9
+ YmIxNDZkZjY0ZGY4ZWM2NTE1ODkzOTA3YjgwYWRkNDFlNWFlMmQ3YTk2ODIz
10
+ OGJlY2ZlMTY4YTJmN2I2ZWIyNDZiZWE4M2IwNTJjMmIwM2UxOTcxNjc0MmZj
11
+ MTVmZjk2YzI1NDYwZmExNmVjZDYyYzVjOWRlYTIzZjMwYzE2ZGQ=
12
12
  data.tar.gz: !binary |-
13
- YjM4MThiMjFiYzgzMTQ5ZjJjODk4MGRkYmEyOWViOTcyNzc2NWUxY2JiYzZl
14
- OTQ1MzczMGYxMTlmZTQ1NDNlZWFiMzY0ZjJkYWFhNGVmYzA3MjRiOTYyMWI5
15
- ZTZmMjJkZDM5ZGMyNTYxNDAxMzdmNWQ5ZmI3NTU1YjM1NzA1Y2Q=
13
+ YjNhMjJhZDZkZjVkNTBhODI5YjVlNjI5OGYzMzc4MGZjYzg5ODFiNDc5YmUz
14
+ MTk1MjY3OGQzNmY2YTM3ZjRjMTUwOTZlY2U5ZDk0YTc2OGM2NjYzYWNhYTll
15
+ OTk1NmM0OTNkMDQyNTA0YzMxZTM4ZDJjNzY3MWJiMWJiOWEzNDg=
@@ -1,4 +1,6 @@
1
1
  language: ruby
2
+ before_script:
3
+ - cd ext; ./integration.rb
2
4
  rvm:
3
5
  - 2.1.1
4
6
  - 1.9.3
data/Gemfile CHANGED
@@ -2,6 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  unless RUBY_VERSION < "1.9"
4
4
  gem 'coveralls', :require => false
5
+ gem 'guard-rspec'
5
6
  end
6
7
 
7
8
  # Specify your gem's dependencies in archive-ar.gemspec
@@ -0,0 +1,15 @@
1
+ # Global Header
2
+
3
+ <!arch>\n
4
+
5
+ # File Header
6
+
7
+ | Name | Offset | Length |
8
+ | ------------- | ------ | ------ |
9
+ | Filename | 0 | 16 |
10
+ | Modified Time | 16 | 12 |
11
+ | Owner | 28 | 6 |
12
+ | Group | 34 | 6 |
13
+ | File Mode | 40 | 8 |
14
+ | Size | 48 | 10 |
15
+ | Magic | 58 | 2 |
data/README.md CHANGED
@@ -24,11 +24,35 @@ Or install it yourself as:
24
24
 
25
25
  ## Usage
26
26
 
27
- TODO: Write usage instructions here
27
+ ### Create an archive
28
+
29
+ $ ar.rb -r somearchive.ar file1 file2
30
+
31
+ `````ruby
32
+ Archive::Ar.create("somearchive.ar", ["file1", "file2"])
33
+ `````
34
+
35
+ ### Extract an archive
36
+
37
+ $ ar.rb -x somearchive.ar /tmp
38
+
39
+ `````ruby
40
+ Archive::Ar.extract("somearchive.ar", "/tmp")
41
+ `````
42
+
43
+ ### Advanced
44
+
45
+ $ ar.rb -t somearchive.ar
46
+
47
+ `````ruby
48
+ Archive::Ar.traverse("somearchive.ar") do |file|
49
+ puts file.name
50
+ end
51
+ `````
28
52
 
29
53
  ## Contributing
30
54
 
31
- 1. Fork it ( http://github.com/<my-github-username>/archive-ar/fork )
55
+ 1. Fork it ( http://github.com/jbussdieker/ruby-archive-ar/fork )
32
56
  2. Create your feature branch (`git checkout -b my-new-feature`)
33
57
  3. Commit your changes (`git commit -am 'Add some feature'`)
34
58
  4. Push to the branch (`git push origin my-new-feature`)
data/bin/ar.rb CHANGED
@@ -51,6 +51,12 @@ OptionParser.new do |opts|
51
51
  options[:p] = v
52
52
  end
53
53
 
54
+ opts.on("-r", "Replace or add the specified files to the archive. If the archive does not exist a new archive file
55
+ is created. Files that replace existing files do not change the order of the files within the ar-
56
+ chive. New files are appended to the archive unless one of the options -a, -b or -i is specified.") do |v|
57
+ options[:r] = v
58
+ end
59
+
54
60
  opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
55
61
  options[:verbose] = v
56
62
  end
@@ -59,6 +65,7 @@ end.parse!
59
65
  if options[:p]
60
66
  raise "illegal option combination for -p" if options[:t]
61
67
  raise "illegal option combination for -p" if options[:x]
68
+ raise "illegal option combination for -p" if options[:r]
62
69
 
63
70
  Archive::Ar.traverse(ARGV[0]) do |header, data|
64
71
  if options[:verbose]
@@ -68,6 +75,18 @@ if options[:p]
68
75
  end
69
76
  puts data
70
77
  end
78
+ elsif options[:r]
79
+ raise "illegal option combination for -r" if options[:t]
80
+ raise "illegal option combination for -r" if options[:x]
81
+
82
+ filename = ARGV.shift
83
+ unless File.exists?(filename)
84
+ puts "ar: creating archive #{filename}"
85
+ Archive::Ar.create(filename, ARGV)
86
+ else
87
+ puts "we only support create"
88
+ exit 1
89
+ end
71
90
  elsif options[:t]
72
91
  raise "illegal option combination for -t" if options[:x]
73
92
 
@@ -92,7 +111,7 @@ elsif options[:x]
92
111
  if options[:verbose]
93
112
  Archive::Ar.traverse(ARGV[0]) do |header, data|
94
113
  puts "x - #{header[:name]}"
95
- Archive::Ar::Format.extract_file(Dir.pwd, header, data)
114
+ Archive::Ar::Format::BSD.extract_file(Dir.pwd, header, data)
96
115
  end
97
116
  else
98
117
  Archive::Ar.extract(ARGV[0], Dir.pwd)
@@ -0,0 +1 @@
1
+ test
File without changes
@@ -0,0 +1 @@
1
+ asdf
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,25 +1,65 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'digest/md5'
3
+ require 'fileutils'
4
+
2
5
  AR_COMMAND = 'ar'
3
6
  ARCHIVE_AR_COMMAND = 'bundle exec ../bin/ar.rb'
4
7
 
5
- def run_test(cmd)
8
+ def run_test(cmd, md5file = nil)
9
+ pass = true
6
10
  puts "Testing `ar #{cmd}`"
11
+
12
+ # Test original
7
13
  out_ar = `#{AR_COMMAND} #{cmd} 2>&1`
14
+ if md5file
15
+ md5_ar = Digest::MD5.file(md5file)
16
+ file_ar = File.read(md5file)
17
+ FileUtils.rm_rf(md5file)
18
+ end
19
+
20
+ # Test ruby version
8
21
  out_archive_ar = `#{ARCHIVE_AR_COMMAND} #{cmd} 2>&1`
22
+ if md5file
23
+ md5_archive_ar = Digest::MD5.file(md5file)
24
+ file_archive_ar = File.read(md5file)
25
+ FileUtils.rm_rf(md5file)
26
+ end
27
+
28
+ if md5_ar != md5_archive_ar
29
+ pass = false
30
+
31
+ puts " Error #{cmd}"
32
+ puts " File mismatch:"
33
+ puts " Expected: #{md5_ar}"
34
+ puts " Got: #{md5_archive_ar}"
35
+ puts " Expected:"
36
+ puts "--------------------"
37
+ puts file_ar
38
+ puts "--------------------"
39
+ puts " Got:"
40
+ puts "--------------------"
41
+ puts file_archive_ar
42
+ puts "--------------------"
43
+ end
9
44
 
10
45
  if out_ar != out_archive_ar
46
+ pass = false
47
+
11
48
  puts " Error #{cmd}"
12
49
  puts " Expected:"
13
50
  out_ar.split("\n").each {|l| puts " | #{l}"}
14
51
  puts " Got:"
15
52
  out_archive_ar.split("\n").each {|l| puts " | #{l}"}
16
- false
17
- else
18
- true
19
53
  end
54
+
55
+ pass
20
56
  end
21
57
 
22
- #run_test("-r test.ar myfile")
58
+ run_test("-r integration-temp.ar myfile", "integration-temp.ar")
59
+ run_test("-r integration-temp.ar abcdefghijklmnopqrstuvwxyz", "integration-temp.ar")
60
+ run_test("-r integration-temp.ar myfile.even", "integration-temp.ar")
61
+ run_test("-r integration-temp.ar myfile myfile.even", "integration-temp.ar")
62
+ run_test("-r integration-temp.ar aaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbb cccccccccccccccccc ddddddddddddddddddd eeeeeeeeeeeeeeeeeeee fffffffffffffffffffff gggggggggggggggggggggg", "integration-temp.ar")
23
63
  run_test("-t test.ar")
24
64
  run_test("-tv test.ar")
25
65
  run_test("-p test.ar")
@@ -0,0 +1,35 @@
1
+ blahblahblahblahblahblah
2
+ blahblahblahblahblahblah
3
+ blahblahblahblahblahblah
4
+ blahblahblahblahblahblah
5
+ blahblahblahblahblahblah
6
+ blahblahblahblahblahblah
7
+ blahblahblahblahblahblah
8
+ blahblahblahblahblahblah
9
+ blahblahblahblahblahblah
10
+ blahblahblahblahblahblah
11
+ blahblahblahblahblahblah
12
+ blahblahblahblahblahblah
13
+ blahblahblahblahblahblah
14
+ blahblahblahblahblahblah
15
+ blahblahblahblahblahblah
16
+ blahblahblahblahblahblah
17
+ blahblahblahblahblahblah
18
+ blahblahblahblahblahblah
19
+ blahblahblahblahblahblah
20
+ blahblahblahblahblahblah
21
+ blahblahblahblahblahblah
22
+ blahblahblahblahblahblah
23
+ blahblahblahblahblahblah
24
+ blahblahblahblahblahblah
25
+ blahblahblahblahblahblah
26
+ blahblahblahblahblahblah
27
+ blahblahblahblahblahblah
28
+ blahblahblahblahblahblah
29
+ blahblahblahblahblahblah
30
+ blahblahblahblahblahblah
31
+ blahblahblahblahblahblah
32
+ blahblahblahblahblahblah
33
+ blahblahblahblahblahblah
34
+ blahblahblahblahblahblah
35
+ blahblahblahblahblahblah
@@ -1,75 +1,9 @@
1
+ require 'archive/ar/format/bsd'
2
+ require 'archive/ar/format/gnu'
3
+
1
4
  module Archive
2
5
  module Ar
3
- class Format
4
- class << self
5
- def read_global_header(io)
6
- io.read(8).tap do |global_header|
7
- raise "Invalid header" unless global_header == Archive::Ar::MAGIC
8
- end
9
- end
10
-
11
- def build_header(file)
12
- header = {
13
- :name => File.basename(file),
14
- :modified => File.mtime(file).to_i,
15
- :owner => File.stat(file).uid,
16
- :group => File.stat(file).gid,
17
- :mode => File.stat(file).mode,
18
- :size => File.size(file),
19
- :magic => "`\n"
20
- }
21
-
22
- data = ""
23
- data += "%-16s" % header[:name]
24
- data += "%-12s" % header[:modified]
25
- data += "%-6s" % header[:owner]
26
- data += "%-6s" % header[:group]
27
- data += "%-8s" % header[:mode].to_s(8)
28
- data += "%-10s" % header[:size]
29
- data += "%2s" % header[:magic]
30
- data
31
- end
32
-
33
- def parse_header(data)
34
- h = data.unpack("A16 Z12 a6 a6 A8 Z10 Z2")
35
- {
36
- :name => h.shift.chomp("/"), # Remove trailing slash. Some archives have this...
37
- :modified => Time.at(h.shift.to_i),
38
- :owner => h.shift.to_i,
39
- :group => h.shift.to_i,
40
- :mode => h.shift.to_i(8),
41
- :size => h.shift.to_i,
42
- :magic => h.shift,
43
- }
44
- end
45
-
46
- def read_header(io)
47
- block = io.read(60)
48
- header = parse_header(block)
49
- header.merge! :start => io.tell
50
-
51
- if header[:name].start_with? "#1/"
52
- long_size = header[:name][3..-1].to_i
53
- header[:start] += long_size
54
- header[:name] = io.read(long_size).strip
55
- end
56
-
57
- header
58
- end
59
-
60
- def extract_file(dest_dir, header, data, options = {})
61
- file = File.join(dest_dir, header[:name])
62
-
63
- File.open(file, "w") do |f|
64
- f.write(data)
65
- end
66
-
67
- File.chmod(header[:mode], file)
68
- #FileUtils.chown(header[:owner], header[:group], file)
69
-
70
- true
71
- end
72
- end
6
+ module Format
73
7
  end
74
8
  end
75
9
  end
@@ -0,0 +1,94 @@
1
+ module Archive
2
+ module Ar
3
+ module Format
4
+ class BSD
5
+ class << self
6
+ def read_global_header(io)
7
+ io.read(8).tap do |global_header|
8
+ raise "Invalid header" unless global_header == Archive::Ar::MAGIC
9
+ end
10
+ end
11
+
12
+ def extract_file(dest_dir, header, data, options = {})
13
+ file = File.join(dest_dir, header[:name])
14
+
15
+ File.open(file, "w") do |f|
16
+ f.write(data)
17
+ end
18
+
19
+ File.chmod(header[:mode], file)
20
+ #FileUtils.chown(header[:owner], header[:group], file)
21
+
22
+ true
23
+ end
24
+
25
+ def read_header(io)
26
+ block = io.read(60)
27
+ header = parse_header(block)
28
+ header.merge! :start => io.tell
29
+
30
+ if header[:name].start_with? "#1/"
31
+ long_size = header[:name][3..-1].to_i
32
+ header[:start] += long_size
33
+ header[:name] = io.read(long_size).strip
34
+ end
35
+
36
+ header
37
+ end
38
+
39
+ def build_header(file)
40
+ header = read_file_header(file)
41
+ header_to_s(header)
42
+ end
43
+
44
+ private
45
+
46
+ def read_file_header(file)
47
+ {
48
+ :name => File.basename(file),
49
+ :modified => File.mtime(file).to_i,
50
+ :owner => File.stat(file).uid,
51
+ :group => File.stat(file).gid,
52
+ :mode => File.stat(file).mode,
53
+ :size => File.size(file),
54
+ :magic => "`\n"
55
+ }
56
+ end
57
+
58
+ def header_to_s(header)
59
+ data = ""
60
+ namebuf = header[:name]
61
+ if namebuf.length > 16
62
+ namebuf += "\0" * (4 - namebuf.length % 4) if (namebuf.length % 4) != 0
63
+ data += "%-16s" % "#1/#{namebuf.length}"
64
+ header[:size] += namebuf.length
65
+ else
66
+ data += "%-16s" % header[:name]
67
+ end
68
+ data += "%-12s" % header[:modified]
69
+ data += "%-6s" % header[:owner]
70
+ data += "%-6s" % header[:group]
71
+ data += "%-8s" % header[:mode].to_s(8)
72
+ data += "%-10s" % header[:size]
73
+ data += "%2s" % header[:magic]
74
+ data += namebuf if header[:name].length > 16
75
+ data
76
+ end
77
+
78
+ def parse_header(data)
79
+ h = data.unpack("A16 Z12 a6 a6 A8 Z10 Z2")
80
+ {
81
+ :name => h.shift.chomp("/"), # Remove trailing slash. Some archives have this...
82
+ :modified => Time.at(h.shift.to_i),
83
+ :owner => h.shift.to_i,
84
+ :group => h.shift.to_i,
85
+ :mode => h.shift.to_i(8),
86
+ :size => h.shift.to_i,
87
+ :magic => h.shift,
88
+ }
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,8 @@
1
+ module Archive
2
+ module Ar
3
+ module Format
4
+ class GNU
5
+ end
6
+ end
7
+ end
8
+ end
@@ -4,11 +4,12 @@ module Archive
4
4
  def initialize(source, options)
5
5
  @source = source
6
6
  @options = options
7
+ @format = Archive::Ar::Format::BSD
7
8
  end
8
9
 
9
10
  def extract(dest_dir, options)
10
11
  each do |header, data|
11
- Archive::Ar::Format.extract_file(dest_dir, header, data, options)
12
+ @format.extract_file(dest_dir, header, data, options)
12
13
  end
13
14
  end
14
15
 
@@ -27,10 +28,10 @@ module Archive
27
28
  @index = []
28
29
  @records = {}
29
30
 
30
- Archive::Ar::Format.read_global_header(io)
31
+ @format.read_global_header(io)
31
32
 
32
33
  until io.eof?
33
- header = Archive::Ar::Format.read_header(io)
34
+ header = @format.read_header(io)
34
35
  size = header[:size]
35
36
  name = header[:name]
36
37
 
@@ -1,5 +1,5 @@
1
1
  module Archive
2
2
  module Ar
3
- VERSION = "0.0.6"
3
+ VERSION = "0.0.7"
4
4
  end
5
5
  end
@@ -3,11 +3,13 @@ module Archive
3
3
  class Writer
4
4
  def initialize(filenames)
5
5
  @filenames = filenames
6
+ @format = Archive::Ar::Format::BSD
6
7
  end
7
8
 
8
9
  def build_ar_entry(file)
9
- header = Archive::Ar::Format.build_header(file)
10
+ header = @format.build_header(file)
10
11
  data = File.read(file)
12
+ data += "\n" if (data.length + header.length) % 2 == 1
11
13
  [header, data].join
12
14
  end
13
15
 
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- describe Archive::Ar::Format do
2
+ describe Archive::Ar::Format::BSD do
3
3
  describe "read_global_header" do
4
- let(:read_global_header) { Archive::Ar::Format.read_global_header(io) }
4
+ let(:read_global_header) { Archive::Ar::Format::BSD.read_global_header(io) }
5
5
  subject { read_global_header }
6
6
 
7
7
  context "when valid" do
@@ -20,18 +20,25 @@ describe Archive::Ar::Format do
20
20
  end
21
21
 
22
22
  describe "build_header" do
23
- let(:file) { "spec/fixtures/file" }
24
23
  let(:timestamp) { "%-12s" % File.mtime(file).to_i }
25
24
  let(:owner) { "%-6s" % File.stat(file).uid }
26
25
  let(:group) { "%-6s" % File.stat(file).gid }
27
26
  let(:mode) { "%-8s" % File.stat(file).mode.to_s(8) }
28
- let(:subject) { Archive::Ar::Format.build_header(file) }
27
+ let(:subject) { Archive::Ar::Format::BSD.build_header(file) }
29
28
 
30
- it { should == "file #{timestamp}#{owner}#{group}#{mode}5 `\n" }
29
+ context "normal single file" do
30
+ let(:file) { "spec/fixtures/file" }
31
+ it { should == "file #{timestamp}#{owner}#{group}#{mode}5 `\n" }
32
+ end
33
+
34
+ context "long name single file" do
35
+ let(:file) { "spec/fixtures/abcdefghijklmnopqrstuvwxyz" }
36
+ it { should == "#1/28 #{timestamp}#{owner}#{group}#{mode}28 `\nabcdefghijklmnopqrstuvwxyz\0\0" }
37
+ end
31
38
  end
32
39
 
33
40
  describe "read_header" do
34
- let(:read_header) { Archive::Ar::Format.read_header(io) }
41
+ let(:read_header) { Archive::Ar::Format::BSD.read_header(io) }
35
42
  let(:io) { StringIO.new(payload) }
36
43
  subject { read_header }
37
44
 
@@ -75,7 +82,7 @@ describe Archive::Ar::Format do
75
82
  let(:header) { { :name => "file", :mode => 0100644 } }
76
83
  let(:data) { "test" }
77
84
  let(:options) { {} }
78
- subject { Archive::Ar::Format.extract_file(dest_dir, header, data, options) }
85
+ subject { Archive::Ar::Format::BSD.extract_file(dest_dir, header, data, options) }
79
86
 
80
87
  it { should == true }
81
88
  end
@@ -8,7 +8,7 @@ describe Archive::Ar do
8
8
  let(:filenames) { ["spec/fixtures/file"] }
9
9
  subject { Archive::Ar.create(dest_file, filenames, options) }
10
10
 
11
- it { should == 65 }
11
+ it { should == 66 }
12
12
  end
13
13
 
14
14
  describe "extract" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: archive-ar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua B. Bussdieker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-09 00:00:00.000000000 Z
11
+ date: 2014-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,22 +66,35 @@ files:
66
66
  - Gemfile
67
67
  - Guardfile
68
68
  - LICENSE.txt
69
+ - NOTES.md
69
70
  - README.md
70
71
  - Rakefile
71
72
  - archive-ar.gemspec
72
73
  - bin/ar.rb
74
+ - ext/aaaaaaaaaaaaaaaa
75
+ - ext/abcdefghijklmnopqrstuvwxyz
76
+ - ext/bbbbbbbbbbbbbbbbb
77
+ - ext/cccccccccccccccccc
78
+ - ext/ddddddddddddddddddd
79
+ - ext/eeeeeeeeeeeeeeeeeeee
80
+ - ext/fffffffffffffffffffff
81
+ - ext/gggggggggggggggggggggg
73
82
  - ext/integration.rb
74
83
  - ext/myfile
84
+ - ext/myfile.even
75
85
  - ext/test.ar
76
86
  - lib/archive/ar.rb
77
87
  - lib/archive/ar/format.rb
88
+ - lib/archive/ar/format/bsd.rb
89
+ - lib/archive/ar/format/gnu.rb
78
90
  - lib/archive/ar/reader.rb
79
91
  - lib/archive/ar/version.rb
80
92
  - lib/archive/ar/writer.rb
93
+ - spec/fixtures/abcdefghijklmnopqrstuvwxyz
81
94
  - spec/fixtures/archive.ar
82
95
  - spec/fixtures/emptyfile
83
96
  - spec/fixtures/file
84
- - spec/lib/archive/ar/format_spec.rb
97
+ - spec/lib/archive/ar/format/bsd_spec.rb
85
98
  - spec/lib/archive/ar/reader_spec.rb
86
99
  - spec/lib/archive/ar/writer_spec.rb
87
100
  - spec/lib/archive/ar_spec.rb
@@ -112,10 +125,11 @@ signing_key:
112
125
  specification_version: 4
113
126
  summary: Simple AR file functions
114
127
  test_files:
128
+ - spec/fixtures/abcdefghijklmnopqrstuvwxyz
115
129
  - spec/fixtures/archive.ar
116
130
  - spec/fixtures/emptyfile
117
131
  - spec/fixtures/file
118
- - spec/lib/archive/ar/format_spec.rb
132
+ - spec/lib/archive/ar/format/bsd_spec.rb
119
133
  - spec/lib/archive/ar/reader_spec.rb
120
134
  - spec/lib/archive/ar/writer_spec.rb
121
135
  - spec/lib/archive/ar_spec.rb