gitlab-grack 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25c3243797c8eb47ef7a3b23c51b158302e1a678
4
- data.tar.gz: 7f61020402644b75ccd37b71b8685b2ffe2bb098
3
+ metadata.gz: 5fc5bcb451c40e574630cae0bdc3558f12a02740
4
+ data.tar.gz: 00a192537b9aa1d4de99aedb9cb57df5337c6db6
5
5
  SHA512:
6
- metadata.gz: 111327afddbdd3c21e878264390031f3a8eec351402c044759dcaefe2403a2d17324e4d2351535dd116e9fa30a6039621f8ac19782c82e2ba2a802394725f3a9
7
- data.tar.gz: dc300d7e110cef0d994943c309a3ad92ba91ee6e43432a11d8ba0df55685e5087c401b0edd38d7de951a3e615bbf4650dd34fafe9775cfe408eb5091a8ecbcf7
6
+ metadata.gz: ec553c2ff9f16b50fec324fb84a17e7d135e257c546376f3251d338b7f4b1f77cebcc9e6687e2277e0aabd03c22ff520ce61b6a182d40e6f53e6f1b913220986
7
+ data.tar.gz: d58e809fb002214c54431cff78a50979e0d4e33eebdb61538f919e16fe745cc30d62d58519b4eaaebe9dd1584b25c1117a81c339514112676e8dc7565be388d0
data/.gitignore CHANGED
@@ -1,5 +1,4 @@
1
1
  coverage/
2
2
  examples/*.git
3
- tests/*.git
4
3
  pkg/
5
4
  *.gem
@@ -0,0 +1,3 @@
1
+ [submodule "tests/example"]
2
+ path = tests/example
3
+ url = git://github.com/schacon/simplegit.git
@@ -5,9 +5,10 @@ branches:
5
5
  only:
6
6
  - 'master'
7
7
  rvm:
8
+ - 1.9.3-p327
8
9
  - 2.0.0
9
10
  before_script:
10
11
  - "bundle install"
11
- - "git clone --bare git://github.com/schacon/simplegit.git tests/example.git"
12
- - "cd tests/example.git && git repack && cd ../.."
12
+ - "git submodule init"
13
+ - "git submodule update"
13
14
  script: "bundle exec rake"
data/CHANGELOG CHANGED
@@ -1,5 +1,8 @@
1
+ 2.0.2
2
+ - Revert MR that broke smart HTTP clients.
3
+
1
4
  2.0.1
2
- Make sure child processes get reaped after popen, again.
5
+ - Make sure child processes get reaped after popen, again.
3
6
 
4
7
  2.0.0
5
8
  - Use safer shell commands and avoid Dir.chdir
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab-grack (2.0.1)
4
+ gitlab-grack (2.0.2)
5
5
  rack (~> 1.5.1)
6
6
 
7
7
  GEM
data/Rakefile CHANGED
@@ -5,13 +5,9 @@ task :default => :test
5
5
 
6
6
  desc "Run the tests."
7
7
  task :test do
8
- system "git clone --bare git://github.com/schacon/simplegit.git tests/example.git"
9
- # We could put this in a chdir block but we should keep it consistent with Travis
10
- system "cd tests/example.git && git repack && cd ../.."
11
8
  Dir.glob("tests/*_test.rb").each do |f|
12
9
  system "ruby #{f}"
13
10
  end
14
- system "rm -rf tests/example.git"
15
11
  end
16
12
 
17
13
  desc "Run test coverage."
@@ -82,8 +82,7 @@ module Grack
82
82
  pipe.write(input)
83
83
  pipe.close_write
84
84
 
85
- while !pipe.eof?
86
- block = pipe.read(8192) # 8KB at a time
85
+ while block = pipe.read(8192) # 8KB at a time
87
86
  @res.write encode_chunk(block) # stream it to the client
88
87
  end
89
88
 
@@ -103,14 +102,13 @@ module Grack
103
102
 
104
103
  def get_info_refs
105
104
  service_name = get_service_type
106
- return dumb_info_refs unless smart_http?(service_name)
107
- return render_no_access unless has_access?(service_name)
105
+ return dumb_info_refs unless has_access?(service_name)
108
106
 
109
107
  refs = git.execute([service_name, '--stateless-rpc', '--advertise-refs', git.repo])
110
108
 
111
109
  @res = Rack::Response.new
112
110
  @res.status = 200
113
- @res["Content-Type"] = "application/x-git-#{service_name}-advertisement"
111
+ @res["Content-Type"] = "application/x-git-%s-advertisement" % service_name
114
112
  hdr_nocache
115
113
 
116
114
  @res.write(pkt_write("# service=git-#{service_name}\n"))
@@ -228,13 +226,10 @@ module Grack
228
226
  nil
229
227
  end
230
228
 
231
- def smart_http?(rpc = @rpc)
232
- @req.content_type == "application/x-git-#{rpc}-request"
233
- end
234
-
235
229
  def has_access?(rpc, check_content_type = false)
236
230
  if check_content_type
237
- return false unless smart_http?(rpc)
231
+ conten_type = "application/x-git-%s-request" % rpc
232
+ return false unless @req.content_type == conten_type
238
233
  end
239
234
 
240
235
  return false unless ['upload-pack', 'receive-pack'].include?(rpc)
@@ -1,3 +1,3 @@
1
1
  module Grack
2
- VERSION = "2.0.1"
2
+ VERSION = "2.0.2"
3
3
  end
@@ -25,7 +25,7 @@ class GitHttpTest < Test::Unit::TestCase
25
25
  end
26
26
 
27
27
  def test_upload_pack_advertisement
28
- get "/example.git/info/refs?service=git-upload-pack", {}, {"CONTENT_TYPE" => "application/x-git-upload-pack-request"}
28
+ get "/example/info/refs?service=git-upload-pack"
29
29
  assert_equal 200, r.status
30
30
  assert_equal "application/x-git-upload-pack-advertisement", r.headers["Content-Type"]
31
31
  assert_equal "001e# service=git-upload-pack", r.body.split("\n").first
@@ -33,22 +33,22 @@ class GitHttpTest < Test::Unit::TestCase
33
33
  end
34
34
 
35
35
  def test_no_access_wrong_content_type_up
36
- post "/example.git/git-upload-pack"
36
+ post "/example/git-upload-pack"
37
37
  assert_equal 403, r.status
38
38
  end
39
39
 
40
40
  def test_no_access_wrong_content_type_rp
41
- post "/example.git/git-receive-pack"
41
+ post "/example/git-receive-pack"
42
42
  assert_equal 403, r.status
43
43
  end
44
44
 
45
45
  def test_no_access_wrong_method_rcp
46
- get "/example.git/git-upload-pack"
46
+ get "/example/git-upload-pack"
47
47
  assert_equal 400, r.status
48
48
  end
49
49
 
50
50
  def test_no_access_wrong_command_rcp
51
- post "/example.git/git-upload-packfile"
51
+ post "/example/git-upload-packfile"
52
52
  assert_equal 404, r.status
53
53
  end
54
54
 
@@ -61,13 +61,13 @@ class GitHttpTest < Test::Unit::TestCase
61
61
  def test_upload_pack_rpc
62
62
  Grack::Git.any_instance.stubs(:valid_repo?).returns(true)
63
63
  IO.stubs(:popen).returns(MockProcess.new)
64
- post "/example.git/git-upload-pack", {}, {"CONTENT_TYPE" => "application/x-git-upload-pack-request"}
64
+ post "/example/git-upload-pack", {}, {"CONTENT_TYPE" => "application/x-git-upload-pack-request"}
65
65
  assert_equal 200, r.status
66
66
  assert_equal "application/x-git-upload-pack-result", r.headers["Content-Type"]
67
67
  end
68
68
 
69
69
  def test_receive_pack_advertisement
70
- get "/example.git/info/refs?service=git-receive-pack", {}, {"CONTENT_TYPE" => "application/x-git-receive-pack-request"}
70
+ get "/example/info/refs?service=git-receive-pack"
71
71
  assert_equal 200, r.status
72
72
  assert_equal "application/x-git-receive-pack-advertisement", r.headers["Content-Type"]
73
73
  assert_equal "001f# service=git-receive-pack", r.body.split("\n").first
@@ -79,25 +79,25 @@ class GitHttpTest < Test::Unit::TestCase
79
79
  def test_recieve_pack_rpc
80
80
  Grack::Git.any_instance.stubs(:valid_repo?).returns(true)
81
81
  IO.stubs(:popen).yields(MockProcess.new)
82
- post "/example.git/git-receive-pack", {}, {"CONTENT_TYPE" => "application/x-git-receive-pack-request"}
82
+ post "/example/git-receive-pack", {}, {"CONTENT_TYPE" => "application/x-git-receive-pack-request"}
83
83
  assert_equal 200, r.status
84
84
  assert_equal "application/x-git-receive-pack-result", r.headers["Content-Type"]
85
85
  end
86
86
 
87
87
  def test_info_refs_dumb
88
- get "/example.git/info/refs"
88
+ get "/example/.git/info/refs"
89
89
  assert_equal 200, r.status
90
90
  end
91
91
 
92
92
  def test_info_packs
93
- get "/example.git/objects/info/packs"
93
+ get "/example/.git/objects/info/packs"
94
94
  assert_equal 200, r.status
95
95
  assert_match /P pack-(.*?).pack/, r.body
96
96
  end
97
97
 
98
98
  def test_loose_objects
99
99
  path, content = write_test_objects
100
- get "/example.git/objects/#{path}"
100
+ get "/example/.git/objects/#{path}"
101
101
  assert_equal 200, r.status
102
102
  assert_equal content, r.body
103
103
  remove_test_objects
@@ -105,7 +105,7 @@ class GitHttpTest < Test::Unit::TestCase
105
105
 
106
106
  def test_pack_file
107
107
  path, content = write_test_objects
108
- get "/example.git/objects/pack/pack-#{content}.pack"
108
+ get "/example/.git/objects/pack/pack-#{content}.pack"
109
109
  assert_equal 200, r.status
110
110
  assert_equal content, r.body
111
111
  remove_test_objects
@@ -113,44 +113,44 @@ class GitHttpTest < Test::Unit::TestCase
113
113
 
114
114
  def test_index_file
115
115
  path, content = write_test_objects
116
- get "/example.git/objects/pack/pack-#{content}.idx"
116
+ get "/example/.git/objects/pack/pack-#{content}.idx"
117
117
  assert_equal 200, r.status
118
118
  assert_equal content, r.body
119
119
  remove_test_objects
120
120
  end
121
121
 
122
122
  def test_text_file
123
- get "/example.git/HEAD"
123
+ get "/example/.git/HEAD"
124
124
  assert_equal 200, r.status
125
- assert_equal 23, r.body.size # submodules have detached head
125
+ assert_equal 41, r.body.size # submodules have detached head
126
126
  end
127
127
 
128
128
  def test_no_size_avail
129
129
  File.stubs('size?').returns(false)
130
- get "/example.git/HEAD"
130
+ get "/example/.git/HEAD"
131
131
  assert_equal 200, r.status
132
- assert_equal 28, r.body.size # submodules have detached head
132
+ assert_equal 46, r.body.size # submodules have detached head
133
133
  end
134
134
 
135
135
  def test_config_upload_pack_off
136
136
  a1 = app
137
137
  a1.set_config_setting(:upload_pack, false)
138
138
  session = Rack::Test::Session.new(a1)
139
- session.get "/example.git/info/refs?service=git-upload-pack", {}, {"CONTENT_TYPE" => "application/x-git-upload-pack-request"}
140
- assert_equal 403, session.last_response.status
139
+ session.get "/example/info/refs?service=git-upload-pack"
140
+ assert_equal 404, session.last_response.status
141
141
  end
142
142
 
143
143
  def test_config_receive_pack_off
144
144
  a1 = app
145
145
  a1.set_config_setting(:receive_pack, false)
146
146
  session = Rack::Test::Session.new(a1)
147
- session.get "/example.git/info/refs?service=git-receive-pack", {}, {"CONTENT_TYPE" => "application/x-git-receive-pack-request"}
148
- assert_equal 403, session.last_response.status
147
+ session.get "/example/info/refs?service=git-receive-pack"
148
+ assert_equal 404, session.last_response.status
149
149
  end
150
150
 
151
151
  def test_config_bad_service
152
- get "/example.git/info/refs?service=git-receive-packfile", {}, {"CONTENT_TYPE" => "application/x-git-receive-packfile-request"}
153
- assert_equal 403, r.status
152
+ get "/example/info/refs?service=git-receive-packfile"
153
+ assert_equal 404, r.status
154
154
  end
155
155
 
156
156
  def test_git_config_receive_pack
@@ -159,16 +159,16 @@ class GitHttpTest < Test::Unit::TestCase
159
159
  session = Rack::Test::Session.new(app1)
160
160
  git = Grack::Git
161
161
  git.any_instance.stubs(:config).with('http.receivepack').returns('')
162
- session.get "/example.git/info/refs?service=git-receive-pack", {}, {"CONTENT_TYPE" => "application/x-git-receive-pack-request"}
163
- assert_equal 403, session.last_response.status
162
+ session.get "/example/info/refs?service=git-receive-pack"
163
+ assert_equal 404, session.last_response.status
164
164
 
165
165
  git.any_instance.stubs(:config).with('http.receivepack').returns('true')
166
- session.get "/example.git/info/refs?service=git-receive-pack", {}, {"CONTENT_TYPE" => "application/x-git-receive-pack-request"}
166
+ session.get "/example/info/refs?service=git-receive-pack"
167
167
  assert_equal 200, session.last_response.status
168
168
 
169
169
  git.any_instance.stubs(:config).with('http.receivepack').returns('false')
170
- session.get "/example.git/info/refs?service=git-receive-pack", {}, {"CONTENT_TYPE" => "application/x-git-receive-pack-request"}
171
- assert_equal 403, session.last_response.status
170
+ session.get "/example/info/refs?service=git-receive-pack"
171
+ assert_equal 404, session.last_response.status
172
172
  end
173
173
 
174
174
  def test_git_config_upload_pack
@@ -177,16 +177,16 @@ class GitHttpTest < Test::Unit::TestCase
177
177
  session = Rack::Test::Session.new(app1)
178
178
  git = Grack::Git
179
179
  git.any_instance.stubs(:config).with('http.uploadpack').returns('')
180
- session.get "/example.git/info/refs?service=git-upload-pack", {}, {"CONTENT_TYPE" => "application/x-git-upload-pack-request"}
180
+ session.get "/example/info/refs?service=git-upload-pack"
181
181
  assert_equal 200, session.last_response.status
182
182
 
183
183
  git.any_instance.stubs(:config).with('http.uploadpack').returns('true')
184
- session.get "/example.git/info/refs?service=git-upload-pack", {}, {"CONTENT_TYPE" => "application/x-git-upload-pack-request"}
184
+ session.get "/example/info/refs?service=git-upload-pack"
185
185
  assert_equal 200, session.last_response.status
186
186
 
187
187
  git.any_instance.stubs(:config).with('http.uploadpack').returns('false')
188
- session.get "/example.git/info/refs?service=git-upload-pack", {}, {"CONTENT_TYPE" => "application/x-git-upload-pack-request"}
189
- assert_equal 403, session.last_response.status
188
+ session.get "/example/info/refs?service=git-upload-pack"
189
+ assert_equal 404, session.last_response.status
190
190
  end
191
191
 
192
192
  def test_send_file
@@ -215,7 +215,7 @@ class GitHttpTest < Test::Unit::TestCase
215
215
 
216
216
  def write_test_objects
217
217
  content = Digest::SHA1.hexdigest('gitrocks')
218
- base = File.join(File.expand_path(File.dirname(__FILE__)), 'example.git', 'objects')
218
+ base = File.join(File.expand_path(File.dirname(__FILE__)), 'example', '.git', 'objects')
219
219
  obj = File.join(base, '20')
220
220
  Dir.mkdir(obj) rescue nil
221
221
  file = File.join(obj, content[0, 38])
@@ -229,7 +229,7 @@ class GitHttpTest < Test::Unit::TestCase
229
229
 
230
230
  def remove_test_objects
231
231
  content = Digest::SHA1.hexdigest('gitrocks')
232
- base = File.join(File.expand_path(File.dirname(__FILE__)), 'example.git', 'objects')
232
+ base = File.join(File.expand_path(File.dirname(__FILE__)), 'example', '.git', 'objects')
233
233
  obj = File.join(base, '20')
234
234
  file = File.join(obj, content[0, 38])
235
235
  pack = File.join(base, 'pack', "pack-#{content}.pack")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-grack
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Chacon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-20 00:00:00.000000000 Z
11
+ date: 2015-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -48,6 +48,7 @@ extensions: []
48
48
  extra_rdoc_files: []
49
49
  files:
50
50
  - ".gitignore"
51
+ - ".gitmodules"
51
52
  - ".travis.yml"
52
53
  - CHANGELOG
53
54
  - Gemfile