le1t0-whenever 0.4.2.003 → 0.6.2.001

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/test_helper")
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
2
 
3
3
  class OutputAtTest < Test::Unit::TestCase
4
4
 
@@ -6,6 +6,7 @@ class OutputAtTest < Test::Unit::TestCase
6
6
  setup do
7
7
  @output = Whenever.cron \
8
8
  <<-file
9
+ set :job_template, nil
9
10
  every "weekday", :at => '5:02am' do
10
11
  command "blahblah"
11
12
  end
@@ -21,6 +22,7 @@ class OutputAtTest < Test::Unit::TestCase
21
22
  setup do
22
23
  @output = Whenever.cron \
23
24
  <<-file
25
+ set :job_template, nil
24
26
  every "weekday", :at => %w(5:02am 3:52pm) do
25
27
  command "blahblah"
26
28
  end
@@ -37,6 +39,7 @@ class OutputAtTest < Test::Unit::TestCase
37
39
  setup do
38
40
  @output = Whenever.cron \
39
41
  <<-file
42
+ set :job_template, nil
40
43
  every "weekday", :at => '5:02am, 3:52pm' do
41
44
  command "blahblah"
42
45
  end
@@ -53,6 +56,7 @@ class OutputAtTest < Test::Unit::TestCase
53
56
  setup do
54
57
  @output = Whenever.cron \
55
58
  <<-file
59
+ set :job_template, nil
56
60
  every "weekday", :at => '5:02am, 3:02pm' do
57
61
  command "blahblah"
58
62
  end
@@ -68,6 +72,7 @@ class OutputAtTest < Test::Unit::TestCase
68
72
  setup do
69
73
  @output = Whenever.cron \
70
74
  <<-file
75
+ set :job_template, nil
71
76
  every "mon,wed,fri", :at => '5:02am, 3:02pm' do
72
77
  command "blahblah"
73
78
  end
@@ -83,6 +88,7 @@ class OutputAtTest < Test::Unit::TestCase
83
88
  setup do
84
89
  @output = Whenever.cron \
85
90
  <<-file
91
+ set :job_template, nil
86
92
  set :path, '/your/path'
87
93
  every "mon,wed,fri", :at => '5:02am, 3:02pm' do
88
94
  runner "blahblah"
@@ -91,7 +97,7 @@ class OutputAtTest < Test::Unit::TestCase
91
97
  end
92
98
 
93
99
  should "output the runner using one entry because the times are aligned" do
94
- assert_match '2 5,15 * * 1,3,5 cd /your/path && script/runner -e production "blahblah"', @output
100
+ assert_match %(2 5,15 * * 1,3,5 cd /your/path && script/runner -e production 'blahblah'), @output
95
101
  end
96
102
  end
97
103
 
@@ -99,6 +105,7 @@ class OutputAtTest < Test::Unit::TestCase
99
105
  setup do
100
106
  @output = Whenever.cron \
101
107
  <<-file
108
+ set :job_template, nil
102
109
  set :path, '/your/path'
103
110
  every "mon,wed,fri", :at => '5:02am, 3:02pm' do
104
111
  rake "blah:blah"
@@ -107,7 +114,7 @@ class OutputAtTest < Test::Unit::TestCase
107
114
  end
108
115
 
109
116
  should "output the rake task using one entry because the times are aligned" do
110
- assert_match '2 5,15 * * 1,3,5 cd /your/path && RAILS_ENV=production /usr/bin/env rake blah:blah', @output
117
+ assert_match '2 5,15 * * 1,3,5 cd /your/path && RAILS_ENV=production rake blah:blah --silent', @output
111
118
  end
112
119
  end
113
120
 
@@ -115,6 +122,7 @@ class OutputAtTest < Test::Unit::TestCase
115
122
  setup do
116
123
  @output = Whenever.cron \
117
124
  <<-file
125
+ set :job_template, nil
118
126
  every [1.month, 1.day], :at => 'january 5:02am, june 17th at 2:22pm, june 3rd at 3:33am' do
119
127
  command "blahblah"
120
128
  end
@@ -138,6 +146,7 @@ class OutputAtTest < Test::Unit::TestCase
138
146
  setup do
139
147
  @output = Whenever.cron \
140
148
  <<-file
149
+ set :job_template, nil
141
150
  every :reboot do
142
151
  command "command_1"
143
152
  command "command_2"
@@ -155,6 +164,7 @@ class OutputAtTest < Test::Unit::TestCase
155
164
  setup do
156
165
  @output = Whenever.cron \
157
166
  <<-file
167
+ set :job_template, nil
158
168
  set :path, '/your/path'
159
169
  every :day do
160
170
  rake "blah:blah"
@@ -167,12 +177,75 @@ class OutputAtTest < Test::Unit::TestCase
167
177
  end
168
178
 
169
179
  should "output all of the commands @daily" do
170
- assert_match '@daily cd /your/path && RAILS_ENV=production /usr/bin/env rake blah:blah', @output
171
- assert_match '@daily cd /your/path && script/runner -e production "runner_1"', @output
180
+ assert_match '@daily cd /your/path && RAILS_ENV=production rake blah:blah --silent', @output
181
+ assert_match %(@daily cd /your/path && script/runner -e production 'runner_1'), @output
172
182
  assert_match '@daily command_1', @output
173
- assert_match '@daily cd /your/path && script/runner -e production "runner_2"', @output
183
+ assert_match %(@daily cd /your/path && script/runner -e production 'runner_2'), @output
174
184
  assert_match '@daily command_2', @output
175
185
  end
176
186
  end
177
187
 
188
+ context "every 5 minutes but but starting at 1" do
189
+ setup do
190
+ @output = Whenever.cron \
191
+ <<-file
192
+ set :job_template, nil
193
+ every 5.minutes, :at => 1 do
194
+ command "blahblah"
195
+ end
196
+ file
197
+ end
198
+
199
+ should "output the command using that time" do
200
+ assert_match '1,6,11,16,21,26,31,36,41,46,51,56 * * * * blahblah', @output
201
+ end
202
+ end
203
+
204
+ context "every 4 minutes but starting at 2" do
205
+ setup do
206
+ @output = Whenever.cron \
207
+ <<-file
208
+ set :job_template, nil
209
+ every 4.minutes, :at => 2 do
210
+ command "blahblah"
211
+ end
212
+ file
213
+ end
214
+
215
+ should "output the command using that time" do
216
+ assert_match '2,6,10,14,18,22,26,30,34,38,42,46,50,54,58 * * * * blahblah', @output
217
+ end
218
+ end
219
+
220
+ context "every 3 minutes but starting at 7" do
221
+ setup do
222
+ @output = Whenever.cron \
223
+ <<-file
224
+ set :job_template, nil
225
+ every 3.minutes, :at => 7 do
226
+ command "blahblah"
227
+ end
228
+ file
229
+ end
230
+
231
+ should "output the command using that time" do
232
+ assert_match '7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58 * * * * blahblah', @output
233
+ end
234
+ end
235
+
236
+ context "every 2 minutes but starting at 27" do
237
+ setup do
238
+ @output = Whenever.cron \
239
+ <<-file
240
+ set :job_template, nil
241
+ every 2.minutes, :at => 27 do
242
+ command "blahblah"
243
+ end
244
+ file
245
+ end
246
+
247
+ should "output the command using that time" do
248
+ assert_match '27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59 * * * * blahblah', @output
249
+ end
250
+ end
178
251
  end
@@ -0,0 +1,164 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+
3
+ class OutputDefaultDefinedJobsTest < Test::Unit::TestCase
4
+
5
+ # command
6
+
7
+ context "A plain command with the job template set to nil" do
8
+ setup do
9
+ @output = Whenever.cron \
10
+ <<-file
11
+ set :job_template, nil
12
+ every 2.hours do
13
+ command "blahblah"
14
+ end
15
+ file
16
+ end
17
+
18
+ should "output the command" do
19
+ assert_match /^.+ .+ .+ .+ blahblah$/, @output
20
+ end
21
+ end
22
+
23
+ context "A plain command with no job template set" do
24
+ setup do
25
+ @output = Whenever.cron \
26
+ <<-file
27
+ every 2.hours do
28
+ command "blahblah"
29
+ end
30
+ file
31
+ end
32
+
33
+ should "output the command with the default job template" do
34
+ assert_match /^.+ .+ .+ .+ \/bin\/bash -l -c 'blahblah'$/, @output
35
+ end
36
+ end
37
+
38
+ context "A plain command that overrides the job_template set" do
39
+ setup do
40
+ @output = Whenever.cron \
41
+ <<-file
42
+ set :job_template, "/bin/bash -l -c ':job'"
43
+ every 2.hours do
44
+ command "blahblah", :job_template => "/bin/sh -l -c ':job'"
45
+ end
46
+ file
47
+ end
48
+
49
+ should "output the command using that job_template" do
50
+ assert_match /^.+ .+ .+ .+ \/bin\/sh -l -c 'blahblah'$/, @output
51
+ assert_no_match /bash/, @output
52
+ end
53
+ end
54
+
55
+ context "A plain command that is conditional on default environent and path" do
56
+ setup do
57
+ Whenever.expects(:path).at_least_once.returns('/what/you/want')
58
+ @output = Whenever.cron \
59
+ <<-file
60
+ set :job_template, nil
61
+ if environment == 'production' && path == '/what/you/want'
62
+ every 2.hours do
63
+ command "blahblah"
64
+ end
65
+ end
66
+ file
67
+ end
68
+
69
+ should "output the command" do
70
+ assert_match /blahblah/, @output
71
+ end
72
+ end
73
+
74
+ # runner
75
+
76
+ context "A runner with path set" do
77
+ setup do
78
+ @output = Whenever.cron \
79
+ <<-file
80
+ set :job_template, nil
81
+ set :path, '/my/path'
82
+ every 2.hours do
83
+ runner 'blahblah'
84
+ end
85
+ file
86
+ end
87
+
88
+ should "output the runner using that path" do
89
+ assert_match two_hours + %( cd /my/path && script/runner -e production 'blahblah'), @output
90
+ end
91
+ end
92
+
93
+ context "A runner that overrides the path set" do
94
+ setup do
95
+ @output = Whenever.cron \
96
+ <<-file
97
+ set :job_template, nil
98
+ set :path, '/my/path'
99
+ every 2.hours do
100
+ runner "blahblah", :path => '/some/other/path'
101
+ end
102
+ file
103
+ end
104
+
105
+ should "output the runner using that path" do
106
+ assert_match two_hours + %( cd /some/other/path && script/runner -e production 'blahblah'), @output
107
+ end
108
+ end
109
+
110
+ context "A runner for a Rails 3 app" do
111
+ setup do
112
+ Whenever.expects(:path).at_least_once.returns('/my/path')
113
+ File.expects(:exists?).with('/my/path/script/rails').returns(true)
114
+ @output = Whenever.cron \
115
+ <<-file
116
+ set :job_template, nil
117
+ every 2.hours do
118
+ runner 'blahblah'
119
+ end
120
+ file
121
+ end
122
+
123
+ should "use the Rails 3 runner job by default" do
124
+ assert_match two_hours + %( cd /my/path && script/rails runner -e production 'blahblah'), @output
125
+ end
126
+ end
127
+
128
+ # rake
129
+
130
+ context "A rake command with path set" do
131
+ setup do
132
+ @output = Whenever.cron \
133
+ <<-file
134
+ set :job_template, nil
135
+ set :path, '/my/path'
136
+ every 2.hours do
137
+ rake "blahblah"
138
+ end
139
+ file
140
+ end
141
+
142
+ should "output the rake command using that path" do
143
+ assert_match two_hours + ' cd /my/path && RAILS_ENV=production rake blahblah --silent', @output
144
+ end
145
+ end
146
+
147
+ context "A rake command that overrides the path set" do
148
+ setup do
149
+ @output = Whenever.cron \
150
+ <<-file
151
+ set :job_template, nil
152
+ set :path, '/my/path'
153
+ every 2.hours do
154
+ rake "blahblah", :path => '/some/other/path'
155
+ end
156
+ file
157
+ end
158
+
159
+ should "output the rake command using that path" do
160
+ assert_match two_hours + ' cd /some/other/path && RAILS_ENV=production rake blahblah --silent', @output
161
+ end
162
+ end
163
+
164
+ end
@@ -0,0 +1,111 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+
3
+ class OutputDefinedJobTest < Test::Unit::TestCase
4
+
5
+ context "A defined job with a :task" do
6
+ setup do
7
+ @output = Whenever.cron \
8
+ <<-file
9
+ set :job_template, nil
10
+ job_type :some_job, "before :task after"
11
+ every 2.hours do
12
+ some_job "during"
13
+ end
14
+ file
15
+ end
16
+
17
+ should "output the defined job with the task" do
18
+ assert_match /^.+ .+ .+ .+ before during after$/, @output
19
+ end
20
+ end
21
+
22
+ context "A defined job with a :task and some options" do
23
+ setup do
24
+ @output = Whenever.cron \
25
+ <<-file
26
+ set :job_template, nil
27
+ job_type :some_job, "before :task after :option1 :option2"
28
+ every 2.hours do
29
+ some_job "during", :option1 => 'happy', :option2 => 'birthday'
30
+ end
31
+ file
32
+ end
33
+
34
+ should "output the defined job with the task and options" do
35
+ assert_match /^.+ .+ .+ .+ before during after happy birthday$/, @output
36
+ end
37
+ end
38
+
39
+ context "A defined job with a :task and an option where the option is set globally" do
40
+ setup do
41
+ @output = Whenever.cron \
42
+ <<-file
43
+ set :job_template, nil
44
+ job_type :some_job, "before :task after :option1"
45
+ set :option1, 'happy'
46
+ every 2.hours do
47
+ some_job "during"
48
+ end
49
+ file
50
+ end
51
+
52
+ should "output the defined job with the task and options" do
53
+ assert_match /^.+ .+ .+ .+ before during after happy$/, @output
54
+ end
55
+ end
56
+
57
+ context "A defined job with a :task and an option where the option is set globally and locally" do
58
+ setup do
59
+ @output = Whenever.cron \
60
+ <<-file
61
+ set :job_template, nil
62
+ job_type :some_job, "before :task after :option1"
63
+ set :option1, 'global'
64
+ every 2.hours do
65
+ some_job "during", :option1 => 'local'
66
+ end
67
+ file
68
+ end
69
+
70
+ should "output the defined job using the local option" do
71
+ assert_match /^.+ .+ .+ .+ before during after local$/, @output
72
+ end
73
+ end
74
+
75
+ context "A defined job with a :task and an option that is not set" do
76
+ setup do
77
+ @output = Whenever.cron \
78
+ <<-file
79
+ set :job_template, nil
80
+ job_type :some_job, "before :task after :option1"
81
+ every 2.hours do
82
+ some_job "during", :option2 => 'happy'
83
+ end
84
+ file
85
+ end
86
+
87
+ should "output the defined job with that option removed" do
88
+ assert_match /^.+ .+ .+ .+ before during after$/, @output
89
+ end
90
+ end
91
+
92
+ context "A defined job that uses a :path where none is explicitly set" do
93
+ setup do
94
+ Whenever.stubs(:path).returns('/my/path')
95
+
96
+ @output = Whenever.cron \
97
+ <<-file
98
+ set :job_template, nil
99
+ job_type :some_job, "cd :path && :task"
100
+ every 2.hours do
101
+ some_job 'blahblah'
102
+ end
103
+ file
104
+ end
105
+
106
+ should "default to using the Whenever.path" do
107
+ assert_match two_hours + %( cd /my/path && blahblah), @output
108
+ end
109
+ end
110
+
111
+ end