-
Notifications
You must be signed in to change notification settings - Fork 4
/
wait_for_it_spec.rb
70 lines (61 loc) · 2.12 KB
/
wait_for_it_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
require 'spec_helper'
describe WaitForIt do
it 'has a version number' do
expect(WaitForIt::VERSION).not_to be nil
end
it "sends TERM to child on exit" do
options = { wait_for: "booted" }
WaitForIt.new("ruby #{ fixture_path("never_exits.rb") }", options) do |spawn|
spawn.send(:shutdown)
count_before = spawn.count("running")
sleep 1
count_after = spawn.count("running")
expect(count_before).to eq(count_after)
end
end
it "raises an error if a process takes too long to boot" do
expect {
options = { timeout: 1, env: { SLEEP: 10 }, wait_for: "Done" }
WaitForIt.new("ruby #{ fixture_path("sleep.rb") }", options) do |spawn|
# never gets here
end
}.to raise_error(WaitForIt::WaitForItTimeoutError)
end
it "counts" do
options = { env: { SLEEP: 0 }, wait_for: "Done" }
WaitForIt.new("ruby #{ fixture_path("sleep.rb") }", options) do |spawn|
expect(spawn.count("slept for 0")).to eq(1)
expect(spawn.count("foo")).to eq(0)
end
end
it "wait does not raise an error" do
options = { env: { SLEEP: 0 }, wait_for: "Done" }
WaitForIt.new("ruby #{ fixture_path("sleep.rb") }", options) do |spawn|
expect(spawn.wait("foo", 1)).to eq(false)
expect(spawn.wait("Done", 1)).to be_truthy
end
end
it "contains?" do
options = { env: { SLEEP: 0 }, wait_for: "Done" }
WaitForIt.new("ruby #{ fixture_path("sleep.rb") }", options) do |spawn|
expect(spawn.contains?("Started")).to be_truthy
expect(spawn.contains?("foo")).to be_falsey
end
end
describe 'wait!' do
it 'raises if process takes too long too long' do
expect {
options = { env: { SLEEP: 100 }, wait_for: "Started"}
WaitForIt.new("ruby #{ fixture_path("sleep.rb") }", options) do |spawn|
spawn.wait!("Done", 1)
end
}.to raise_error(WaitForIt::WaitForItTimeoutError)
end
it 'does not raise an error' do
options = { env: { SLEEP: 3 }, wait_for: "Started"}
WaitForIt.new("ruby #{ fixture_path("sleep.rb") }", options) do |spawn|
spawn.wait!("Done", 10)
end
end
end
end