forked from postrank-labs/goliath
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrunner_spec.rb
More file actions
129 lines (103 loc) · 3.28 KB
/
Copy pathrunner_spec.rb
File metadata and controls
129 lines (103 loc) · 3.28 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
require 'spec_helper'
require 'goliath/runner'
describe Goliath::Runner do
before(:each) do
@r = Goliath::Runner.new([], nil)
@r.stub!(:store_pid)
@log_mock = mock('logger').as_null_object
@r.stub!(:setup_logger).and_return(@log_mock)
end
describe 'server execution' do
describe 'daemonization' do
it 'daemonizes if specified' do
Process.should_receive(:fork)
@r.daemonize = true
@r.run
end
it "doesn't daemonize if not specified" do
Process.should_not_receive(:fork)
@r.should_receive(:run_server)
@r.run
end
end
describe 'logging' do
before(:each) do
@r = Goliath::Runner.new([], nil)
end
describe 'without setting up file logger' do
before(:each) do
@r.stub!(:setup_file_logger)
end
it 'configures the logger' do
log = @r.send(:setup_logger)
log.should_not be_nil
end
[:debug, :warn, :info].each do |type|
it "responds to #{type} messages" do
log = @r.send(:setup_logger)
log.respond_to?(type).should be_true
end
end
describe 'log level' do
before(:each) do
FileUtils.stub!(:mkdir_p)
end
it 'sets the default log level' do
log = @r.send(:setup_logger)
log.level.should == Log4r::INFO
end
it 'sets debug when verbose' do
@r.verbose = true
log = @r.send(:setup_logger)
log.level.should == Log4r::DEBUG
end
end
describe 'file logger' do
it "doesn't configure by default" do
@r.should_not_receive(:setup_file_logger)
log = @r.send(:setup_logger)
end
it 'configures if -l is provided' do
@r.should_receive(:setup_file_logger)
@r.log_file = 'out.log'
log = @r.send(:setup_logger)
end
end
describe 'stdout logger' do
it "doesn't configure by default" do
@r.should_not_receive(:setup_stdout_logger)
log = @r.send(:setup_logger)
end
it 'configures if -s is provided' do
@r.should_receive(:setup_stdout_logger)
@r.log_stdout = true
log = @r.send(:setup_logger)
end
end
end
it 'creates the log dir if neeed' do
Log4r::FileOutputter.stub!(:new)
log_mock = mock('log').as_null_object
FileUtils.should_receive(:mkdir_p).with('/my/log/dir')
@r.log_file = '/my/log/dir/log.txt'
@r.send(:setup_file_logger, log_mock, nil)
end
end
it 'runs the server' do
server_mock = mock("Server").as_null_object
server_mock.should_receive(:start)
Goliath::Server.should_receive(:new).and_return(server_mock)
@r.stub!(:load_config).and_return({})
@r.send(:run_server)
end
it 'configures the server' do
server_mock = Goliath::Server.new
server_mock.stub!(:start)
@r.app = 'my_app'
Goliath::Server.should_receive(:new).and_return(server_mock)
server_mock.should_receive(:logger=).with(@log_mock)
server_mock.should_receive(:app=).with('my_app')
@r.send(:run_server)
end
end
end