stub_server 0.2.1 → 0.6.0

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
- SHA1:
3
- metadata.gz: 58a7b20389059c4240beb2c6b86528fde3a5ce8a
4
- data.tar.gz: 505257acb6a2c64044826aa221d475126bf2bb66
2
+ SHA256:
3
+ metadata.gz: 05ae6e405bf5a0cba95079404c91d8d6d2c9ce3db5c7b8945152317784ac557e
4
+ data.tar.gz: 63ffb7d7b3ecfd68efb46afc7bc3b057c44330cd7d90efe314c3ba1abd43b1d1
5
5
  SHA512:
6
- metadata.gz: ad16c50a613b9ef98ef7b1f6ab1cbe3a2a5dac5013fe8102e2eece17db68c1fac4fa137c72152ce06d9c29b8b70e8764c8efd584e3f3602118fa3fcb48e4a69b
7
- data.tar.gz: 58a32d391e31c2d89da28a9ab3860f08787dca21fe7bc90691078a78937e5d5c450ac294af0411700d4fa4d103a8d6be51f8f2502d4ffcbcdf2b408fdad1e9d5
6
+ metadata.gz: 740f2b4d866208cb25d9327bd1641709383212532fd826de9821f5c136b5a7f103447780337c51bc93974308c856db9f5e76e3840c05c3d243144510af2679a1
7
+ data.tar.gz: b14b9380693882907c8c56dc5aeb5ad5bbb179c464d6d4fc6315a1d083c4e3ce372b9495d0e69e9f967440f2f73424d40bc4a79f217d1cb28e05b8f0b031aa61
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  class StubServer
3
- VERSION = "0.2.1"
3
+ VERSION = "0.6.0"
4
4
  end
data/lib/stub_server.rb CHANGED
@@ -18,10 +18,12 @@ class StubServer
18
18
  @json = json
19
19
  @webrick = webrick
20
20
  @started = false
21
+ @server = nil
22
+ @thread = nil
21
23
  end
22
24
 
23
25
  def boot
24
- Thread.new do
26
+ @thread = Thread.new do
25
27
  options = {
26
28
  Port: @port,
27
29
  Logger: WEBrick::Log.new("/dev/null"),
@@ -45,7 +47,7 @@ class StubServer
45
47
 
46
48
  options.merge!(@webrick)
47
49
 
48
- Rack::Handler::WEBrick.run(self, options) { |s| @server = s }
50
+ Rack::Handler::WEBrick.run(self, **options) { |s| @server = s }
49
51
  end
50
52
  end
51
53
 
@@ -57,7 +59,7 @@ class StubServer
57
59
  path = env.fetch("PATH_INFO")
58
60
  code, headers, body = @replies[path]
59
61
  unless code
60
- warn "StubServer: Missing reply for path #{path}" # some clients does not show current url when failing
62
+ warn "StubServer #{@port}: Missing reply for path #{path}" # some clients does not show current url when failing
61
63
  raise
62
64
  end
63
65
  body = [body.to_json] if @json
@@ -65,6 +67,16 @@ class StubServer
65
67
  end
66
68
 
67
69
  def shutdown
68
- @server.shutdown if @server
70
+ @server&.shutdown
71
+ @thread.join # need to wait here and cannot simpliy kill or webbrick keeps running
72
+
73
+ # TimeoutHandler keeps running forever which breaks tests that assert no extra threads
74
+ # we should only stop it if it is empty, otherwise we are still waiting for other servers
75
+ # ideally we'd use WEBrick::Utils::TimeoutHandler::TimeoutMutex.synchronize to avoid race conditions,
76
+ # but that is also used in .terminate and would lead to deadlocks ...
77
+ # TODO: open ruby issue for race-condition free terminate_if_empty
78
+ if WEBrick::Utils::TimeoutHandler.instance.instance_variable_get(:@timeout_info).empty?
79
+ WEBrick::Utils::TimeoutHandler.terminate
80
+ end
69
81
  end
70
82
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stub_server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-05 00:00:00.000000000 Z
11
+ date: 2021-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: webrick
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description:
28
42
  email: michael@grosser.it
29
43
  executables: []
@@ -45,15 +59,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
45
59
  requirements:
46
60
  - - ">="
47
61
  - !ruby/object:Gem::Version
48
- version: 2.0.0
62
+ version: 2.5.0
49
63
  required_rubygems_version: !ruby/object:Gem::Requirement
50
64
  requirements:
51
65
  - - ">="
52
66
  - !ruby/object:Gem::Version
53
67
  version: '0'
54
68
  requirements: []
55
- rubyforge_project:
56
- rubygems_version: 2.5.1
69
+ rubygems_version: 3.2.16
57
70
  signing_key:
58
71
  specification_version: 4
59
72
  summary: Boot up a real server to serve testing replies