revision_plate 0.1.1 → 0.1.3

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: 0b7a681b78b1521300089eec60a31ddf500e2497
4
- data.tar.gz: 00b444374ae5a0364fcee8fa9b9dfada64bc30a0
2
+ SHA256:
3
+ metadata.gz: 6bc128e2a63da131bdb0d0bf5ed9c99963b9c2c4a1d7da62ff898874852e5b09
4
+ data.tar.gz: e604795fa2182370168f14f591c9a29e0b3dc618b06510738bc9addc03ab7434
5
5
  SHA512:
6
- metadata.gz: 2d0a4f7068344548015eceb82d7c8273683be979cb85726f8445514a3a2e62ba9c0548737d4128b75ae57d378b4febc82a3e33bf764dbddef0b21beba3b2be4d
7
- data.tar.gz: b0b47299856a9c9373a3c468c7e65d799050e2d88622fb5e59cb57c8b01059429fd485b5dc21fb5687756dc91cef43a0d6687cccc61d98b3eb49c0fc01f474a0
6
+ metadata.gz: c05bc4338ed61758f69d391cbd10f224629ed80a136fb12b888782219925124db81a37c1ade7ae78e5d0da556f4fd4f56e6a0d5df5a11297f09c24597b78706b
7
+ data.tar.gz: 354c13119651d1c8c127d0680f46c46aa03c0cbbf599f9414aad08dcd02b1edabbd0c21825ebff4023d64f347491db0446bcb5897b86333057785c127bd5da12
data/Rakefile CHANGED
@@ -1,4 +1,3 @@
1
- ENV['gem_push']='false'
2
1
  require "bundler/gem_tasks"
3
2
  require 'rake/testtask'
4
3
 
@@ -24,19 +24,31 @@ module RevisionPlate
24
24
  end
25
25
  end
26
26
 
27
+ ACCEPT_METHODS = ['GET', 'HEAD'].freeze
28
+
27
29
  def call(env)
28
- unless env['REQUEST_METHOD'] == 'GET' && (@path ? env['PATH_INFO'] == @path : true)
29
- return [404, {'Content-Type' => 'text/plain'}, []]
30
+ unless ACCEPT_METHODS.include?(env['REQUEST_METHOD']) && (@path ? env['PATH_INFO'] == @path : true)
31
+ return [404, {'content-type' => 'text/plain'}, []]
30
32
  end
31
33
 
32
34
  if @revision
33
35
  if @file.exist?
34
- [200, {'Content-Type' => 'text/plain'}, [@revision, ?\n]]
36
+ status = 200
37
+ body = [@revision, ?\n]
35
38
  else
36
- [404, {'Content-Type' => 'text/plain'}, ["REVISION_FILE_REMOVED\n"]]
39
+ status = 404
40
+ body = ["REVISION_FILE_REMOVED\n"]
37
41
  end
38
42
  else
39
- [404, {'Content-Type' => 'text/plain'}, ["REVISION_FILE_NOT_FOUND\n"]]
43
+ status = 404
44
+ body = ["REVISION_FILE_NOT_FOUND\n"]
45
+ end
46
+
47
+ headers = {'content-type' => 'text/plain'}
48
+ if env['REQUEST_METHOD'] == 'HEAD'
49
+ [status, headers, []]
50
+ else
51
+ [status, headers, body]
40
52
  end
41
53
  end
42
54
  end
@@ -8,8 +8,10 @@ module RevisionPlate
8
8
  @revision_app = App.new(file, **options)
9
9
  end
10
10
 
11
+ ACCEPT_METHODS = %w[GET HEAD].freeze
12
+
11
13
  def call(env)
12
- if env['PATH_INFO'] == @path && env['REQUEST_METHOD'] == 'GET'
14
+ if env['PATH_INFO'] == @path && ACCEPT_METHODS.include?(env['REQUEST_METHOD'])
13
15
  @revision_app.call(env)
14
16
  else
15
17
  @app.call(env)
@@ -1,3 +1,3 @@
1
1
  module RevisionPlate
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", ">= 1.7.8"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "minitest", "~> 5.5.1"
24
- spec.add_development_dependency "rack-test", "~> 0.6.3"
21
+ spec.add_development_dependency "bundler", ">= 2.6"
22
+ spec.add_development_dependency "rake", "~> 13.0"
23
+ spec.add_development_dependency "minitest", "~> 5.5"
24
+ spec.add_development_dependency "rack-test", "~> 2.2"
25
25
 
26
26
  spec.add_dependency "rack"
27
27
  end
data/test/app_test.rb CHANGED
@@ -42,6 +42,14 @@ class AppTest < Minitest::Spec
42
42
  assert_equal 200, response.status
43
43
  assert_equal "a\n", response.body
44
44
  end
45
+
46
+ describe 'HEAD request' do
47
+ it 'returns 200' do
48
+ head '/'
49
+ assert_equal 200, response.status
50
+ assert_equal '', response.body
51
+ end
52
+ end
45
53
  end
46
54
 
47
55
  describe 'without Rails' do
@@ -59,12 +67,19 @@ class AppTest < Minitest::Spec
59
67
  assert_equal 200, response.status
60
68
  assert_equal "a\n", response.body
61
69
 
70
+ head '/site/sha'
71
+ assert_equal 200, response.status
72
+ assert_equal "", response.body
73
+
62
74
  post '/site/sha'
63
75
  assert_equal 404, response.status
64
76
 
65
77
  get '/site/sha/a'
66
78
  assert_equal 404, response.status
67
79
 
80
+ head '/site/sha/a'
81
+ assert_equal 404, response.status
82
+
68
83
  get '/'
69
84
  assert_equal 404, response.status
70
85
  end
@@ -90,6 +105,12 @@ class AppTest < Minitest::Spec
90
105
  assert_equal 404, response.status
91
106
  end
92
107
 
108
+ it 'returns 200 for HEAD request' do
109
+ head '/'
110
+ assert_equal 200, response.status
111
+ assert_equal '', response.body
112
+ end
113
+
93
114
  it 'returns 404 if removed' do
94
115
  app # ensure to instantiate
95
116
  file.unlink
@@ -99,6 +120,15 @@ class AppTest < Minitest::Spec
99
120
  assert_equal "REVISION_FILE_REMOVED\n", response.body
100
121
  end
101
122
 
123
+ it 'returns 404 for HEAD request if removed' do
124
+ app # ensure to instantiate
125
+ file.unlink
126
+
127
+ head '/'
128
+ assert_equal 404, response.status
129
+ assert_equal '', response.body
130
+ end
131
+
102
132
  it 'returns 404 if not exists' do
103
133
  file.unlink
104
134
  app # instantiate
@@ -108,6 +138,15 @@ class AppTest < Minitest::Spec
108
138
  assert_equal "REVISION_FILE_NOT_FOUND\n", response.body
109
139
  end
110
140
 
141
+ it 'returns 404 for HEAD request if not exists' do
142
+ file.unlink
143
+ app # instantiate
144
+
145
+ head '/'
146
+ assert_equal 404, response.status
147
+ assert_equal '', response.body
148
+ end
149
+
111
150
  it 'returns 404 if created but it was not existed' do
112
151
  file.unlink
113
152
  app # instantiate
@@ -117,5 +156,15 @@ class AppTest < Minitest::Spec
117
156
  assert_equal 404, response.status
118
157
  assert_equal "REVISION_FILE_NOT_FOUND\n", response.body
119
158
  end
159
+
160
+ it 'returns 404 for HEAD request if created but it was not existed' do
161
+ file.unlink
162
+ app # instantiate
163
+ File.write file.to_s, "b\n"
164
+
165
+ head '/'
166
+ assert_equal 404, response.status
167
+ assert_equal '', response.body
168
+ end
120
169
  end
121
170
  end
@@ -14,7 +14,7 @@ class AppTest < Minitest::Spec
14
14
  describe 'middleware' do
15
15
  let(:tempfile) { Tempfile.new('revision_plate-middielware-test') }
16
16
 
17
- let(:nextapp) { -> (env) { [200, {'Content-Type' => 'text/plain'}, ['hi']] } }
17
+ let(:nextapp) { -> (env) { [200, {'content-type' => 'text/plain'}, ['hi']] } }
18
18
  let(:mockapp) do
19
19
  Class.new do
20
20
  def self.instances
@@ -30,8 +30,10 @@ class AppTest < Minitest::Spec
30
30
  attr_reader :file, :options
31
31
 
32
32
  def call(env)
33
- [200, {'Content-Type' => 'text/plain'}, "deadbeef"]
33
+ [200, {'content-type' => 'text/plain'}, "deadbeef"]
34
34
  end
35
+
36
+ const_set(:ACCEPT_METHODS, %w[GET HEAD].freeze)
35
37
  end
36
38
  end
37
39
 
@@ -57,18 +59,22 @@ class AppTest < Minitest::Spec
57
59
 
58
60
  it 'pass-through requests to nextapp' do
59
61
  get '/'
60
- assert_equal response.body, 'hi'
62
+ assert_equal 'hi', response.body
61
63
  post '/'
62
- assert_equal response.body, 'hi'
64
+ assert_equal 'hi', response.body
63
65
  get '/site'
64
- assert_equal response.body, 'hi'
66
+ assert_equal 'hi', response.body
65
67
  post '/site/sha'
66
- assert_equal response.body, 'hi'
68
+ assert_equal 'hi', response.body
67
69
  end
68
70
 
69
71
  it 'pass requests to RevisionPlate::App on specific path' do
70
72
  get '/site/sha'
71
- assert_equal response.body, 'deadbeef'
73
+ assert_equal 'deadbeef', response.body
74
+
75
+ head '/site/sha'
76
+ assert_equal 200, response.status
77
+ assert_equal 'deadbeef', response.body
72
78
  end
73
79
  end
74
80
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: revision_plate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shota Fukumori (sora_h)
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2015-03-21 00:00:00.000000000 Z
10
+ date: 2025-02-27 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
@@ -16,56 +15,56 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: 1.7.8
18
+ version: '2.6'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: 1.7.8
25
+ version: '2.6'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: rake
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '10.0'
32
+ version: '13.0'
34
33
  type: :development
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '10.0'
39
+ version: '13.0'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: minitest
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: 5.5.1
46
+ version: '5.5'
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: 5.5.1
53
+ version: '5.5'
55
54
  - !ruby/object:Gem::Dependency
56
55
  name: rack-test
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: 0.6.3
60
+ version: '2.2'
62
61
  type: :development
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: 0.6.3
67
+ version: '2.2'
69
68
  - !ruby/object:Gem::Dependency
70
69
  name: rack
71
70
  requirement: !ruby/object:Gem::Requirement
@@ -106,7 +105,6 @@ homepage: https://github.com/sorah/revision_plate
106
105
  licenses:
107
106
  - MIT
108
107
  metadata: {}
109
- post_install_message:
110
108
  rdoc_options: []
111
109
  require_paths:
112
110
  - lib
@@ -121,9 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
119
  - !ruby/object:Gem::Version
122
120
  version: '0'
123
121
  requirements: []
124
- rubyforge_project:
125
- rubygems_version: 2.4.5
126
- signing_key:
122
+ rubygems_version: 3.6.2
127
123
  specification_version: 4
128
124
  summary: Rack middleware and application to show deployed application's revision (commit)
129
125
  test_files: