ngzip 1.0.7 → 1.1.0

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,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e20636d23b8e7ba30af726b7a530f96f31eb636a
4
- data.tar.gz: ed999e168b1c77b6942cb2cb6f118a5a936fe434
2
+ SHA256:
3
+ metadata.gz: 84899280f348b240160b5c6984b7a4130a7a48f71b9c7d903051f99a36326f09
4
+ data.tar.gz: 1b1b057b9da9d80900035e732ed586b13c9e5a25659b4b9ac226862f7d6782b4
5
5
  SHA512:
6
- metadata.gz: 70d66540ec58ff16e08321b26b998e303c765f3aaa057f58e9956cd5922c1e39869ce1c2d75b5a5db01952a91089661470fca66bc069fe0d540b15e60c9743fc
7
- data.tar.gz: 769e82edd41c5029b2eef0be5dbc89fcdaaae0f5b2570902cbe3bc71b601d3145dde48b86bfebfe4839d785d4aece3a8b62fd74d7ae079cc1d5ba1d7bed882d6
6
+ metadata.gz: 6f5b599664e6b4f49de86596596ae5bdae4f9ab8601c260e58e075c6376d6a37c5aa25a441baa971cf590a1b11d218e675369e67140ca9076df197fc2c62aeaa
7
+ data.tar.gz: 815fb0735456a2020781276b456c47e8e76d567e2ef8b35bcd65856e38913c55e00c717cb1a0ced8da4f8e39d1d9febf9deec9645dcb9d2bf4de2790520ddee1
data/Gemfile CHANGED
@@ -1,4 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in ngzip.gemspec
6
+ group :test do
7
+ gem 'minitest'
8
+ gem 'minitest-reporters'
9
+ gem 'pry'
10
+ end
11
+
4
12
  gemspec
data/Rakefile CHANGED
@@ -1,11 +1,13 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
2
 
3
- require "rake/testtask"
3
+ require 'bundler/gem_tasks'
4
+
5
+ require 'rake/testtask'
4
6
 
5
7
  Rake::TestTask.new do |t|
6
8
  t.libs << 'lib'
7
9
  t.test_files = FileList['test/lib/ngzip/*_test.rb']
8
10
  t.verbose = true
9
11
  end
10
-
11
- task :default => :test
12
+
13
+ task default: :test
@@ -1,8 +1,11 @@
1
- require "ngzip/version"
2
- require "ngzip/builder"
1
+ # frozen_string_literal: true
3
2
 
3
+ require 'ngzip/version'
4
+ require 'ngzip/builder'
5
+
6
+ # Ngzip module
4
7
  module Ngzip
5
8
  def self.build(files, options)
6
- Ngzip::Builder.new().build(files, options)
9
+ Ngzip::Builder.new.build(files, options)
7
10
  end
8
11
  end
@@ -1,7 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'zlib'
2
4
  require 'uri'
5
+ require 'erb'
3
6
 
4
7
  module Ngzip
8
+ # The manifest builder based on the file list
5
9
  class Builder
6
10
  BUFFER_SIZE = 8 * 1024
7
11
 
@@ -13,22 +17,25 @@ module Ngzip
13
17
  # Returns a line for each file separated by \n
14
18
  #
15
19
  # The following options are available:
16
- # :crc => Enable or disable CRC-32 checksums
17
- # :crc_cache => Allows for provided cached CRC-32 checksums in a hash where the key is the file path
18
- # :base_dir => Use this as root for the relative pathes in the archive, keep all directories below
20
+ # crc: Enable or disable CRC-32 checksums
21
+ # crc_cache: Allows for provided cached CRC-32 checksums in a hash where the key is the file path
22
+ # base_dir: Use this as root for the relative pathes in the archive, keep all directories below
19
23
  def build(files, options = {})
20
- settings = {:crc => true}
24
+ settings = { crc: true }
21
25
  settings.merge! options
22
26
 
23
27
  list = file_list(files)
24
28
  prefix = options[:base_dir] || detect_common_prefix(list)
25
29
  prefix += '/' unless prefix.end_with?('/')
26
30
  list.map do |f|
27
- sprintf('%s %d %s %s',
28
- compute_crc32(f, settings),
29
- File.size(f).to_i,
30
- Builder.encode(f),
31
- f.gsub(prefix, '')
31
+ format(
32
+ '%<crc>s %<size>d %<url>s %<name>s',
33
+ {
34
+ crc: compute_crc32(f, settings),
35
+ size: File.size(f).to_i,
36
+ url: Builder.encode(f),
37
+ name: f.gsub(prefix, '')
38
+ }
32
39
  )
33
40
  end.join("\n")
34
41
  end
@@ -36,15 +43,15 @@ module Ngzip
36
43
  # Public: Get the special header to signal the mod_zip
37
44
  #
38
45
  # Returns the header as a string "key: value"
39
- def header()
40
- "X-Archive-Files: zip"
46
+ def header
47
+ 'X-Archive-Files: zip'
41
48
  end
42
49
 
43
50
  # Public: Encode the string
44
51
  #
45
52
  # Returns the encoded string using URL escape formatting
46
53
  def self.encode(string)
47
- URI.encode(string).gsub('+', '%2B').gsub('?', '%3F')
54
+ ERB::Util.url_encode(string)
48
55
  end
49
56
 
50
57
  private
@@ -55,16 +62,17 @@ module Ngzip
55
62
  #
56
63
  # Returns a common prefix
57
64
  def detect_common_prefix(list)
58
- if list.size == 1
59
- return File.dirname(list.first)
60
- end
61
- prefix = ''
62
- min, max = list.sort.values_at(0, -1)
65
+ return File.dirname(list.first) if list.size == 1
66
+
67
+ prefix = StringIO.new
68
+ excluding_file_names = list.map { |p| File.dirname p }
69
+ min, max = excluding_file_names.sort.values_at(0, -1)
63
70
  min.split(//).each_with_index do |c, i|
64
71
  break if c != max[i, 1]
72
+
65
73
  prefix << c
66
74
  end
67
- prefix
75
+ prefix.string
68
76
  end
69
77
 
70
78
  # Internal: Compute the file list by expanding directories
@@ -72,7 +80,9 @@ module Ngzip
72
80
  def file_list(files)
73
81
  Array(files).map do |e|
74
82
  if File.directory?(e)
75
- Dir.glob("#{e}/**/*").reject { |f| File.directory?(f) }
83
+ # `expand_path` removes any trailing slash from the path string
84
+ sanitized_path = File.expand_path(e)
85
+ Dir.glob("#{sanitized_path}/**/*").reject { |f| File.directory?(f) }
76
86
  else
77
87
  e
78
88
  end
@@ -80,7 +90,7 @@ module Ngzip
80
90
  end
81
91
 
82
92
  # Internal: Compute the CRC-32 checksum for a file unless the settings
83
- # disable the computation (:crc => false) and this method returns "-"
93
+ # disable the computation (crc: false) and this method returns "-"
84
94
  #
85
95
  # file - The full path to the file
86
96
  # settings - The settings hash
@@ -90,14 +100,12 @@ module Ngzip
90
100
  return '-' unless settings[:crc]
91
101
 
92
102
  # honor the cache
93
- if settings[:crc_cache] && settings[:crc_cache][file]
94
- return settings[:crc_cache][file]
95
- end
103
+ return settings[:crc_cache][file] if settings[:crc_cache] && settings[:crc_cache][file]
96
104
 
97
105
  # read using a buffer, we might operate on large files!
98
106
  crc32 = 0
99
- File.open(file,'rb') do |f|
100
- while buffer = f.read(BUFFER_SIZE) do
107
+ File.open(file, 'rb') do |f|
108
+ while (buffer = f.read(BUFFER_SIZE))
101
109
  crc32 = Zlib.crc32(buffer, crc32)
102
110
  end
103
111
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Ngzip
2
- VERSION = '1.0.7'.freeze
4
+ VERSION = '1.1.0'
3
5
  end
@@ -1,24 +1,27 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'english'
4
6
  require 'ngzip/version'
5
7
 
6
8
  Gem::Specification.new do |spec|
7
- spec.name = "ngzip"
9
+ spec.name = 'ngzip'
8
10
  spec.version = Ngzip::VERSION
9
- spec.authors = ["dup2"]
10
- spec.email = ["zarkov@cargoserver.ch"]
11
- spec.description = %q{Provides a nginx mod_zip compatible file manifest for streaming support.
12
- See http://wiki.nginx.org/NginxNgxZip for the nginx module.}
13
- spec.summary = %q{Provides a nginx mod_zip compatible file manifest for streaming support}
14
- spec.homepage = "https://github.com/cargoserver/ngzip"
15
- spec.license = "MIT"
11
+ spec.authors = ['dup2']
12
+ spec.email = ['zarkov@cargoserver.ch']
13
+ spec.description = %(Provides a nginx mod_zip compatible file manifest for streaming support.
14
+ See http://wiki.nginx.org/NginxNgxZip for the nginx module.)
15
+ spec.summary = 'Provides a nginx mod_zip compatible file manifest for streaming support'
16
+ spec.homepage = 'https://github.com/cargoserver/ngzip'
17
+ spec.license = 'MIT'
16
18
 
17
- spec.files = `git ls-files`.split($/)
19
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
18
20
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
21
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
- spec.require_paths = ["lib"]
22
+ spec.require_paths = ['lib']
21
23
 
22
- spec.add_development_dependency "bundler", "~> 1.3"
23
- spec.add_development_dependency "rake"
24
+ spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'rubocop'
24
27
  end
@@ -1,134 +1,154 @@
1
- require_relative "../../test_helper"
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../test_helper'
2
4
  require 'uri'
3
5
  require 'pathname'
4
6
 
5
7
  describe Ngzip do
6
-
7
8
  it 'must support the static method :build' do
8
- Ngzip.respond_to?(:build).must_equal true
9
+ expect(Ngzip.respond_to?(:build)).must_equal true
9
10
  end
10
-
11
11
  end
12
12
 
13
13
  describe Ngzip::Builder do
14
+ def encode_file_path(path)
15
+ ERB::Util.url_encode path
16
+ end
14
17
 
15
- let(:builder) {Ngzip::Builder.new()}
16
- let(:lorem) {File.expand_path('../../../data/a/lorem.txt', __FILE__)}
17
- let(:ipsum) {File.expand_path('../../../data/a/ipsum.txt', __FILE__)}
18
- let(:without_dot) {File.expand_path('../../../data/a/filename-without-a-dot', __FILE__)}
19
- let(:my_file) {File.expand_path('../../../data/a/d/my_file.txt', __FILE__)}
20
- let(:whitespaced) {File.expand_path('../../../data/a/A filename with whitespace.txt', __FILE__)}
21
- let(:plused) {File.expand_path('../../../data/c/A filename with space and + in it.txt', __FILE__)}
22
- let(:cargo) {File.expand_path('../../../data/b/Cargo.png', __FILE__)}
23
- let(:sit) {File.expand_path('../../../data/sit.txt', __FILE__)}
24
- let(:a) {File.expand_path('../../../data/a', __FILE__)}
25
- let(:questions) { File.expand_path('../../../data/c/questions?', __FILE__) }
18
+ let(:builder) { Ngzip::Builder.new }
19
+ let(:lorem) { File.expand_path('../../data/a/lorem.txt', __dir__) }
20
+ let(:ipsum) { File.expand_path('../../data/a/ipsum.txt', __dir__) }
21
+ let(:without_dot) { File.expand_path('../../data/a/filename-without-a-dot', __dir__) }
22
+ let(:my_file) { File.expand_path('../../data/a/d/my_file.txt', __dir__) }
23
+ let(:whitespaced) { File.expand_path('../../data/a/A filename with whitespace.txt', __dir__) }
24
+ let(:plused) { File.expand_path('../../data/c/A filename with space and + in it.txt', __dir__) }
25
+ let(:cargo) { File.expand_path('../../data/b/Cargo.png', __dir__) }
26
+ let(:sit) { File.expand_path('../../data/sit.txt', __dir__) }
27
+ let(:a) { File.expand_path('../../data/a', __dir__) }
28
+ let(:questions) { File.expand_path('../../data/c/questions?', __dir__) }
26
29
 
27
30
  it 'must be defined' do
28
- Ngzip::Builder.wont_be_nil
31
+ expect(Ngzip::Builder).wont_be_nil
29
32
  end
30
33
 
31
34
  it 'must be a class we can call :new on' do
32
- Ngzip::Builder.new().wont_be_nil
35
+ expect(Ngzip::Builder.new).wont_be_nil
33
36
  end
34
37
 
35
38
  it 'must respond to :build' do
36
- builder.respond_to?(:build).must_equal true
39
+ expect(builder.respond_to?(:build)).must_equal true
37
40
  end
38
41
 
39
- describe "with CRC-32 checksums disabled" do
40
- let(:options) { {:crc => false}}
42
+ describe 'with CRC-32 checksums disabled' do
43
+ let(:options) { { crc: false } }
41
44
 
42
45
  it 'must return a correct list for one file' do
43
- expected = "- 446 #{lorem} lorem.txt"
44
- builder.build(lorem, options).must_equal expected
46
+ expected = "- 446 #{encode_file_path(lorem)} lorem.txt"
47
+ expect(builder.build(lorem, options)).must_equal expected
45
48
  end
46
49
  end
47
50
 
48
- describe "with CRC-32 checksums enabled" do
49
- let(:options) { {:crc => true}}
51
+ describe 'with CRC-32 checksums enabled' do
52
+ let(:options) { { crc: true } }
50
53
 
51
54
  it 'must return a correct list for one file with a checksum' do
52
- expected = "8f92322f 446 #{lorem} lorem.txt"
53
- builder.build(lorem, options).must_equal expected
55
+ expected = "8f92322f 446 #{encode_file_path(lorem)} lorem.txt"
56
+ expect(builder.build(lorem, options)).must_equal expected
54
57
  end
55
58
 
56
59
  it 'must return a correct list for one binary file with a checksum' do
57
- expected = "b2f4655b 11550 #{cargo} Cargo.png"
58
- builder.build(cargo, options).must_equal expected
60
+ expected = "b2f4655b 11550 #{encode_file_path(cargo)} Cargo.png"
61
+ expect(builder.build(cargo, options)).must_equal expected
59
62
  end
60
63
 
61
64
  it 'must escape the path name' do
62
- expected = "8f92322f 446 #{URI.escape(whitespaced)} A filename with whitespace.txt"
63
- builder.build(whitespaced, options).must_equal expected
65
+ expected = "8f92322f 446 #{encode_file_path(whitespaced)} A filename with whitespace.txt"
66
+ expect(builder.build(whitespaced, options)).must_equal expected
64
67
  end
65
68
 
66
69
  it 'must return a correct list for all files in a directory' do
67
- expected = "8f92322f 446 #{URI.escape(whitespaced)} A filename with whitespace.txt"
68
- expected << "\n8f92322f 446 #{my_file} d/my_file.txt"
69
- expected << "\n8f92322f 446 #{without_dot} filename-without-a-dot"
70
- expected << "\n8f92322f 446 #{ipsum} ipsum.txt"
71
- expected << "\n8f92322f 446 #{lorem} lorem.txt"
72
- builder.build(a,options).must_equal expected
70
+ expected = StringIO.new
71
+ expected << "8f92322f 446 #{encode_file_path(whitespaced)} A filename with whitespace.txt"
72
+ expected << "\n8f92322f 446 #{encode_file_path(without_dot)} filename-without-a-dot"
73
+ expected << "\n8f92322f 446 #{encode_file_path(ipsum)} ipsum.txt"
74
+ expected << "\n8f92322f 446 #{encode_file_path(lorem)} lorem.txt"
75
+ expected << "\n8f92322f 446 #{encode_file_path(my_file)} d/my_file.txt"
76
+ expect(builder.build(a, options)).must_equal expected.string
73
77
  end
74
78
 
75
79
  it 'must allow to mix files and directories' do
76
- expected = "8f92322f 446 #{URI.escape(whitespaced)} a/A filename with whitespace.txt"
77
- expected << "\n8f92322f 446 #{my_file} a/d/my_file.txt"
78
- expected << "\n8f92322f 446 #{without_dot} a/filename-without-a-dot"
79
- expected << "\n8f92322f 446 #{ipsum} a/ipsum.txt"
80
- expected << "\n8f92322f 446 #{lorem} a/lorem.txt"
81
- expected << "\nf7c0867d 1342 #{sit} sit.txt"
82
- builder.build([a,sit], options).must_equal expected
80
+ expected = StringIO.new
81
+ expected << "8f92322f 446 #{encode_file_path(whitespaced)} a/A filename with whitespace.txt"
82
+ expected << "\n8f92322f 446 #{encode_file_path(without_dot)} a/filename-without-a-dot"
83
+ expected << "\n8f92322f 446 #{encode_file_path(ipsum)} a/ipsum.txt"
84
+ expected << "\n8f92322f 446 #{encode_file_path(lorem)} a/lorem.txt"
85
+ expected << "\n8f92322f 446 #{encode_file_path(my_file)} a/d/my_file.txt"
86
+ expected << "\nf7c0867d 1342 #{encode_file_path(sit)} sit.txt"
87
+ expect(builder.build([a, sit], options)).must_equal expected.string
83
88
  end
84
89
 
85
90
  it 'must preserve directory names' do
86
91
  expected = [
87
- "8f92322f 446 #{lorem} a/lorem.txt",
88
- "8f92322f 446 #{ipsum} a/ipsum.txt",
89
- "b2f4655b 11550 #{cargo} b/Cargo.png"
90
- ].join("\n")
91
- builder.build([lorem,ipsum,cargo], options).must_equal expected
92
+ "8f92322f 446 #{encode_file_path(lorem)} a/lorem.txt",
93
+ "8f92322f 446 #{encode_file_path(ipsum)} a/ipsum.txt",
94
+ "b2f4655b 11550 #{encode_file_path(cargo)} b/Cargo.png"
95
+ ].join("\n")
96
+ expect(builder.build([lorem, ipsum, cargo], options)).must_equal expected
92
97
  end
93
98
 
94
99
  it 'must honor the CRC cache' do
95
- invalid_but_cached = "781aaabcc124"
96
- expected = "#{invalid_but_cached} 446 #{lorem} lorem.txt"
97
- builder.build(lorem, options.merge(:crc_cache => {lorem => invalid_but_cached})).must_equal expected
100
+ invalid_but_cached = '781aaabcc124'
101
+ expected = "#{invalid_but_cached} 446 #{encode_file_path(lorem)} lorem.txt"
102
+ expect(builder.build(lorem, options.merge(crc_cache: { lorem => invalid_but_cached }))).must_equal expected
98
103
  end
99
104
 
100
105
  it 'must remove common directories by default' do
101
- pathes = builder.build([lorem, ipsum]).split("\n").map{|line| line.split.last}
102
- expected = ["lorem.txt", "ipsum.txt"]
103
- pathes.must_equal expected
106
+ pathes = builder.build([lorem, ipsum]).split("\n").map { |line| line.split.last }
107
+ expected = ['lorem.txt', 'ipsum.txt']
108
+ expect(pathes).must_equal expected
109
+ end
110
+
111
+ describe 'when building the manifest from a directory path parameter' do
112
+ it 'removes trailing slash from builder file path' do
113
+ dir_path = File.join(File.dirname(lorem), '/')
114
+ result = builder.build(dir_path)
115
+ encoded_host_path = ERB::Util.url_encode(File.join(File.expand_path('../data', File.dirname(__dir__)), '/'))
116
+ manifest = <<~MANIFEST.chomp
117
+ 8f92322f 446 #{encoded_host_path}a%2FA%20filename%20with%20whitespace.txt A filename with whitespace.txt
118
+ 8f92322f 446 #{encoded_host_path}a%2Ffilename-without-a-dot filename-without-a-dot
119
+ 8f92322f 446 #{encoded_host_path}a%2Fipsum.txt ipsum.txt
120
+ 8f92322f 446 #{encoded_host_path}a%2Florem.txt lorem.txt
121
+ 8f92322f 446 #{encoded_host_path}a%2Fd%2Fmy_file.txt d/my_file.txt
122
+ MANIFEST
123
+ expect(result).must_equal manifest
124
+ end
104
125
  end
105
126
 
106
127
  it 'must keep common directories if :base_dir is provided' do
107
- options = {:base_dir => Pathname.new(lorem).parent.parent.to_s}
108
- pathes = builder.build([lorem, ipsum], options).split("\n").map{|line| line.split.last}
109
- expected = ["a/lorem.txt", "a/ipsum.txt"]
110
- pathes.must_equal expected
128
+ options = { base_dir: Pathname.new(lorem).parent.parent.to_s }
129
+ pathes = builder.build([lorem, ipsum], options).split("\n").map { |line| line.split.last }
130
+ expected = ['a/lorem.txt', 'a/ipsum.txt']
131
+ expect(pathes).must_equal expected
111
132
  end
112
133
 
113
134
  it 'must cope with a trailing / in the :base_dir' do
114
- options = {:base_dir => Pathname.new(lorem).parent.parent.to_s + '/'}
115
- pathes = builder.build([lorem, ipsum], options).split("\n").map{|line| line.split.last}
116
- expected = ["a/lorem.txt", "a/ipsum.txt"]
117
- pathes.must_equal expected
135
+ options = { base_dir: "#{Pathname.new(lorem).parent.parent}/" }
136
+ pathes = builder.build([lorem, ipsum], options).split("\n").map { |line| line.split.last }
137
+ expected = ['a/lorem.txt', 'a/ipsum.txt']
138
+ expect(pathes).must_equal expected
118
139
  end
119
140
 
120
141
  it 'must correctly encode filenames with a "+"' do
121
142
  options = {}
122
- name = File.join(Pathname.new(plused).parent.to_s, 'A%20filename%20with%20space%20and%20%2B%20in%20it.txt')
123
- expected = "8f92322f 446 #{name} A filename with space and + in it.txt"
124
- builder.build([plused], options).must_equal expected
143
+ name = File.join(Pathname.new(plused).parent.to_s, 'A filename with space and + in it.txt')
144
+ expected = "8f92322f 446 #{encode_file_path(name)} A filename with space and + in it.txt"
145
+ expect(builder.build([plused], options)).must_equal expected
125
146
  end
126
147
 
127
148
  it 'must correctly encode the "?" character' do
128
- name = File.join(Pathname.new(questions).parent.to_s, 'questions%3F/test.txt')
129
- expected = "f03102f5 13 #{name} test.txt"
130
-
131
- builder.build([File.join(questions, 'test.txt')]).must_equal expected
149
+ name = File.join(Pathname.new(questions).parent.to_s, 'questions?/test.txt')
150
+ expected = "f03102f5 13 #{encode_file_path(name)} test.txt"
151
+ expect(builder.build([File.join(questions, 'test.txt')])).must_equal expected
132
152
  end
133
153
  end
134
154
  end
@@ -1,9 +1,9 @@
1
- require_relative "../../test_helper"
1
+ # frozen_string_literal: true
2
2
 
3
- describe Ngzip do
3
+ require_relative '../../test_helper'
4
4
 
5
- it "must define a version" do
6
- Ngzip::VERSION.wont_be_nil
5
+ describe Ngzip do
6
+ it 'must define a version' do
7
+ expect(Ngzip::VERSION).wont_be_nil
7
8
  end
8
-
9
- end
9
+ end
@@ -1,4 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'minitest/autorun'
2
4
  require 'minitest/pride'
3
- require File.expand_path('../../lib/ngzip.rb', __FILE__)
4
-
5
+ require 'minitest/reporters'
6
+ require 'pry'
7
+ Minitest::Reporters.use!
8
+ require File.expand_path('../lib/ngzip.rb', __dir__)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ngzip
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - dup2
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-20 00:00:00.000000000 Z
11
+ date: 2020-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: |-
42
56
  Provides a nginx mod_zip compatible file manifest for streaming support.
43
57
  See http://wiki.nginx.org/NginxNgxZip for the nginx module.
@@ -74,7 +88,7 @@ homepage: https://github.com/cargoserver/ngzip
74
88
  licenses:
75
89
  - MIT
76
90
  metadata: {}
77
- post_install_message:
91
+ post_install_message:
78
92
  rdoc_options: []
79
93
  require_paths:
80
94
  - lib
@@ -89,9 +103,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
103
  - !ruby/object:Gem::Version
90
104
  version: '0'
91
105
  requirements: []
92
- rubyforge_project:
93
- rubygems_version: 2.6.13
94
- signing_key:
106
+ rubygems_version: 3.0.8
107
+ signing_key:
95
108
  specification_version: 4
96
109
  summary: Provides a nginx mod_zip compatible file manifest for streaming support
97
110
  test_files: