rspec-httpd 0.0.14 → 0.0.15

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
2
  SHA256:
3
- metadata.gz: c71c6a8e039811020f1c135751a4068adafb8f9e6992833fe2449661060146ce
4
- data.tar.gz: 2875628708bf20325ce4323dde9d253f9955493f2e8af2c65828a2054481d421
3
+ metadata.gz: 39e7f534f32be091cf91b9a86482a7f6ad77edb2f23f900135e5c3b39f10e390
4
+ data.tar.gz: b8c93f5a2f115ed3095bd474bc9a2c63fac4a3324a7c04930b4b0b87b6e9e51e
5
5
  SHA512:
6
- metadata.gz: b262a9cbcb738a6956c32bafee8b2ab234cee9d8cf1fe218c2006b6d8e19b8b22311f2201253d49b875a9ade93b6da1a529e456db522039c4441e93e583bf9d9
7
- data.tar.gz: b834501793639f9c49ff836d7eb1d25f0b170743bfe3c98186f7219fcd0f30705e97e2ffd331aad25fac55dccee6abdd66384a1598479e5d504fa90f85e187b5
6
+ metadata.gz: 724693c35daa22840ff5a3871ac39fbecad5fdb22a38621e8e704b647683f28c953cdffe454a33a3b86434e6f8b2968528067e7b10c1008bac7b67bd537755f5
7
+ data.tar.gz: 28f7cf7303b11c67ebde228ec1a323f4ad88cca6891c6d46881b2fbebaeeed844f5cae2b3cd227dd1f4680e6ac85e8f7cbd36c71e86ff13c4f8dcf114d8665f7
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.14
1
+ 0.0.15
@@ -1,6 +1,34 @@
1
1
  require "net/http"
2
2
  require "json"
3
3
 
4
+ class Net::HTTPResponse
5
+ def headers
6
+ @headers ||= HeadersHash.new(self)
7
+ end
8
+
9
+ class HeadersHash < Hash
10
+ def initialize(response)
11
+ response.each_header do |k, v|
12
+ case self[k]
13
+ when Array then self[k].concat v
14
+ when nil then self[k] = v
15
+ else self[k].concat(v)
16
+ end
17
+ end
18
+ end
19
+
20
+ def [](key)
21
+ super key.downcase
22
+ end
23
+
24
+ private
25
+
26
+ def []=(key, value)
27
+ super key.downcase, value
28
+ end
29
+ end
30
+ end
31
+
4
32
  module RSpec::Httpd
5
33
  class Client
6
34
  # host and port. Set at initialization
@@ -19,11 +47,6 @@ module RSpec::Httpd
19
47
  Integer(response.code)
20
48
  end
21
49
 
22
- # returns the headers of the latest response
23
- def headers
24
- @headers ||= HeadersHash.new(response)
25
- end
26
-
27
50
  # returns the parsed response of the latest request
28
51
  def result
29
52
  @result ||= ResponseParser.parse(response)
@@ -85,28 +108,6 @@ module RSpec::Httpd
85
108
  end
86
109
  end
87
110
 
88
- class HeadersHash < Hash
89
- def initialize(response)
90
- response.each_header do |k, v|
91
- case self[k]
92
- when Array then self[k].concat v
93
- when nil then self[k] = v
94
- else self[k].concat(v)
95
- end
96
- end
97
- end
98
-
99
- def [](key)
100
- super key.downcase
101
- end
102
-
103
- private
104
-
105
- def []=(key, value)
106
- super key.downcase, value
107
- end
108
- end
109
-
110
111
  module ResponseParser
111
112
  def self.parse(response)
112
113
  return nil if response.body.nil?
@@ -22,18 +22,36 @@ module RSpec::Httpd
22
22
 
23
23
  def do_start(host, port, command)
24
24
  logger = RSpec::Httpd.logger
25
+
26
+ if port_open?(host, port)
27
+ logger.error "A process is already running on #{host}:#{port}"
28
+ exit 2
29
+ end
30
+
25
31
  logger.debug "Starting server: #{command}"
26
32
 
27
- pid = spawn(command)
33
+ # start child process in a separate process group. at exit we'll
34
+ # kill the entire process group. This helps if the started process
35
+ # spawns another child again.
36
+ pid = spawn(command, pgroup: true)
37
+ pgid = Process.getpgid(pid)
28
38
 
29
39
  at_exit do
30
40
  begin
31
- logger.debug "Stopping server at pid #{pid}: #{command}"
32
- Process.kill("KILL", pid)
41
+ logger.debug "Terminating server in pgid #{pgid}: #{command}"
42
+ Process.kill("TERM", -pgid)
33
43
  sleep 0.2
34
44
  rescue Errno::ESRCH
35
45
  end
36
46
 
47
+ if port_open?(host, port)
48
+ begin
49
+ logger.debug "Killing server in pgid #{pgid}: #{command}"
50
+ Process.kill("KILL", -pgid)
51
+ rescue Errno::ESRCH, Errno::EPERM
52
+ end
53
+ end
54
+
37
55
  logger.warn "Cannot stop server at pid #{pid}: #{command}" if port_open?(host, port)
38
56
  exit 0
39
57
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-httpd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Enrico Thierbach