dia 2.0.0 → 2.0.1

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,40 +0,0 @@
1
- suite('Dia::ExceptionStruct') do
2
-
3
- setup do
4
- @sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
5
- raise(RuntimeError, 'Example')
6
- end
7
- @sandbox.rescue_exception = true
8
- end
9
-
10
- suite('#klass') do
11
- exercise('@rescue is set to true. A RuntimeError is raised in a sandbox. ') do
12
- @sandbox.run
13
- end
14
-
15
- verify('#klass returns RuntimeError as a String') do
16
- @sandbox.exception.klass == 'RuntimeError'
17
- end
18
- end
19
-
20
- suite('#message') do
21
- exercise('@rescue is set to true. A RuntimeError is raised in a sandbox. ') do
22
- @sandbox.run
23
- end
24
-
25
- verify("#message returns 'Example' as a String") do
26
- @sandbox.exception.message == 'Example'
27
- end
28
- end
29
-
30
- suite('#backtrace') do
31
- exercise('@rescue is set to true. A RuntimeError is raised in a sandbox. ') do
32
- @sandbox.run
33
- end
34
-
35
- verify('#backtrace returns a string') do
36
- @sandbox.exception.backtrace.class == String
37
- end
38
- end
39
-
40
- end
@@ -1,561 +0,0 @@
1
- suite('Dia::RubyBlock') do
2
-
3
- suite('misc') do
4
-
5
- exercise("An invalid profile is passed to Dia::RubyBlock.new, and #run is called.") do
6
- sandbox = Dia::RubyBlock.new('invalid_profile') { }
7
- sandbox.rescue_exception = true
8
- sandbox.run
9
- @result = sandbox.exception.klass
10
- end
11
-
12
- verify('Dia::RubyBlock#exception returns an instance of Dia::Exceptions::SandboxException') do
13
- @result == "Dia::Exceptions::SandboxException"
14
- end
15
-
16
- end
17
-
18
- suite('#initialize') do
19
-
20
- setup do
21
- @result = nil
22
- end
23
-
24
- exercise('No block is passed to the constructor. ') do
25
- begin
26
- Dia::RubyBlock.new(Dia::Profiles::NO_OS_SERVICES)
27
- rescue ArgumentError => e
28
- @result = true
29
- end
30
- end
31
-
32
- verify('ArgumentError is raised.') do
33
- @result
34
- end
35
-
36
- end
37
-
38
- suite('#pid') do
39
-
40
- exercise('#run is called, then #pid is called. ') do
41
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_OS_SERVICES) { }
42
- sandbox.run
43
- @result = sandbox.pid
44
- end
45
-
46
- verify('#pid returns a Fixnum object') do
47
- @result.class == Fixnum
48
- end
49
-
50
- end
51
-
52
- suite('#stderr') do
53
-
54
- exercise('@rescue set to true, @redirect_stderr set to true, #run called, ' \
55
- '$stderr written to. ') do
56
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
57
- $stderr.print "Hello, world $stderr!"
58
- end
59
- sandbox.rescue_exception = true
60
- sandbox.redirect_stderr = true
61
- sandbox.run
62
- @result = sandbox.stderr
63
- end
64
-
65
- verify('#stderr returns the contents of $stderr.') do
66
- @result == 'Hello, world $stderr!'
67
- end
68
-
69
- exercise('@rescue set to true, @redirect_stderr set to true, #run called, ' \
70
- 'STDERR written to. ') do
71
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
72
- STDERR.print "Hello, world STDERR!"
73
- end
74
- sandbox.rescue_exception = true
75
- sandbox.redirect_stderr = true
76
- sandbox.run
77
- @result = sandbox.stderr
78
- end
79
-
80
- verify('#stderr returns the contents of STDERR.') do
81
- @result == 'Hello, world STDERR!'
82
- end
83
-
84
- exercise('@rescue set to false, @redirect_stderr set to true, #run called, ' \
85
- '$stderr written to. ') do
86
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
87
- $stderr.print "Hello, world $stderr!"
88
- end
89
- sandbox.redirect_stderr = true
90
- sandbox.run
91
- @result = sandbox.stderr
92
- end
93
-
94
- verify('#stderr returns the contents of $stderr.') do
95
- @result == 'Hello, world $stderr!'
96
- end
97
-
98
- exercise('@rescue set to false, @redirect_stderr set to true, #run called, ' \
99
- 'STDOUT written to. ') do
100
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
101
- STDERR.print "Hello, world STDERR!"
102
- end
103
- sandbox.redirect_stderr = true
104
- sandbox.run
105
- @result = sandbox.stderr
106
- end
107
-
108
- verify('#stderr returns the contents of STDERR.') do
109
- @result == 'Hello, world STDERR!'
110
- end
111
-
112
- exercise('@redirect_stderr set to false, #run called. ') do
113
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
114
- $stderr.print ""
115
- STDERR.print ""
116
- end
117
- sandbox.run
118
- @result = sandbox.stderr
119
- end
120
-
121
- verify('#stderr returns nil') do
122
- @result == nil
123
- end
124
-
125
- end
126
-
127
- suite('#stdout') do
128
-
129
- setup do
130
- @result = nil
131
- end
132
-
133
- exercise('@rescue set to true, @redirect_stdout set to true, #run called, ' \
134
- '$stdout written to. ') do
135
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
136
- $stdout.print "Hello, world!"
137
- end
138
- sandbox.rescue_exception = true
139
- sandbox.redirect_stdout = true
140
- sandbox.run
141
- @result = sandbox.stdout
142
- end
143
-
144
- verify('#stdout returns the contents of $stdout.') do
145
- @result == 'Hello, world!'
146
- end
147
-
148
- exercise('@rescue set to true, @redirect_stdout set to true, #run called, ' \
149
- 'STDOUT written to.') do
150
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
151
- STDOUT.print "Goodbye, world!"
152
- end
153
- sandbox.rescue_exception = true
154
- sandbox.redirect_stdout = true
155
- sandbox.run
156
- @result = sandbox.stdout
157
- end
158
-
159
- verify('#stdout returns the contents of stdout of STDOUT') do
160
- @result == 'Goodbye, world!'
161
- end
162
-
163
- exercise('@rescue set to false, @redirect_stdout set to true, #run called, ' \
164
- '$stdout written to. ') do
165
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
166
- $stdout.print "Hello, world!"
167
- end
168
- sandbox.redirect_stdout = true
169
- sandbox.run
170
- @result = sandbox.stdout
171
- end
172
-
173
- verify('#stdout returns the contents of $stdout') do
174
- @result == 'Hello, world!'
175
- end
176
-
177
- exercise('@rescue set to false, @redirect_stdout set to true, #run called, ' \
178
- 'STDOUT written to. ') do
179
-
180
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
181
- STDOUT.print "Goodbye, world!"
182
- end
183
- sandbox.redirect_stdout = true
184
- sandbox.run
185
- @result = sandbox.stdout
186
- end
187
-
188
- verify('#stdout returns the contents of STDOUT') do
189
- @result == 'Goodbye, world!'
190
- end
191
-
192
- exercise('@redirect_stdout set to false, #run called. ') do
193
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
194
- $stdout.print ""
195
- STDOUT.print ""
196
- end
197
- sandbox.run
198
- @result = sandbox.stdout
199
- end
200
-
201
- verify('#stdout returns nil') do
202
- @result == nil
203
- end
204
-
205
- end
206
-
207
- suite('#rescue_exception?') do
208
-
209
- setup do
210
- @result = nil
211
- @sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_OS_SERVICES) { }
212
- end
213
-
214
- exercise('@rescue is set to false. ') do
215
- @result = @sandbox.rescue_exception?
216
- end
217
-
218
- verify('#rescue_exception? returns false') do
219
- @result == false
220
- end
221
-
222
- exercise('@rescue is set to true. ') do
223
- @sandbox.rescue_exception = true
224
- @result = @sandbox.rescue_exception?
225
- end
226
-
227
- verify('#rescue_exception? returns true') do
228
- @result == true
229
- end
230
-
231
- end
232
-
233
- suite('#exception', :tags => [ :exception ] ) do
234
-
235
- setup do
236
- @result = nil
237
- @sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_OS_SERVICES) do
238
- raise
239
- end
240
- end
241
-
242
- exercise('@rescue is set to false, #run is called, no exception is raised. ') do
243
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_OS_SERVICES) do
244
- begin
245
- raise
246
- rescue => e
247
- end
248
- end
249
-
250
- @result = sandbox.exception
251
- end
252
-
253
- verify('#exception returns nil to the parent process.') do
254
- @result == nil
255
- end
256
-
257
- exercise('@rescue is set to true, #run is called, an exception is raised. ') do
258
- @sandbox.rescue_exception = true
259
- @sandbox.run
260
- @result = @sandbox.exception.klass
261
- end
262
-
263
- verify('#exception returns raised exception to the parent process.') do
264
- @result == "RuntimeError"
265
- end
266
-
267
- exercise('@rescue is set to true, #run is called, an is exception raised, ' \
268
- '@rescue is set to false. ') do
269
- @sandbox.rescue_exception = true
270
- @sandbox.run
271
- @sandbox.rescue_exception = false
272
- @result = @sandbox.exception.klass
273
- end
274
-
275
- verify('#exception returns raised exception to parent process') do
276
- @result == "RuntimeError"
277
- end
278
-
279
- exercise('Exception object created, re-define #message with code that will cause ' \
280
- 'another exception when Dia tries to serialize exception data.') do
281
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_OS_SERVICES) do
282
- e = Exception.new
283
- def e.message
284
- raise(StandardError, 'profit')
285
- end
286
- raise(e)
287
- end
288
- sandbox.rescue_exception = true
289
- sandbox.run
290
- @result = sandbox.exception
291
- end
292
-
293
- verify('Second exception is captured and returned by #exception') do
294
- @result
295
- end
296
-
297
- end
298
-
299
- suite('#run') do
300
-
301
- setup do
302
- @result = nil
303
- @reader, @writer = IO.pipe
304
- end
305
-
306
- exercise('Confirm the profile ' \
307
- 'Dia::Profiles::NO_INTERNET ' \
308
- 'is creating a working sandbox environment.') do
309
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
310
- begin
311
- @reader.close
312
- TCPSocket.open('http://www.google.com', 80)
313
- @writer.write('false')
314
- rescue SocketError, SystemCallError => e
315
- @writer.write('true')
316
- ensure
317
- @writer.close
318
- end
319
- end
320
-
321
- sandbox.run
322
-
323
- @writer.close
324
- @result = @reader.gets
325
- @reader.close
326
- end
327
-
328
- verify(nil) do
329
- @result == 'true'
330
- end
331
-
332
- exercise('Confirm the profile ' \
333
- 'Dia::Profiles::NO_FILESYSTEM_WRITE ' \
334
- 'is creating a working sandbox environment.') do
335
-
336
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_FILESYSTEM_WRITE) do
337
- begin
338
- @reader.close
339
- File.open('/tmp/foo.txt', 'w') { |f| f.puts('fail') }
340
- @writer.write('false')
341
- rescue SocketError, SystemCallError => e
342
- @writer.write('true')
343
- ensure
344
- @writer.close
345
- end
346
- end
347
-
348
-
349
- sandbox.run
350
-
351
- @writer.close
352
- @result = @reader.gets
353
- @reader.close
354
- end
355
-
356
- verify(nil) do
357
- @result == 'true'
358
- end
359
-
360
- exercise('Confirm the profile ' \
361
- 'Dia::Profiles::NO_FILESYSTEM_WRITE_EXCEPT_TMP ' \
362
- 'is creating a working sandbox environment. ') do
363
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_FILESYSTEM_WRITE_EXCEPT_TMP) do
364
- begin
365
- @reader.close
366
- out = Time.now.to_s
367
- File.open('/tmp/%s.dia_test' % [ out ] , 'w') { |f| f.puts('success') }
368
- File.open(File.join(ENV['HOME'], 'fail.txt')) { |f| f.puts('fail') }
369
- @writer.write('false')
370
- rescue SocketError, SystemCallError => e
371
- if File.exists?('/tmp/%s.dia_test' % [ out ])
372
- @writer.write('true')
373
- else
374
- @writer.write('false')
375
- end
376
- ensure
377
- @writer.close
378
- end
379
- end
380
-
381
- sandbox.run
382
-
383
- @writer.close
384
- @result = @reader.gets
385
- @reader.close
386
- end
387
-
388
- verify(nil) do
389
- @result == 'true'
390
- end
391
-
392
- exercise('Confirm the profile ' \
393
- 'Dia::Profiles::NO_NETWORKING ' \
394
- 'is creating a working sandbox environment') do
395
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_NETWORKING) do
396
- begin
397
- @reader.close
398
- TCPSocket.open('http://www.youtube.com', 80)
399
- @writer.write('false')
400
- rescue SocketError => e
401
- @writer.write('true')
402
- end
403
- end
404
-
405
- sandbox.run
406
-
407
- @writer.close
408
- @result = @reader.gets
409
- @reader.close
410
- end
411
-
412
- verify(nil) do
413
- @result == 'true'
414
- end
415
-
416
- exercise('#run called. ') do
417
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_OS_SERVICES) { }
418
- @result = sandbox.run
419
- end
420
-
421
- verify('returns the Process ID(PID) of spawned process as a Fixnum') do
422
- @result.class == Fixnum
423
- end
424
-
425
- end
426
-
427
- suite('#run_nonblock') do
428
-
429
- setup do
430
- @result = nil
431
- @reader, @writer = IO.pipe
432
- end
433
-
434
- exercise('Confirm the profile ' \
435
- 'Dia::Profiles::NO_INTERNET ' \
436
- 'is creating a working sandbox environment.') do
437
-
438
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) do
439
- begin
440
- @reader.close
441
- TCPSocket.open('http://www.google.com', 80)
442
- @writer.write('false')
443
- rescue SocketError, SystemCallError => e
444
- @writer.write('true')
445
- ensure
446
- @writer.close
447
- end
448
- end
449
-
450
- sandbox.run_nonblock
451
- sleep(1)
452
-
453
- @writer.close
454
- @result = @reader.gets
455
- @reader.close
456
- end
457
-
458
- verify(nil) do
459
- @result == 'true'
460
- end
461
-
462
- exercise('Confirm the profile ' \
463
- 'Dia::Profiles::NO_FILESYSTEM_WRITE ' \
464
- 'is creating a working sandbox environment.') do
465
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_FILESYSTEM_WRITE) do
466
- begin
467
- @reader.close
468
- File.open('/tmp/foo.txt', 'w') { |f| f.puts('fail') }
469
- @writer.write('false')
470
- rescue SocketError, SystemCallError => e
471
- @writer.write('true')
472
- ensure
473
- @writer.close
474
- end
475
- end
476
-
477
-
478
- sandbox.run_nonblock
479
- sleep(1)
480
-
481
- @writer.close
482
- @result = @reader.gets
483
- @reader.close
484
- end
485
-
486
- verify(nil) do
487
- @result == 'true'
488
- end
489
-
490
- exercise('Confirm the profile ' \
491
- 'Dia::Profiles::NO_FILESYSTEM_WRITE_EXCEPT_TMP ' \
492
- 'is creating a working sandbox environment. ') do
493
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_FILESYSTEM_WRITE_EXCEPT_TMP) do
494
- begin
495
- @reader.close
496
- out = Time.now.to_s
497
- File.open('/tmp/%s.dia_test' % [ out ] , 'w') { |f| f.puts('success') }
498
- File.open(File.join(ENV['HOME'], 'fail.txt')) { |f| f.puts('fail') }
499
- @writer.write('false')
500
- rescue SocketError, SystemCallError => e
501
- if File.exists?('/tmp/%s.dia_test' % [ out ])
502
- @writer.write('true')
503
- else
504
- @writer.write('false')
505
- end
506
- ensure
507
- @writer.close
508
- end
509
- end
510
-
511
- sandbox.run_nonblock
512
- sleep(1)
513
-
514
- @writer.close
515
- @result = @reader.gets
516
- @reader.close
517
- end
518
-
519
- verify(nil) do
520
- @result == 'true'
521
- end
522
-
523
- exercise('Confirm the profile ' \
524
- 'Dia::Profiles::NO_NETWORKING ' \
525
- 'is creating a working sandbox environment') do
526
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_NETWORKING) do
527
- begin
528
- @reader.close
529
- TCPSocket.open('http://www.youtube.com', 80)
530
- @writer.write('false')
531
- rescue SocketError => e
532
- @writer.write('true')
533
- end
534
- end
535
-
536
- sandbox.run_nonblock
537
- sleep(1)
538
-
539
- @writer.close
540
- @result = @reader.gets
541
- @reader.close
542
- end
543
-
544
- verify(nil) do
545
- @result == 'true'
546
- end
547
-
548
- exercise('#run_nonblock called. ') do
549
-
550
- sandbox = Dia::RubyBlock.new(Dia::Profiles::NO_INTERNET) { }
551
- @result = sandbox.run_nonblock
552
- end
553
-
554
- verify('returns the Process ID(PID) of spawned process as a Fixnum') do
555
- @result.class == Fixnum
556
- end
557
-
558
- end
559
-
560
- end
561
-