patir 0.8.2 → 0.9.0

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.
@@ -1,2 +1,2 @@
1
- #ruby syntax error
1
+ #ruby syntax error
2
2
  {
@@ -1,25 +1,25 @@
1
- $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
- require 'test/unit'
3
- require 'patir/base.rb'
4
-
5
- class TestBase<Test::Unit::TestCase
6
- TEMP_LOG="temp.log"
7
- def teardown
8
- #clean up
9
- File.delete(TEMP_LOG) if File.exist?(TEMP_LOG)
10
- end
11
-
12
- #This is not actually testing anything meaningfull but can be expanded when we learn more about
13
- #the logger
14
- def test_setup_logger
15
- logger=Patir.setup_logger
16
- assert_not_nil(logger)
17
- logger=Patir.setup_logger(nil,:silent)
18
- assert_not_nil(logger)
19
- logger=Patir.setup_logger("temp.log",:silent)
20
- assert_not_nil(logger)
21
- assert(File.exist?(TEMP_LOG), "Log file not created")
22
- logger.close
23
- end
24
-
1
+ $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
+ require "minitest/autorun"
3
+ require 'patir/base.rb'
4
+
5
+ class TestBase<Minitest::Test
6
+ TEMP_LOG="temp.log"
7
+ def teardown
8
+ #clean up
9
+ File.delete(TEMP_LOG) if File.exist?(TEMP_LOG)
10
+ end
11
+
12
+ #This is not actually testing anything meaningfull but can be expanded when we learn more about
13
+ #the logger
14
+ def test_setup_logger
15
+ logger=Patir.setup_logger
16
+ refute_nil(logger)
17
+ logger=Patir.setup_logger(nil,:silent)
18
+ refute_nil(logger)
19
+ logger=Patir.setup_logger("temp.log",:silent)
20
+ refute_nil(logger)
21
+ assert(File.exist?(TEMP_LOG), "Log file not created")
22
+ logger.close
23
+ end
24
+
25
25
  end
@@ -1,335 +1,335 @@
1
- $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
- require 'test/unit'
3
- require 'patir/command.rb'
4
-
5
- class MockCommandObject
6
- include Patir::Command
7
- end
8
-
9
- class MockCommandWarning
10
- include Patir::Command
11
- def run context=nil
12
- @status=:warning
13
- return :warning
14
- end
15
- end
16
-
17
- class MockCommandError
18
- include Patir::Command
19
- def run context=nil
20
- @status=:error
21
- return :error
22
- end
23
- end
24
-
25
- class TestCommand<Test::Unit::TestCase
26
- #tests the default values set by the module
27
- def test_module
28
- obj=MockCommandObject.new
29
- assert_equal("",obj.name)
30
- assert_equal(:not_executed,obj.status)
31
- assert(!obj.run?)
32
- assert_nothing_raised{obj.run}
33
- assert(obj.run?)
34
- assert_equal(:success,obj.status)
35
- assert_equal("",obj.output)
36
- assert_equal("",obj.error)
37
- assert_equal(0,obj.exec_time)
38
- assert_nothing_raised{obj.reset}
39
- assert_equal(:not_executed,obj.status)
40
- end
41
- end
42
-
43
- class TestShellCommand<Test::Unit::TestCase
44
- include Patir
45
- def teardown
46
- Dir.delete("missing/") if File.exist?("missing/")
47
- end
48
- #test the expected behaviour of a succesfull command
49
- def test_echo
50
- cmd=nil
51
- assert_nothing_raised(){cmd=ShellCommand.new(:cmd=>"echo hello")}
52
- assert_not_nil(cmd)
53
- assert(!cmd.run?)
54
- assert(!cmd.success?)
55
- assert_nothing_raised(){cmd.run}
56
- assert(cmd.run?)
57
- assert(cmd.success?)
58
- assert_equal("hello",cmd.output.chomp)
59
- assert_equal("",cmd.error)
60
- assert_equal(:success,cmd.status)
61
- end
62
- #test that error status is reported correctly, by testing a command that fails.
63
- def test_error
64
- cmd=nil
65
- assert_nothing_raised(){cmd=ShellCommand.new(:cmd=>"cd /missing")}
66
- assert(!cmd.run?)
67
- assert(!cmd.success?)
68
- assert_nothing_raised(){cmd.run}
69
- assert(cmd.run?)
70
- assert(!cmd.success?)
71
- assert_equal(:error,cmd.status)
72
- end
73
- #when passed a wroking directory, the command should change into that directory
74
- def test_cwd
75
- cmd=nil
76
- assert_nothing_raised(){cmd=ShellCommand.new(:cmd=>"echo", :working_directory=>"missing/")}
77
- assert_nothing_raised(){cmd.run}
78
- assert(cmd.success?)
79
- end
80
-
81
- #when the working directory is missing, it should be created when the command is run
82
- def test_missing_cwd
83
- cmd=nil
84
- assert_nothing_raised(){cmd=ShellCommand.new(:cmd=>"echo hello", :working_directory=>"missing/")}
85
- assert_not_nil(cmd)
86
- assert_equal(:success,cmd.run)
87
- assert(cmd.success?)
88
- assert(File.exist?("missing/"))
89
- end
90
- #an exception should be thrown when :cmd is nil
91
- def test_missing_cmd
92
- assert_raise(ParameterException){ShellCommand.new(:working_directory=>"missing/")}
93
- end
94
- #test with another program
95
- def test_ls
96
- cmd=ShellCommand.new(:cmd=>"ls")
97
- assert(!cmd.run?)
98
- assert(!cmd.success?)
99
- assert_nothing_raised(){cmd.run}
100
- assert(cmd.run?)
101
- if cmd.success?
102
- assert_not_equal("", cmd.output)
103
- else
104
- assert_not_equal("", cmd.error)
105
- end
106
- end
107
- def test_timeout
108
- cmd=ShellCommand.new(:cmd=>"ruby -e 't=0;while t<10 do p t;t+=1;sleep 1 end '",:timeout=>1)
109
- assert_nothing_raised() { cmd.run }
110
- assert(cmd.run?, "Should be marked as run")
111
- assert(!cmd.success?,"Should not have been successful")
112
- assert(!cmd.error.empty?, "There should be an error message")
113
- #test also for an exit within the timeout
114
- cmd=ShellCommand.new(:cmd=>"ruby -e 't=0;while t<1 do p t;t+=1;sleep 1 end '",:timeout=>4)
115
- assert_nothing_raised() { cmd.run }
116
- assert(cmd.run?, "Should be marked as run")
117
- assert(cmd.success?,"Should have been successful")
118
- assert(cmd.error.empty?, "There should be no error messages")
119
- end
120
- def test_missing_executable
121
- cmd=ShellCommand.new(:cmd=>"bla")
122
- assert(!cmd.run?)
123
- assert(!cmd.success?)
124
- assert_nothing_raised(){cmd.run}
125
- assert(!cmd.success?, "Should fail if the executable is missing")
126
-
127
- cmd=ShellCommand.new(:cmd=>'"With spaces" and params')
128
- assert(!cmd.run?)
129
- assert(!cmd.success?)
130
- assert_nothing_raised(){cmd.run}
131
- assert(!cmd.success?, "Should fail if the executable is missing")
132
- end
133
- end
134
-
135
- class TestCommandSequence<Test::Unit::TestCase
136
- include Patir
137
- def setup
138
- @echo=ShellCommand.new(:cmd=>"echo hello")
139
- @void=MockCommandObject.new
140
- @error=MockCommandError.new
141
- @warning=MockCommandWarning.new
142
- end
143
-
144
- def test_normal
145
- seq=CommandSequence.new("test")
146
- assert(seq.steps.empty?)
147
- assert_nothing_raised{seq.run}
148
- assert(!seq.state.success?)
149
- assert_equal(:warning,seq.state.status)
150
- assert_nothing_raised{seq.add_step(@echo)}
151
- assert_nothing_raised{seq.add_step(@void)}
152
- assert_nothing_raised{seq.run}
153
- assert(seq.state.success?)
154
- end
155
-
156
- def test_flunk_on_error
157
- seq=CommandSequence.new("test")
158
- assert(seq.steps.empty?)
159
- check_step=nil
160
- assert_nothing_raised{check_step=seq.add_step(@echo,:flunk_on_error)}
161
- assert_equal(:flunk_on_error,check_step.strategy)
162
- assert_nothing_raised{seq.add_step(@error,:flunk_on_error)}
163
- assert_nothing_raised{seq.add_step(@void,:flunk_on_error)}
164
- assert(:not_executed==seq.state.step_state(0)[:status])
165
- assert(:not_executed==seq.state.step_state(1)[:status])
166
- assert(:not_executed==seq.state.step_state(2)[:status])
167
- assert_nothing_raised{seq.run}
168
- assert(!seq.state.success?)
169
- #all three steps should have been run
170
- assert(:not_executed!=seq.state.step_state(0)[:status])
171
- assert(:not_executed!=seq.state.step_state(1)[:status])
172
- assert(:not_executed!=seq.state.step_state(2)[:status])
173
- end
174
-
175
- def test_fail_on_error
176
- seq=CommandSequence.new("test")
177
- assert(seq.steps.empty?)
178
- assert_nothing_raised{seq.add_step(@echo)}
179
- check_step=nil
180
- assert_nothing_raised{check_step=seq.add_step(@error,:fail_on_error)}
181
- assert_equal(:fail_on_error,check_step.strategy)
182
- assert_nothing_raised{seq.add_step(@void)}
183
- assert(:not_executed==seq.state.step_state(0)[:status])
184
- assert(:not_executed==seq.state.step_state(1)[:status])
185
- assert(:not_executed==seq.state.step_state(2)[:status])
186
- assert_nothing_raised{seq.run}
187
- assert(!seq.state.success?)
188
- #only two steps should have been run
189
- assert(:not_executed!=seq.state.step_state(0)[:status])
190
- assert(:not_executed!=seq.state.step_state(1)[:status])
191
- assert(:not_executed==seq.state.step_state(2)[:status])
192
- end
193
-
194
- def test_flunk_on_warning
195
- seq=CommandSequence.new("test")
196
- assert(seq.steps.empty?)
197
- assert_nothing_raised{seq.add_step(@echo)}
198
- check_step=nil
199
- assert_nothing_raised{check_step=seq.add_step(@error,:flunk_on_warning)}
200
- assert_equal(:flunk_on_warning,check_step.strategy)
201
- assert_nothing_raised{seq.add_step(@void)}
202
- assert(:not_executed==seq.state.step_state(0)[:status])
203
- assert(:not_executed==seq.state.step_state(1)[:status])
204
- assert(:not_executed==seq.state.step_state(2)[:status])
205
- assert_nothing_raised{seq.run}
206
- assert(!seq.state.success?)
207
- #all three steps should have been run
208
- assert(:not_executed!=seq.state.step_state(0)[:status])
209
- assert(:not_executed!=seq.state.step_state(1)[:status])
210
- assert(:not_executed!=seq.state.step_state(2)[:status])
211
- end
212
-
213
- def test_fail_on_warning
214
- seq=CommandSequence.new("test")
215
- assert(seq.steps.empty?)
216
- assert_nothing_raised{seq.add_step(@echo)}
217
- check_step=nil
218
- assert_nothing_raised{check_step=seq.add_step(@warning,:fail_on_warning)}
219
- assert_equal(:fail_on_warning,check_step.strategy)
220
- assert_nothing_raised{seq.add_step(@void)}
221
- assert(:not_executed==seq.state.step_state(0)[:status])
222
- assert(:not_executed==seq.state.step_state(1)[:status])
223
- assert(:not_executed==seq.state.step_state(2)[:status])
224
- assert_nothing_raised{seq.run}
225
- assert(!seq.state.success?)
226
- #only two steps should have been run
227
- assert(:not_executed!=seq.state.step_state(0)[:status])
228
- assert(:not_executed!=seq.state.step_state(1)[:status])
229
- assert(:not_executed==seq.state.step_state(2)[:status])
230
- end
231
- end
232
-
233
- class TestRubyCommand<Test::Unit::TestCase
234
- include Patir
235
- def test_normal_ruby
236
- cmd=RubyCommand.new("test"){sleep 1}
237
- assert_nothing_raised() { cmd.run}
238
- assert(cmd.success?, "Not successful.")
239
- assert_equal(:success, cmd.status)
240
- end
241
- def test_error_ruby
242
- cmd=RubyCommand.new("test"){raise "Error"}
243
- assert_nothing_raised() { cmd.run}
244
- assert(!cmd.success?, "Successful?!")
245
- assert_equal("\nError", cmd.error)
246
- assert_equal(:error, cmd.status)
247
- end
248
- def test_context
249
- context="complex"
250
- cmd=RubyCommand.new("test"){|c| c.output=c.context}
251
- assert_nothing_raised() { cmd.run(context)}
252
- assert(cmd.success?, "Not successful.")
253
- assert_equal(context, cmd.output)
254
- assert_nothing_raised() { cmd.run("other")}
255
- assert_equal("other", cmd.output)
256
- assert_equal(:success, cmd.status)
257
- end
258
- end
259
-
260
- class TestCommandSequenceStatus<Test::Unit::TestCase
261
- def test_new
262
- st=Patir::CommandSequenceStatus.new("sequence")
263
- assert(!st.running?)
264
- assert(!st.success?)
265
- assert_equal(:not_executed, st.status)
266
- assert_nil(st.step_state(3))
267
- end
268
-
269
- def test_step_equal
270
- st=Patir::CommandSequenceStatus.new("sequence")
271
- step1=MockCommandObject.new
272
- step2=MockCommandWarning.new
273
- step3=MockCommandError.new
274
- step1.run
275
- step1.number=1
276
- step2.run
277
- step2.number=2
278
- step3.run
279
- step3.number=3
280
- st.step=step1
281
- assert_equal(:success, st.status)
282
- assert_equal(step1.status, st.step_state(1)[:status])
283
- st.step=step2
284
- assert_equal(:warning, st.status)
285
- st.step=step3
286
- assert_equal(:error, st.status)
287
- step2.number=1
288
- st.step=step2
289
- assert_equal(step2.status, st.step_state(1)[:status])
290
- assert_equal(:error, st.status)
291
- st.step=step1
292
- assert_equal(:error, st.status)
293
- assert_nothing_raised() { puts st.summary }
294
- end
295
-
296
- def test_completed?
297
- st=Patir::CommandSequenceStatus.new("sequence")
298
- step1=MockCommandObject.new
299
- step1.number=1
300
- step2=MockCommandWarning.new
301
- step2.number=2
302
- step3=MockCommandError.new
303
- step3.number=3
304
- step4=MockCommandObject.new
305
- step4.number=4
306
- st.step=step1
307
- st.step=step2
308
- st.step=step3
309
- st.step=step4
310
- assert(!st.completed?, "should not be complete.")
311
- step1.run
312
- st.step=step1
313
- assert(!st.completed?, "should not be complete.")
314
- step2.run
315
- st.step=step2
316
- assert(!st.completed?, "should not be complete.")
317
- step2.strategy=:fail_on_warning
318
- st.step=step2
319
- assert(st.completed?, "should be complete.")
320
- step2.strategy=nil
321
- st.step=step2
322
- assert(!st.completed?, "should not be complete.")
323
- step3.run
324
- step3.strategy=:fail_on_error
325
- st.step=step3
326
- assert(st.completed?, "should be complete.")
327
- step3.strategy=nil
328
- st.step=step3
329
- assert(!st.completed?, "should not be complete.")
330
- step4.run
331
- st.step=step4
332
- assert(st.completed?, "should be complete.")
333
- assert_nothing_raised() { puts st.summary }
334
- end
1
+ $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
+ require "minitest/autorun"
3
+ require 'patir/command.rb'
4
+
5
+ class MockCommandObject
6
+ include Patir::Command
7
+ end
8
+
9
+ class MockCommandWarning
10
+ include Patir::Command
11
+ def run context=nil
12
+ @status=:warning
13
+ return :warning
14
+ end
15
+ end
16
+
17
+ class MockCommandError
18
+ include Patir::Command
19
+ def run context=nil
20
+ @status=:error
21
+ return :error
22
+ end
23
+ end
24
+
25
+ class TestCommand<Minitest::Test
26
+ #tests the default values set by the module
27
+ def test_module
28
+ obj=MockCommandObject.new
29
+ assert_equal("",obj.name)
30
+ assert_equal(:not_executed,obj.status)
31
+ assert(!obj.run?)
32
+ assert(obj.run)
33
+ assert(obj.run?)
34
+ assert_equal(:success,obj.status)
35
+ assert_equal("",obj.output)
36
+ assert_equal("",obj.error)
37
+ assert_equal(0,obj.exec_time)
38
+ assert(obj.reset)
39
+ assert_equal(:not_executed,obj.status)
40
+ end
41
+ end
42
+
43
+ class TestShellCommand<Minitest::Test
44
+ include Patir
45
+ def teardown
46
+ Dir.delete("missing/") if File.exist?("missing/")
47
+ end
48
+ #test the expected behaviour of a succesfull command
49
+ def test_echo
50
+ cmd=nil
51
+ assert(cmd=ShellCommand.new(:cmd=>"echo hello"))
52
+ assert_instance_of(ShellCommand,cmd)
53
+ assert(!cmd.run?)
54
+ assert(!cmd.success?)
55
+ assert(cmd.run)
56
+ assert(cmd.run?)
57
+ assert(cmd.success?)
58
+ assert_equal("hello",cmd.output.chomp)
59
+ assert_equal("",cmd.error)
60
+ assert_equal(:success,cmd.status)
61
+ end
62
+ #test that error status is reported correctly, by testing a command that fails.
63
+ def test_error
64
+ cmd=nil
65
+ assert(cmd=ShellCommand.new(:cmd=>"cd /missing"))
66
+ assert(!cmd.run?)
67
+ assert(!cmd.success?)
68
+ assert(cmd.run)
69
+ assert(cmd.run?)
70
+ assert(!cmd.success?)
71
+ assert_equal(:error,cmd.status)
72
+ end
73
+ #when passed a wroking directory, the command should change into that directory
74
+ def test_cwd
75
+ cmd=nil
76
+ assert(cmd=ShellCommand.new(:cmd=>"echo", :working_directory=>"missing/"))
77
+ assert(cmd.run)
78
+ assert(cmd.success?)
79
+ end
80
+
81
+ #when the working directory is missing, it should be created when the command is run
82
+ def test_missing_cwd
83
+ cmd=nil
84
+ assert(cmd=ShellCommand.new(:cmd=>"echo hello", :working_directory=>"missing/"))
85
+ assert_instance_of(ShellCommand,cmd)
86
+ assert_equal(:success,cmd.run)
87
+ assert(cmd.success?)
88
+ assert(File.exist?("missing/"))
89
+ end
90
+ #an exception should be thrown when :cmd is nil
91
+ def test_missing_cmd
92
+ assert_raises(ParameterException){ShellCommand.new(:working_directory=>"missing/")}
93
+ end
94
+ #test with another program
95
+ def test_ls
96
+ cmd=ShellCommand.new(:cmd=>"ls")
97
+ assert(!cmd.run?)
98
+ assert(!cmd.success?)
99
+ assert(cmd.run)
100
+ assert(cmd.run?)
101
+ if cmd.success?
102
+ refute_equal("", cmd.output)
103
+ else
104
+ refute_equal("", cmd.error)
105
+ end
106
+ end
107
+ def test_timeout
108
+ cmd=ShellCommand.new(:cmd=>"ruby -e 't=0;while t<10 do p t;t+=1;sleep 1 end '",:timeout=>1)
109
+ assert(cmd.run)
110
+ assert(cmd.run?, "Should be marked as run")
111
+ assert(!cmd.success?,"Should not have been successful")
112
+ assert(!cmd.error.empty?, "There should be an error message")
113
+ #test also for an exit within the timeout
114
+ cmd=ShellCommand.new(:cmd=>"ruby -e 't=0;while t<1 do p t;t+=1;sleep 1 end '",:timeout=>4)
115
+ assert(cmd.run)
116
+ assert(cmd.run?, "Should be marked as run")
117
+ assert(cmd.success?,"Should have been successful")
118
+ assert(cmd.error.empty?, "There should be no error messages")
119
+ end
120
+ def test_missing_executable
121
+ cmd=ShellCommand.new(:cmd=>"bla")
122
+ assert(!cmd.run?)
123
+ assert(!cmd.success?)
124
+ assert(cmd.run)
125
+ assert(!cmd.success?, "Should fail if the executable is missing")
126
+
127
+ cmd=ShellCommand.new(:cmd=>'"With spaces" and params')
128
+ assert(!cmd.run?)
129
+ assert(!cmd.success?)
130
+ assert(cmd.run)
131
+ assert(!cmd.success?, "Should fail if the executable is missing")
132
+ end
133
+ end
134
+
135
+ class TestCommandSequence<Minitest::Test
136
+ include Patir
137
+ def setup
138
+ @echo=ShellCommand.new(:cmd=>"echo hello")
139
+ @void=MockCommandObject.new
140
+ @error=MockCommandError.new
141
+ @warning=MockCommandWarning.new
142
+ end
143
+
144
+ def test_normal
145
+ seq=CommandSequence.new("test")
146
+ assert(seq.steps.empty?)
147
+ refute_nil(seq.run)
148
+ assert(!seq.state.success?)
149
+ assert_equal(:warning,seq.state.status)
150
+ assert(seq.add_step(@echo))
151
+ assert(seq.add_step(@void))
152
+ refute_nil(seq.run)
153
+ assert(seq.state.success?)
154
+ end
155
+
156
+ def test_flunk_on_error
157
+ seq=CommandSequence.new("test")
158
+ assert(seq.steps.empty?)
159
+ check_step=nil
160
+ assert(check_step=seq.add_step(@echo,:flunk_on_error))
161
+ assert_equal(:flunk_on_error,check_step.strategy)
162
+ assert(seq.add_step(@error,:flunk_on_error))
163
+ assert(seq.add_step(@void,:flunk_on_error))
164
+ assert(:not_executed==seq.state.step_state(0)[:status])
165
+ assert(:not_executed==seq.state.step_state(1)[:status])
166
+ assert(:not_executed==seq.state.step_state(2)[:status])
167
+ refute_nil(seq.run)
168
+ assert(!seq.state.success?)
169
+ #all three steps should have been run
170
+ assert(:not_executed!=seq.state.step_state(0)[:status])
171
+ assert(:not_executed!=seq.state.step_state(1)[:status])
172
+ assert(:not_executed!=seq.state.step_state(2)[:status])
173
+ end
174
+
175
+ def test_fail_on_error
176
+ seq=CommandSequence.new("test")
177
+ assert(seq.steps.empty?)
178
+ assert(seq.add_step(@echo))
179
+ check_step=nil
180
+ assert(check_step=seq.add_step(@error,:fail_on_error))
181
+ assert_equal(:fail_on_error,check_step.strategy)
182
+ assert(seq.add_step(@void))
183
+ assert(:not_executed==seq.state.step_state(0)[:status])
184
+ assert(:not_executed==seq.state.step_state(1)[:status])
185
+ assert(:not_executed==seq.state.step_state(2)[:status])
186
+ refute_nil(seq.run)
187
+ assert(!seq.state.success?)
188
+ #only two steps should have been run
189
+ assert(:not_executed!=seq.state.step_state(0)[:status])
190
+ assert(:not_executed!=seq.state.step_state(1)[:status])
191
+ assert(:not_executed==seq.state.step_state(2)[:status])
192
+ end
193
+
194
+ def test_flunk_on_warning
195
+ seq=CommandSequence.new("test")
196
+ assert(seq.steps.empty?)
197
+ assert(seq.add_step(@echo))
198
+ check_step=nil
199
+ assert(check_step=seq.add_step(@error,:flunk_on_warning))
200
+ assert_equal(:flunk_on_warning,check_step.strategy)
201
+ assert(seq.add_step(@void))
202
+ assert(:not_executed==seq.state.step_state(0)[:status])
203
+ assert(:not_executed==seq.state.step_state(1)[:status])
204
+ assert(:not_executed==seq.state.step_state(2)[:status])
205
+ refute_nil(seq.run)
206
+ assert(!seq.state.success?)
207
+ #all three steps should have been run
208
+ assert(:not_executed!=seq.state.step_state(0)[:status])
209
+ assert(:not_executed!=seq.state.step_state(1)[:status])
210
+ assert(:not_executed!=seq.state.step_state(2)[:status])
211
+ end
212
+
213
+ def test_fail_on_warning
214
+ seq=CommandSequence.new("test")
215
+ assert(seq.steps.empty?)
216
+ assert(seq.add_step(@echo))
217
+ check_step=nil
218
+ assert(check_step=seq.add_step(@warning,:fail_on_warning))
219
+ assert_equal(:fail_on_warning,check_step.strategy)
220
+ assert(seq.add_step(@void))
221
+ assert(:not_executed==seq.state.step_state(0)[:status])
222
+ assert(:not_executed==seq.state.step_state(1)[:status])
223
+ assert(:not_executed==seq.state.step_state(2)[:status])
224
+ refute_nil(seq.run)
225
+ assert(!seq.state.success?)
226
+ #only two steps should have been run
227
+ assert(:not_executed!=seq.state.step_state(0)[:status])
228
+ assert(:not_executed!=seq.state.step_state(1)[:status])
229
+ assert(:not_executed==seq.state.step_state(2)[:status])
230
+ end
231
+ end
232
+
233
+ class TestRubyCommand<Minitest::Test
234
+ include Patir
235
+ def test_normal_ruby
236
+ cmd=RubyCommand.new("test"){sleep 1}
237
+ assert(cmd.run)
238
+ assert(cmd.success?, "Not successful.")
239
+ assert_equal(:success, cmd.status)
240
+ end
241
+ def test_error_ruby
242
+ cmd=RubyCommand.new("test"){raise "Error"}
243
+ assert(cmd.run)
244
+ assert(!cmd.success?, "Successful?!")
245
+ assert_equal("\nError", cmd.error)
246
+ assert_equal(:error, cmd.status)
247
+ end
248
+ def test_context
249
+ context="complex"
250
+ cmd=RubyCommand.new("test"){|c| c.output=c.context}
251
+ assert(cmd.run(context))
252
+ assert(cmd.success?, "Not successful.")
253
+ assert_equal(context, cmd.output)
254
+ assert(cmd.run("other"))
255
+ assert_equal("other", cmd.output)
256
+ assert_equal(:success, cmd.status)
257
+ end
258
+ end
259
+
260
+ class TestCommandSequenceStatus<Minitest::Test
261
+ def test_new
262
+ st=Patir::CommandSequenceStatus.new("sequence")
263
+ assert(!st.running?)
264
+ assert(!st.success?)
265
+ assert_equal(:not_executed, st.status)
266
+ assert_nil(st.step_state(3))
267
+ end
268
+
269
+ def test_step_equal
270
+ st=Patir::CommandSequenceStatus.new("sequence")
271
+ step1=MockCommandObject.new
272
+ step2=MockCommandWarning.new
273
+ step3=MockCommandError.new
274
+ step1.run
275
+ step1.number=1
276
+ step2.run
277
+ step2.number=2
278
+ step3.run
279
+ step3.number=3
280
+ st.step=step1
281
+ assert_equal(:success, st.status)
282
+ assert_equal(step1.status, st.step_state(1)[:status])
283
+ st.step=step2
284
+ assert_equal(:warning, st.status)
285
+ st.step=step3
286
+ assert_equal(:error, st.status)
287
+ step2.number=1
288
+ st.step=step2
289
+ assert_equal(step2.status, st.step_state(1)[:status])
290
+ assert_equal(:error, st.status)
291
+ st.step=step1
292
+ assert_equal(:error, st.status)
293
+ refute_nil(st.summary)
294
+ end
295
+
296
+ def test_completed?
297
+ st=Patir::CommandSequenceStatus.new("sequence")
298
+ step1=MockCommandObject.new
299
+ step1.number=1
300
+ step2=MockCommandWarning.new
301
+ step2.number=2
302
+ step3=MockCommandError.new
303
+ step3.number=3
304
+ step4=MockCommandObject.new
305
+ step4.number=4
306
+ st.step=step1
307
+ st.step=step2
308
+ st.step=step3
309
+ st.step=step4
310
+ assert(!st.completed?, "should not be complete.")
311
+ step1.run
312
+ st.step=step1
313
+ assert(!st.completed?, "should not be complete.")
314
+ step2.run
315
+ st.step=step2
316
+ assert(!st.completed?, "should not be complete.")
317
+ step2.strategy=:fail_on_warning
318
+ st.step=step2
319
+ assert(st.completed?, "should be complete.")
320
+ step2.strategy=nil
321
+ st.step=step2
322
+ assert(!st.completed?, "should not be complete.")
323
+ step3.run
324
+ step3.strategy=:fail_on_error
325
+ st.step=step3
326
+ assert(st.completed?, "should be complete.")
327
+ step3.strategy=nil
328
+ st.step=step3
329
+ assert(!st.completed?, "should not be complete.")
330
+ step4.run
331
+ st.step=step4
332
+ assert(st.completed?, "should be complete.")
333
+ refute_nil(st.summary)
334
+ end
335
335
  end