torkify 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -1
  3. data/.travis.yml +6 -0
  4. data/README.md +8 -2
  5. data/VERSION +1 -1
  6. data/lib/torkify/conductor.rb +25 -14
  7. data/lib/torkify/{events/event.rb → event/basic_event.rb} +4 -4
  8. data/lib/torkify/event/dispatcher.rb +91 -0
  9. data/lib/torkify/event/echo_event.rb +23 -0
  10. data/lib/torkify/{events/event_message.rb → event/message.rb} +2 -2
  11. data/lib/torkify/event/parser.rb +70 -0
  12. data/lib/torkify/{events → event}/pass_or_fail_event.rb +15 -3
  13. data/lib/torkify/event/ran_all_test_files_event.rb +30 -0
  14. data/lib/torkify/{events → event}/status_change_event.rb +3 -3
  15. data/lib/torkify/{events → event}/test_event.rb +4 -3
  16. data/lib/torkify/listener.rb +17 -8
  17. data/lib/torkify/log/line_matcher.rb +33 -0
  18. data/lib/torkify/log/log_reader.rb +32 -0
  19. data/lib/torkify/log/parser.rb +96 -0
  20. data/lib/torkify/log/test_error.rb +7 -0
  21. data/lib/torkify/reader.rb +7 -5
  22. data/lib/torkify/version.rb +1 -1
  23. data/lib/torkify.rb +2 -3
  24. data/spec/conductor_spec.rb +3 -4
  25. data/spec/event/basic_event_spec.rb +30 -0
  26. data/spec/event/dispatcher_spec.rb +190 -0
  27. data/spec/event/echo_event_spec.rb +22 -0
  28. data/spec/event/parser_spec.rb +288 -0
  29. data/spec/{pass_or_fail_event_spec.rb → event/pass_or_fail_event_spec.rb} +2 -2
  30. data/spec/event/ran_all_test_files_event_spec.rb +42 -0
  31. data/spec/{status_change_event_spec.rb → event/status_change_event_spec.rb} +3 -3
  32. data/spec/{test_event_spec.rb → event/test_event_spec.rb} +2 -2
  33. data/spec/log/integration_spec.rb +222 -0
  34. data/spec/log/line_matcher_spec.rb +247 -0
  35. data/spec/log/log_reader_spec.rb +54 -0
  36. data/spec/log/logs/invalid_ruby_error_1.log +1 -0
  37. data/spec/log/logs/rspec_failure_1.log +19 -0
  38. data/spec/log/logs/rspec_failure_2.log +57 -0
  39. data/spec/log/logs/ruby_error_1.log +16 -0
  40. data/spec/log/logs/ruby_error_2.log +17 -0
  41. data/spec/log/logs/ruby_error_3.log +18 -0
  42. data/spec/log/logs/test_unit_error_1.log +22 -0
  43. data/spec/log/logs/test_unit_failure_1.log +22 -0
  44. data/spec/log/test_error_spec.rb +36 -0
  45. data/torkify.gemspec +1 -1
  46. metadata +63 -40
  47. data/lib/torkify/event_parser.rb +0 -36
  48. data/lib/torkify/observer_set.rb +0 -62
  49. data/spec/event_parser_spec.rb +0 -154
  50. data/spec/event_spec.rb +0 -18
  51. data/spec/observer_set_spec.rb +0 -100
data/lib/torkify.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "torkify/version"
2
+ require 'log4r'
2
3
 
3
4
  # Listen to tork events and execute ruby code when they happen.
4
5
  #
@@ -15,6 +16,7 @@ require "torkify/version"
15
16
  # # or listener.start_loop
16
17
  # # or listener.start_with_tork
17
18
  module Torkify
19
+ include Log4r
18
20
 
19
21
  # Create a listener object and load all required files.
20
22
  def self.listener(*args)
@@ -26,9 +28,6 @@ module Torkify
26
28
  #
27
29
  # Uses Log4r.
28
30
  def self.logger
29
- require 'log4r'
30
- include Log4r
31
-
32
31
  log = Logger['torkify']
33
32
  unless log
34
33
  log = Logger.new 'torkify'
@@ -1,12 +1,11 @@
1
1
  require 'spec_helper'
2
2
  require 'torkify/conductor'
3
- require 'torkify/observer_set'
4
3
 
5
4
  module Torkify
6
5
  describe Conductor do
7
6
  before do
8
7
  @reader = double
9
- @observers = Torkify::ObserverSet.new
8
+ @observers = Set.new
10
9
  @conductor = Conductor.new @observers
11
10
  end
12
11
 
@@ -38,7 +37,7 @@ module Torkify
38
37
  end
39
38
 
40
39
  it "should call startup and shutdown on each observer and each_line on reader" do
41
- @reader.should_receive(:each_line)
40
+ @reader.should_receive(:gets).and_return nil
42
41
  @conductor.start @reader
43
42
  end
44
43
  end
@@ -46,7 +45,7 @@ module Torkify
46
45
  context "when start is called with dummy input" do
47
46
  before do
48
47
  line = '["test","spec/status_change_event_spec.rb",[],"spec/status_change_event_spec.rb.log",0]'
49
- @reader.should_receive(:each_line).and_yield(line)
48
+ @reader.should_receive(:gets).and_return(line, nil)
50
49
  @conductor.observers += [double, double]
51
50
  end
52
51
 
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+ require 'torkify/event/basic_event'
3
+
4
+ module Torkify::Event
5
+ describe BasicEvent do
6
+ context "when type is absorb" do
7
+ before do
8
+ @event = BasicEvent.new('absorb')
9
+ end
10
+
11
+ subject { @event }
12
+
13
+ its(:type) { should == 'absorb' }
14
+ its(:to_s) { should == 'absorb' }
15
+ its(:message) { should == :on_absorb }
16
+ end
17
+
18
+ context "when type is stop" do
19
+ before do
20
+ @event = BasicEvent.new('stop')
21
+ end
22
+
23
+ subject { @event }
24
+
25
+ its(:type) { should == 'stop' }
26
+ its(:to_s) { should == 'stop' }
27
+ its(:message) { should == :on_stop }
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,190 @@
1
+ require 'spec_helper'
2
+ require 'torkify/event/dispatcher'
3
+ require 'torkify/event/basic_event'
4
+ require 'torkify/event/pass_or_fail_event'
5
+
6
+ module Torkify::Event
7
+
8
+ class ExampleObserver
9
+ def on_stop(event, a1, a2, a3, a4, a5)
10
+ receive :on_stop, event, a1, a2, a3, a4, a5
11
+ end
12
+
13
+ def on_fail(event, another)
14
+ receive :on_fail, event, another
15
+ end
16
+
17
+ def on_test(event)
18
+ receive :on_test, event
19
+ end
20
+
21
+ def method_missing(name, *args)
22
+ receive name, *args
23
+ end
24
+
25
+ def on_pass
26
+ receive :on_pass
27
+ end
28
+
29
+ def receive(message, *args)
30
+ @received = [message, *args]
31
+ end
32
+
33
+ attr_reader :received
34
+ end
35
+
36
+ describe Dispatcher do
37
+ shared_examples "an observer notification" do
38
+ it "should send the expected message and event to the observer" do
39
+ observers.each { |o| o.should_receive(expected_message).with(event) }
40
+ subject.dispatch event
41
+ end
42
+ end
43
+
44
+ shared_examples "an observer with a called method" do
45
+ before { dispatcher.dispatch(event) }
46
+ subject { observers.first }
47
+
48
+ its(:received) { should == expected_call }
49
+ end
50
+
51
+ context "with a single observer" do
52
+ let(:observers) { [mock] }
53
+ subject { Dispatcher.new observers }
54
+
55
+ context "dispatching an example event" do
56
+ let(:event) { BasicEvent.new :example }
57
+ let(:expected_message) { :on_example }
58
+
59
+ it_behaves_like "an observer notification"
60
+ end
61
+
62
+ context "dispatching a test event" do
63
+ let(:event) { BasicEvent.new :test }
64
+ let(:expected_message) { :on_test }
65
+
66
+ it_behaves_like "an observer notification"
67
+ end
68
+
69
+ end
70
+
71
+ context "with a concrete observer" do
72
+ let(:observers) { [ ExampleObserver.new ] }
73
+ let(:dispatcher) { Dispatcher.new observers }
74
+
75
+ context "dispatching to a method that receives no arguments" do
76
+ let(:event) { BasicEvent.new :pass }
77
+ let(:expected_call) { [:on_pass] }
78
+
79
+ it_behaves_like "an observer with a called method"
80
+ end
81
+
82
+ context "dispatching to a method that receives one argument" do
83
+ let(:event) { BasicEvent.new :test }
84
+ let(:expected_call) { [:on_test, event] }
85
+
86
+ it_behaves_like "an observer with a called method"
87
+ end
88
+
89
+ context "dispatching to a method that receives two arguments" do
90
+ let(:event) { BasicEvent.new :fail }
91
+ let(:expected_call) { [:on_fail, event, nil] }
92
+
93
+ it_behaves_like "an observer with a called method"
94
+ end
95
+
96
+ context "dispatching to a method that receives many arguments" do
97
+ let(:event) { BasicEvent.new :stop }
98
+ let(:expected_call) { [:on_stop, event, nil, nil, nil, nil, nil] }
99
+
100
+ it_behaves_like "an observer with a called method"
101
+ end
102
+
103
+ context "dispatching to use method missing" do
104
+ let(:event) { BasicEvent.new :unknown }
105
+ let(:expected_call) { [:on_unknown, event] }
106
+
107
+ it_behaves_like "an observer with a called method"
108
+ end
109
+
110
+ context "dispatching a run all test files event" do
111
+ let(:event) { BasicEvent.new :run_all_test_files }
112
+ let(:expected_call) { [:on_run_all_test_files, event] }
113
+
114
+ before { dispatcher.dispatch event }
115
+
116
+ it_behaves_like "an observer with a called method"
117
+
118
+ context "after sending the idle event" do
119
+ before { dispatcher.dispatch BasicEvent.new :idle }
120
+
121
+ subject { observers.first.received }
122
+
123
+ its(:first) { should == :on_ran_all_test_files }
124
+
125
+ context "the event" do
126
+ subject { observers.first.received[1] }
127
+ it { should be_a RanAllTestFilesEvent }
128
+ its(:passed) { should == [] }
129
+ its(:failed) { should == [] }
130
+ its(:time) { should > 0.0 }
131
+ end
132
+ end
133
+
134
+ context "after sending several pass and fail events" do
135
+ let(:pass_events) { Array.new(3) { PassOrFailEvent.new(:pass) } }
136
+ let(:fail_events) { Array.new(3) { PassOrFailEvent.new(:fail) } }
137
+
138
+ before do
139
+ pass_events.each { |e| dispatcher.dispatch e }
140
+ fail_events.each { |e| dispatcher.dispatch e }
141
+ dispatcher.dispatch BasicEvent.new :idle
142
+ end
143
+
144
+ subject { observers.first.received }
145
+
146
+ its(:first) { should == :on_ran_all_test_files }
147
+
148
+ context "the event" do
149
+ subject { observers.first.received[1] }
150
+ it { should be_a RanAllTestFilesEvent }
151
+ its(:passed) { should == pass_events }
152
+ its(:failed) { should == fail_events }
153
+ its(:time) { should > 0.0 }
154
+ end
155
+ end
156
+ end
157
+ end
158
+
159
+ context "with an observer that has no methods" do
160
+ let(:observers) { [Object.new] }
161
+
162
+ let(:dispatcher) { Dispatcher.new observers }
163
+
164
+ context "dispatching an event" do
165
+ it "should not raise an exception" do
166
+ expect { dispatcher.dispatch BasicEvent.new(:missing) }.not_to raise_error
167
+ end
168
+ end
169
+ end
170
+
171
+ context "with multiple observers" do
172
+ let(:observers) { Array.new(3) { mock } }
173
+ subject { Dispatcher.new observers }
174
+
175
+ context "dispatching an absorb event" do
176
+ let(:event) { BasicEvent.new :absorb }
177
+ let(:expected_message) { :on_absorb }
178
+
179
+ it_behaves_like "an observer notification"
180
+ end
181
+
182
+ context "dispatching a fail event" do
183
+ let(:event) { BasicEvent.new :fail }
184
+ let(:expected_message) { :on_fail }
185
+
186
+ it_behaves_like "an observer notification"
187
+ end
188
+ end
189
+ end
190
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require 'torkify/event/echo_event'
3
+
4
+ module Torkify::Event
5
+ describe EchoEvent do
6
+
7
+ context "with a pass_now_fail event" do
8
+ before do
9
+ @type = 'echo'
10
+ @arguments = ['a']
11
+ @event = EchoEvent.new(@type, @arguments)
12
+ end
13
+
14
+ subject { @event }
15
+
16
+ its(:type) { should == @type }
17
+ its(:arguments) { should == @arguments }
18
+ its(:args) { should == @arguments }
19
+ its(:to_s) { should == @type }
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,288 @@
1
+ require 'spec_helper'
2
+ require 'torkify/event/parser'
3
+
4
+ module Torkify::Event
5
+ shared_examples "a basic event" do |type|
6
+ it { should be_an BasicEvent }
7
+ its(:type) { should == type }
8
+ end
9
+
10
+ shared_examples "an echo event" do |args|
11
+ it { should be_an EchoEvent }
12
+ its(:type) { should == 'echo' }
13
+ its(:args) { should == args }
14
+ end
15
+
16
+ shared_examples "an echo event and sub event" do |type, echo_args = nil|
17
+ its(:length) { should == 2 }
18
+
19
+ context "the first event" do
20
+ subject { @event_list.first }
21
+
22
+ it_behaves_like "an echo event", (echo_args || [type])
23
+ end
24
+
25
+ context "the second event" do
26
+ subject { @event_list[1] }
27
+
28
+ it_behaves_like "a basic event", type
29
+ end
30
+ end
31
+
32
+ describe Parser do
33
+ before { @parser = Parser.new }
34
+
35
+ context "when calling parse on a test event line with no numbers" do
36
+ before do
37
+ line = '["test","spec/reader_spec.rb",[],"spec/reader_spec.rb.log",3]'
38
+ @event_list = @parser.parse line
39
+ end
40
+
41
+ subject { @event_list.first }
42
+
43
+ it { should be_a TestEvent }
44
+
45
+ its(:file) { should == 'spec/reader_spec.rb' }
46
+ its(:lines) { should == [] }
47
+ its(:log_file) { should == 'spec/reader_spec.rb.log' }
48
+ its(:worker) { should == 3 }
49
+ end
50
+
51
+ context "when calling parse on a test event line with numbers" do
52
+ before do
53
+ line = '["test","spec/another_spec.rb",[20, 32, 41],"spec/another_spec.rb.log",6]'
54
+ @event_list = @parser.parse line
55
+ end
56
+
57
+ subject { @event_list.first }
58
+
59
+ it { should be_a TestEvent }
60
+
61
+ its(:file) { should == 'spec/another_spec.rb' }
62
+ its(:lines) { should == [20, 32, 41] }
63
+ its(:log_file) { should == 'spec/another_spec.rb.log' }
64
+ its(:worker) { should == 6 }
65
+ end
66
+
67
+ context "when calling parse on a pass event line" do
68
+ before do
69
+ line = '["pass","spec/pass_spec.rb",[27],"spec/pass_spec.rb.log",1,0,"#<Process::Status: pid 27490 exit 0>"]'
70
+ @event_list = @parser.parse line
71
+ end
72
+
73
+ subject { @event_list.first }
74
+
75
+ it { should be_a PassOrFailEvent }
76
+ its(:type) { should == 'pass' }
77
+ its(:file) { should == 'spec/pass_spec.rb' }
78
+ its(:lines) { should == [27] }
79
+ its(:log_file) { should == 'spec/pass_spec.rb.log' }
80
+ its(:worker) { should == 1 }
81
+ its(:exit_code) { should == 0 }
82
+ its(:pid) { should == 27490 }
83
+ end
84
+
85
+ context "when calling parse on a fail event line" do
86
+ before do
87
+
88
+ line = '["fail","spec/fail_spec.rb",[],"spec/fail_spec.rb.log",1,256,"#<Process::Status: pid 23318 exit 1>"]'
89
+ @event_list = @parser.parse line
90
+ end
91
+
92
+ subject { @event_list.first }
93
+
94
+ it { should be_a PassOrFailEvent }
95
+ its(:type) { should == 'fail' }
96
+ its(:file) { should == 'spec/fail_spec.rb' }
97
+ its(:lines) { should == [] }
98
+ its(:log_file) { should == 'spec/fail_spec.rb.log' }
99
+ its(:worker) { should == 1 }
100
+ its(:exit_code) { should == 256 }
101
+ its(:pid) { should == 23318 }
102
+ end
103
+
104
+ context "when calling parse on an absorb event line" do
105
+ before do
106
+ line = '["absorb"]'
107
+ @event_list = @parser.parse line
108
+ end
109
+
110
+ subject { @event_list.first }
111
+
112
+ it_behaves_like "a basic event", 'absorb'
113
+ end
114
+
115
+ context "when calling parse on an unknown event type" do
116
+ before do
117
+ line = '["random"]'
118
+ @event_list = @parser.parse line
119
+ end
120
+
121
+ subject { @event_list.first }
122
+
123
+ it_behaves_like "a basic event", 'random'
124
+ end
125
+
126
+ context "when calling parse on a pass now fail event line" do
127
+ before do
128
+ line = '["pass_now_fail","spec/status_change_spec.rb",["fail","spec/status_change_spec.rb",[68],"spec/status_change_spec.rb.log",2,256,"#<Process::Status: pid 23819 exit 1>"]]'
129
+ @event_list = @parser.parse line
130
+ end
131
+
132
+ subject { @event_list.first }
133
+
134
+ it { should be_a StatusChangeEvent }
135
+ its(:type) { should == 'pass_now_fail' }
136
+ its(:file) { should == 'spec/status_change_spec.rb' }
137
+ its(:event) { should be_a PassOrFailEvent }
138
+
139
+ context "and getting the inner event" do
140
+ subject { @event_list.first.event }
141
+
142
+ its(:type) { should == 'fail' }
143
+ its(:file) { should == 'spec/status_change_spec.rb' }
144
+ its(:log_file) { should == 'spec/status_change_spec.rb.log' }
145
+ its(:lines) { should == [68] }
146
+ its(:worker) { should == 2 }
147
+ its(:exit_code) { should == 256 }
148
+ its(:pid) { should == 23819 }
149
+ end
150
+ end
151
+
152
+ context "when calling parse on a fail now pass event line" do
153
+ before do
154
+ line = '["fail_now_pass","spec/status_change_spec.rb",["pass","spec/status_change_spec.rb",[],"spec/status_change_spec.rb.log",1,0,"#<Process::Status: pid 677 exit 0>"]]'
155
+ @event_list = @parser.parse line
156
+ end
157
+
158
+ subject { @event_list.first }
159
+
160
+ it { should be_a StatusChangeEvent }
161
+ its(:type) { should == 'fail_now_pass' }
162
+ its(:file) { should == 'spec/status_change_spec.rb' }
163
+ its(:event) { should be_a PassOrFailEvent }
164
+
165
+ context "and getting the inner event" do
166
+ subject { @event_list.first.event }
167
+
168
+ its(:type) { should == 'pass' }
169
+ its(:file) { should == 'spec/status_change_spec.rb' }
170
+ its(:log_file) { should == 'spec/status_change_spec.rb.log' }
171
+ its(:lines) { should == [] }
172
+ its(:worker) { should == 1 }
173
+ its(:exit_code) { should == 0 }
174
+ its(:pid) { should == 677 }
175
+ end
176
+ end
177
+
178
+ context "when calling parse on an idle line for an idle event" do
179
+ before do
180
+ line = '["idle"]'
181
+ @event_list = @parser.parse line
182
+ end
183
+
184
+ subject { @event_list }
185
+
186
+ its(:length) { should == 1 }
187
+
188
+ context "the first event" do
189
+ subject { @event_list.first }
190
+
191
+ it_behaves_like "a basic event", 'idle'
192
+ end
193
+ end
194
+
195
+ context "when calling parse on an echo line for the idle event" do
196
+ before do
197
+ line = '["echo", ["idle"]]'
198
+ @event_list = @parser.parse line
199
+ end
200
+
201
+ subject { @event_list }
202
+
203
+ its(:length) { should == 1 }
204
+
205
+ context "the first event" do
206
+ subject { @event_list.first }
207
+
208
+ it_behaves_like "an echo event", ['idle']
209
+ end
210
+ end
211
+
212
+ context "when calling parse on an echo line for the run_test_files command" do
213
+ context "with no arguments" do
214
+ before do
215
+ line = '["echo", ["run_test_files", []]]'
216
+ @event_list = @parser.parse line
217
+ end
218
+
219
+ subject { @event_list }
220
+
221
+ its(:length) { should == 1 }
222
+
223
+ context "the first event" do
224
+ subject { @event_list.first }
225
+
226
+ it_behaves_like "an echo event", ['run_test_files', []]
227
+ end
228
+ end
229
+
230
+ context "with files as arguments" do
231
+ before do
232
+ line = '["echo", ["run_test_files", ["path/to/file1.rb", "path/to/file2.rb"]]]'
233
+ @event_list = @parser.parse line
234
+ end
235
+
236
+ subject { @event_list }
237
+
238
+ it_behaves_like "an echo event and sub event",
239
+ 'run_test_files',
240
+ ["run_test_files", ["path/to/file1.rb", "path/to/file2.rb"]]
241
+ end
242
+ end
243
+
244
+ context "when calling parse on an echo line for the run_test_file command" do
245
+ before do
246
+ line = '["echo", ["run_test_file", "path/to/file.rb"]]'
247
+ @event_list = @parser.parse line
248
+ end
249
+
250
+ subject { @event_list }
251
+
252
+ it_behaves_like "an echo event and sub event", 'run_test_file', ['run_test_file', 'path/to/file.rb']
253
+ end
254
+
255
+ context "when calling parse on an echo line for the run_test_file command" do
256
+ before do
257
+ line = '["echo", ["stop_running_test_files"]]'
258
+ @event_list = @parser.parse line
259
+ end
260
+
261
+ subject { @event_list }
262
+
263
+ it_behaves_like "an echo event and sub event", 'stop_running_test_files'
264
+ end
265
+
266
+ context "when calling parse on an echo line for the rerun_passed_test_files command" do
267
+ before do
268
+ line = '["echo", ["rerun_passed_test_files"]]'
269
+ @event_list = @parser.parse line
270
+ end
271
+
272
+ subject { @event_list }
273
+
274
+ it_behaves_like "an echo event and sub event", 'rerun_passed_test_files'
275
+ end
276
+
277
+ context "when calling parse on an echo line for a rerun_failed_test_files command" do
278
+ before do
279
+ line = '["echo",["rerun_failed_test_files"]]'
280
+ @event_list = @parser.parse line
281
+ end
282
+
283
+ subject { @event_list }
284
+
285
+ it_behaves_like "an echo event and sub event", 'rerun_failed_test_files'
286
+ end
287
+ end
288
+ end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'torkify/events/pass_or_fail_event'
2
+ require 'torkify/event/pass_or_fail_event'
3
3
 
4
- module Torkify
4
+ module Torkify::Event
5
5
  describe PassOrFailEvent do
6
6
 
7
7
  context "with pass data" do
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+ require 'torkify/event/ran_all_test_files_event'
3
+
4
+ module Torkify::Event
5
+ describe RanAllTestFilesEvent do
6
+ context "with no sub events" do
7
+ subject { RanAllTestFilesEvent.new :all_tests_run }
8
+
9
+ its(:type) { should == :all_tests_run }
10
+ its(:message) { should == :on_all_tests_run }
11
+ its(:passed) { should == [] }
12
+ its(:failed) { should == [] }
13
+ its(:time) { should > 0.0 }
14
+ end
15
+
16
+ context "with passed and failed events" do
17
+ let(:passed) { [mock, mock] }
18
+ let(:failed) { [mock, mock] }
19
+ subject { RanAllTestFilesEvent.new :all_tests_run, passed, failed }
20
+
21
+ its(:type) { should == :all_tests_run }
22
+ its(:message) { should == :on_all_tests_run }
23
+ its(:passed) { should == passed }
24
+ its(:failed) { should == failed }
25
+ its(:time) { should > 0.0 }
26
+ end
27
+
28
+ context "after sleeping" do
29
+ let(:event) { RanAllTestFilesEvent.new :all_tests_run }
30
+
31
+ before do
32
+ event
33
+ sleep 0.3
34
+ end
35
+
36
+ subject { event }
37
+
38
+ its(:time) { should > 0.3 }
39
+ end
40
+ end
41
+ end
42
+
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
- require 'torkify/events/status_change_event'
3
- require 'torkify/events/pass_or_fail_event'
2
+ require 'torkify/event/status_change_event'
3
+ require 'torkify/event/pass_or_fail_event'
4
4
 
5
- module Torkify
5
+ module Torkify::Event
6
6
  describe StatusChangeEvent do
7
7
 
8
8
  context "with a pass_now_fail event" do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'torkify/events/test_event'
2
+ require 'torkify/event/test_event'
3
3
 
4
- module Torkify
4
+ module Torkify::Event
5
5
  describe TestEvent do
6
6
 
7
7
  context "with typical seed data" do