tork 19.11.1 → 20.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION.markdown +55 -0
- data/bin/tork +1 -1
- data/bin/tork-driver +4 -5
- data/bin/tork-engine +16 -12
- data/bin/tork-herald +1 -1
- data/bin/tork-master +2 -2
- data/bin/tork-notify +3 -3
- data/bin/tork-runner +21 -14
- data/lib/tork/cliapp.rb +22 -18
- data/lib/tork/driver.rb +5 -5
- data/lib/tork/engine.rb +32 -16
- data/lib/tork/master.rb +1 -1
- data/lib/tork/version.rb +1 -1
- data/man/index.html +1 -1
- data/man/man0/README.html +14 -26
- data/man/man0/VERSION.html +148 -93
- data/man/man0/VERSION.markdown +55 -0
- data/man/man1/tork-driver.1 +4 -5
- data/man/man1/tork-driver.1.html +8 -13
- data/man/man1/tork-engine.1 +21 -17
- data/man/man1/tork-engine.1.html +12 -10
- data/man/man1/tork-herald.1 +1 -1
- data/man/man1/tork-herald.1.html +2 -2
- data/man/man1/tork-master.1 +2 -2
- data/man/man1/tork-master.1.html +3 -3
- data/man/man1/tork-notify.1 +1 -1
- data/man/man1/tork-notify.1.html +2 -2
- data/man/man1/tork-remote.1.html +1 -1
- data/man/man1/tork-runner.1 +3 -3
- data/man/man1/tork-runner.1.html +3 -3
- data/man/man1/tork.1 +1 -1
- data/man/man1/tork.1.html +2 -2
- data/man/style.css +1 -1
- data/tork.gemspec +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 988c5ed6c085e6de19928b5f04c85cea9bfbe6eb
|
4
|
+
data.tar.gz: b853a4b2203626de84ef575def8797fb08491f7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 495c35b54ac9bcae981101907bb412315e8bf2a31968808d0cb141028e85e2aceb881a65249d8c18ae2074e1a60e39fa6f5f0bfef6e60a8b49bf8692879c18d7
|
7
|
+
data.tar.gz: dc868b471d3c70a3b12ee6f79708ec988f81eae6cd002e554f129fdf3b47ca6ec87bc144da15474daeaf74457b0803000e8554a39353b51aec197008ba74471f
|
data/VERSION.markdown
CHANGED
@@ -1,3 +1,58 @@
|
|
1
|
+
## Version 20.0.0 (2014-10-26)
|
2
|
+
|
3
|
+
### Major:
|
4
|
+
|
5
|
+
* tork-runner(1): percentage lied; print counts instead.
|
6
|
+
|
7
|
+
The percentage of completion is not accurate because it only measures
|
8
|
+
how many tests that have started running _so far_ have been completed.
|
9
|
+
This makes the percentage jump from 100% to lesser values as tests run.
|
10
|
+
|
11
|
+
Also drop the `tork-runner:` prefix from progress messages and replace
|
12
|
+
VT100 escape codes for reprinting in-place with a \r (carriage return).
|
13
|
+
|
14
|
+
* Shorten all status message tokens to ~4 characters.
|
15
|
+
|
16
|
+
* In tork-driver(1):
|
17
|
+
* `reabsorb` is now `over`
|
18
|
+
|
19
|
+
* In tork-engine(1):
|
20
|
+
* `idle` is now `done`
|
21
|
+
* `pass_now_fail` is now `fail!`
|
22
|
+
* `fail_now_pass` is now `pass!`
|
23
|
+
|
24
|
+
* In tork-master(1):
|
25
|
+
* `absorb` is now `boot`
|
26
|
+
|
27
|
+
* Shorten all commands names down to ~4 characters.
|
28
|
+
|
29
|
+
* In tork(1):
|
30
|
+
* the `o` input command character is now named `b`
|
31
|
+
|
32
|
+
* In tork-driver(1):
|
33
|
+
* the `run_all_test_files` command is now named `test!`
|
34
|
+
* the `over` message is now named `boot!`
|
35
|
+
|
36
|
+
* In tork-engine(1):
|
37
|
+
* the `reabsorb_overhead` command is now named `boot!`
|
38
|
+
* the `run_test_file` command is now named `test`
|
39
|
+
* the `run_test_files` command is now named `test`
|
40
|
+
* the `stop_running_test_files` command is now named `stop`
|
41
|
+
* the `rerun_passed_test_files` command is now named `pass!`
|
42
|
+
* the `rerun_failed_test_files` command is now named `fail!`
|
43
|
+
* the `list_failed_test_files` command is now named `fail?`
|
44
|
+
* the `over` status message is now named `boot!`
|
45
|
+
|
46
|
+
### Minor:
|
47
|
+
|
48
|
+
* tork-engine(1): add `test?` and `pass?` listing commands.
|
49
|
+
|
50
|
+
* tork(1): emit "tork:" prefix on all messages sent to user.
|
51
|
+
|
52
|
+
### Other:
|
53
|
+
|
54
|
+
* Upgrade to md2man 4.0 and binman 4.0.
|
55
|
+
|
1
56
|
## Version 19.11.1 (2014-10-24)
|
2
57
|
|
3
58
|
This release improves support for RSpec 3 and Rails 4.
|
data/bin/tork
CHANGED
data/bin/tork-driver
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
=begin =======================================================================
|
3
3
|
|
4
|
-
# TORK-DRIVER 1 2014-10-
|
4
|
+
# TORK-DRIVER 1 2014-10-26 20.0.0
|
5
5
|
|
6
6
|
## NAME
|
7
7
|
|
@@ -25,7 +25,7 @@ stdin that are single-line JSON arrays, it splits each of them into an array
|
|
25
25
|
of words, using the same word-splitting algorithm as sh(1), before processing
|
26
26
|
them. For example, the line `a "b c"` is split into the `["a", "b c"]` array.
|
27
27
|
|
28
|
-
`["
|
28
|
+
`["test!"]`
|
29
29
|
Runs all test files found within and beneath the current working directory.
|
30
30
|
|
31
31
|
*...*
|
@@ -36,9 +36,8 @@ them. For example, the line `a "b c"` is split into the `["a", "b c"]` array.
|
|
36
36
|
This program prints the following messages, which are single-line JSON arrays,
|
37
37
|
to stdout.
|
38
38
|
|
39
|
-
`["
|
40
|
-
|
41
|
-
changed.
|
39
|
+
`["boot!",` *overhead_file*`]`
|
40
|
+
Reabsorbing test execution overhead because *overhead_file* has changed.
|
42
41
|
|
43
42
|
*...*
|
44
43
|
Messages from tork-engine(1) and tork-master(1) are also reproduced here.
|
data/bin/tork-engine
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
=begin =======================================================================
|
3
3
|
|
4
|
-
# TORK-ENGINE 1 2014-10-
|
4
|
+
# TORK-ENGINE 1 2014-10-26 20.0.0
|
5
5
|
|
6
6
|
## NAME
|
7
7
|
|
@@ -25,30 +25,34 @@ stdin that are single-line JSON arrays, it splits each of them into an array
|
|
25
25
|
of words, using the same word-splitting algorithm as sh(1), before processing
|
26
26
|
them. For example, the line `a "b c"` is split into the `["a", "b c"]` array.
|
27
27
|
|
28
|
-
`["
|
28
|
+
`["boot!"]`
|
29
29
|
Stops any test files that are currently running, reabsorbs the test
|
30
30
|
execution overhead, and then re-runs those stopped test files.
|
31
31
|
|
32
|
-
`["
|
32
|
+
`["test"`, *test_file*`,` *line_numbers*...`]`
|
33
|
+
`["test"`, `[`*test_file*`,` *line_numbers*...`]`...`]`
|
33
34
|
Runs tests that correspond to the given sequence of *line_numbers* in the
|
34
35
|
given *test_file*. If no *line_numbers* are given, then only those lines
|
35
36
|
that have changed since the last run of *test_file* will be substituted.
|
36
37
|
If any *line_numbers* are zero, then the entire *test_file* will be run.
|
37
38
|
|
38
|
-
`["
|
39
|
-
|
39
|
+
`["test?"]`
|
40
|
+
Lists all test files that are currently running.
|
40
41
|
|
41
|
-
`["
|
42
|
+
`["stop"`, *signal*`]`
|
42
43
|
Stops test files that are currently running by sending the given *signal*
|
43
44
|
(optional; defaults to "SIGTERM") to their respective worker processes.
|
44
45
|
|
45
|
-
`["
|
46
|
+
`["pass!"]`
|
46
47
|
Runs all test files that have passed during their most recent run.
|
47
48
|
|
48
|
-
`["
|
49
|
+
`["pass?"]`
|
50
|
+
Lists all test files that have passed during their most recent run.
|
51
|
+
|
52
|
+
`["fail!"]`
|
49
53
|
Runs all test files that have failed during their most recent run.
|
50
54
|
|
51
|
-
`["
|
55
|
+
`["fail?"]`
|
52
56
|
Lists all test files that have failed during their most recent run.
|
53
57
|
|
54
58
|
`["quit"]`
|
@@ -59,15 +63,15 @@ them. For example, the line `a "b c"` is split into the `["a", "b c"]` array.
|
|
59
63
|
This program prints the following messages, which are single-line JSON arrays,
|
60
64
|
to stdout.
|
61
65
|
|
62
|
-
`["
|
66
|
+
`["done",` *ran_test_files*`,` *passed_test_files*`,` *failed_test_files*`]`
|
63
67
|
All queued tests have finished running and no new tests have been queued.
|
64
68
|
In particular, *ran_test_files* test files have run, *passed_test_files*
|
65
69
|
test files have passed, and *failed_test_files* test files have failed.
|
66
70
|
|
67
|
-
`["
|
71
|
+
`["fail!",` *test_file*`,` *message*`]`
|
68
72
|
A previously passing *test_file* has now failed. See *message* for details.
|
69
73
|
|
70
|
-
`["
|
74
|
+
`["pass!",` *test_file*`,` *message*`]`
|
71
75
|
A previously failing *test_file* has now passed. See *message* for details.
|
72
76
|
|
73
77
|
*...*
|
data/bin/tork-herald
CHANGED
data/bin/tork-master
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
=begin =======================================================================
|
3
3
|
|
4
|
-
# TORK-MASTER 1 2014-10-
|
4
|
+
# TORK-MASTER 1 2014-10-26 20.0.0
|
5
5
|
|
6
6
|
## NAME
|
7
7
|
|
@@ -45,7 +45,7 @@ them. For example, the line `a "b c"` is split into the `["a", "b c"]` array.
|
|
45
45
|
This program prints the following messages, which are single-line JSON arrays,
|
46
46
|
to stdout.
|
47
47
|
|
48
|
-
`["
|
48
|
+
`["boot"]`
|
49
49
|
Test execution overhead has been absorbed. We are ready for testing!
|
50
50
|
|
51
51
|
`["test",` *test_file*`,` *line_numbers*`,` *log_file*`,` *worker_number*`]`
|
data/bin/tork-notify
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
=begin =======================================================================
|
3
3
|
|
4
|
-
# TORK-NOTIFY 1 2014-10-
|
4
|
+
# TORK-NOTIFY 1 2014-10-26 20.0.0
|
5
5
|
|
6
6
|
## NAME
|
7
7
|
|
@@ -46,8 +46,8 @@ IO.popen('tork-remote tork-engine', 'r+') do |remote|
|
|
46
46
|
# make notifications edge-triggered: pass => fail or vice versa.
|
47
47
|
# we do not care about pass => pass or fail => fail transitions.
|
48
48
|
icon = case event.to_sym
|
49
|
-
when :
|
50
|
-
when :
|
49
|
+
when :pass! then 'dialog-information'
|
50
|
+
when :fail! then 'dialog-error'
|
51
51
|
end
|
52
52
|
|
53
53
|
if icon
|
data/bin/tork-runner
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
=begin =======================================================================
|
3
3
|
|
4
|
-
# TORK-RUNNER 1 2014-10-
|
4
|
+
# TORK-RUNNER 1 2014-10-26 20.0.0
|
5
5
|
|
6
6
|
## NAME
|
7
7
|
|
@@ -30,8 +30,8 @@ This program prints the following messages to stdout.
|
|
30
30
|
|
31
31
|
This program prints the following messages to stderr if it is a TTY device.
|
32
32
|
|
33
|
-
`
|
34
|
-
*
|
33
|
+
*T* `tested,` *P* `passed,` *F* `failed`
|
34
|
+
So far, *T* test files were tested, *P* of them passed, *F* of them failed.
|
35
35
|
|
36
36
|
## OPTIONS
|
37
37
|
|
@@ -68,13 +68,13 @@ IO.popen('tork-driver', 'w+') do |driver|
|
|
68
68
|
test_files = Dir[*ARGV]
|
69
69
|
command =
|
70
70
|
if test_files.empty?
|
71
|
-
[:
|
71
|
+
[:test!]
|
72
72
|
else
|
73
|
-
[:
|
73
|
+
[:test, test_files]
|
74
74
|
end
|
75
75
|
driver.puts JSON.dump(command)
|
76
76
|
|
77
|
-
# track test runs
|
77
|
+
# track test runs and show the progress
|
78
78
|
tested, passed, failed = 0, 0, []
|
79
79
|
while line = driver.gets
|
80
80
|
response = JSON.parse(line)
|
@@ -82,15 +82,22 @@ IO.popen('tork-driver', 'w+') do |driver|
|
|
82
82
|
when :test then tested += 1
|
83
83
|
when :pass then passed += 1
|
84
84
|
when :fail then failed << response[3]
|
85
|
-
when :
|
86
|
-
puts failed.map {|log| [nil, ">> #{log} <<", File.read(log)] }, nil,
|
87
|
-
"#{tested} tested, #{passed} passed, #{failed.count} failed"
|
88
|
-
exit! failed.empty?
|
85
|
+
when :done then break
|
89
86
|
end
|
90
87
|
|
91
|
-
|
92
|
-
#
|
93
|
-
|
94
|
-
|
88
|
+
progress = "#{tested} tested, #{passed} passed, #{failed.length} failed"
|
89
|
+
#
|
90
|
+
# show testing progress if we are connected to a terminal device
|
91
|
+
#
|
92
|
+
# NOTE: \r (carriage return) moves cursor to beginning of line so we end
|
93
|
+
# up overwriting any previously printed progress message; we don't
|
94
|
+
# need to erase the line because message length is non-decreasing:
|
95
|
+
# i.e. the counts shown in the message can only increase over time
|
96
|
+
#
|
97
|
+
STDERR.print "\r", progress if STDERR.tty?
|
95
98
|
end
|
99
|
+
|
100
|
+
# report failures and exit accordingly
|
101
|
+
puts failed.map {|log| [nil, ">> #{log} <<", File.read(log)] }, nil, progress
|
102
|
+
exit! failed.empty?
|
96
103
|
end
|
data/lib/tork/cliapp.rb
CHANGED
@@ -4,7 +4,7 @@ module Tork
|
|
4
4
|
class CLIApp < Server
|
5
5
|
|
6
6
|
def loop
|
7
|
-
tell @clients, 'Absorbing test execution overhead...'
|
7
|
+
tell @clients, 'Absorbing test execution overhead...'
|
8
8
|
@driver = popen('tork-driver')
|
9
9
|
super
|
10
10
|
ensure
|
@@ -22,17 +22,20 @@ protected
|
|
22
22
|
Regexp.union(File.expand_path('../../..', __FILE__), TORK_DOLLAR_ZERO)
|
23
23
|
}[^:]*:\d+:.+$/
|
24
24
|
|
25
|
+
# remove Ruby's built-in Kernel#test() method so our test() method works
|
26
|
+
undef test
|
27
|
+
|
25
28
|
def recv client, message
|
26
29
|
case client
|
27
30
|
when @driver
|
28
31
|
event, *details = message
|
29
32
|
|
30
33
|
case event_sym = event.to_sym
|
31
|
-
when :
|
32
|
-
tell @clients, '
|
34
|
+
when :boot
|
35
|
+
tell @clients, 'Test execution overhead absorbed; ready to test!'
|
33
36
|
|
34
|
-
when :
|
35
|
-
tell @clients, '
|
37
|
+
when :boot!
|
38
|
+
tell @clients, 'Test execution overhead changed; re-absorbing...'
|
36
39
|
|
37
40
|
when :test, :pass, :fail
|
38
41
|
test_file, line_numbers, log_file, worker_number, exit_status = details
|
@@ -53,17 +56,18 @@ protected
|
|
53
56
|
|
54
57
|
tell @clients, message, false
|
55
58
|
|
56
|
-
when :
|
59
|
+
when :done
|
57
60
|
tested, passed, failed = details.map(&:length)
|
58
61
|
tell @clients, "#{tested} tested, #{passed} passed, #{failed} failed"
|
59
62
|
end
|
63
|
+
|
60
64
|
else
|
61
65
|
key = message.shift.lstrip[0,1].downcase
|
62
66
|
cmd = Array(COMMANDS.fetch(key, [:help, client])) + message
|
63
67
|
if respond_to? cmd.first, true
|
64
68
|
__send__(*cmd)
|
65
69
|
else
|
66
|
-
tell @clients, "Sending #{cmd.inspect} command..."
|
70
|
+
tell @clients, "Sending #{cmd.inspect} command..."
|
67
71
|
send @driver, cmd
|
68
72
|
end
|
69
73
|
end
|
@@ -72,27 +76,27 @@ protected
|
|
72
76
|
private
|
73
77
|
|
74
78
|
COMMANDS = {
|
75
|
-
't' => :
|
76
|
-
'a' => :
|
77
|
-
's' => :
|
78
|
-
'k' => [:
|
79
|
-
'p' => :
|
80
|
-
'f' => :
|
81
|
-
'l' => :
|
82
|
-
'
|
79
|
+
't' => :test,
|
80
|
+
'a' => :test!,
|
81
|
+
's' => :stop,
|
82
|
+
'k' => [:stop, :SIGKILL],
|
83
|
+
'p' => :pass!,
|
84
|
+
'f' => :fail!,
|
85
|
+
'l' => :fail?,
|
86
|
+
'b' => :boot!,
|
83
87
|
'q' => :quit,
|
84
88
|
}
|
85
89
|
|
86
90
|
def help client
|
87
|
-
tell client, <<HELP
|
88
|
-
Type a then ENTER to run all test files.
|
91
|
+
tell client, <<HELP
|
92
|
+
Type a then ENTER to run all available test files.
|
89
93
|
Type t then SPACE then a filename then ENTER to run a specific test file.
|
90
94
|
Type s then ENTER to stop currently running test files.
|
91
95
|
Type k then ENTER to kill currently running test files.
|
92
96
|
Type p then ENTER to re-run currently passing test files.
|
93
97
|
Type f then ENTER to re-run currently failing test files.
|
94
98
|
Type l then ENTER to list currently failing test files.
|
95
|
-
Type
|
99
|
+
Type b then ENTER to re-absorb test execution overhead.
|
96
100
|
Type h then ENTER to see this help message.
|
97
101
|
Type q then ENTER to quit.
|
98
102
|
HELP
|
data/lib/tork/driver.rb
CHANGED
@@ -25,11 +25,11 @@ class Driver < Server
|
|
25
25
|
pclose @engine
|
26
26
|
end
|
27
27
|
|
28
|
-
def
|
28
|
+
def test!
|
29
29
|
test_files_found = false
|
30
30
|
Dir.glob(ALL_TEST_FILE_GLOBS) do |test_file|
|
31
31
|
next if overhead_file? test_file
|
32
|
-
|
32
|
+
test test_file
|
33
33
|
test_files_found = true
|
34
34
|
end
|
35
35
|
tell @client, 'There are no test files to run.' unless test_files_found
|
@@ -59,8 +59,8 @@ protected
|
|
59
59
|
|
60
60
|
# reabsorb text execution overhead if overhead files changed
|
61
61
|
if overhead_file? changed_file
|
62
|
-
send @clients, [:
|
63
|
-
|
62
|
+
send @clients, [:boot!, changed_file]
|
63
|
+
boot!
|
64
64
|
else
|
65
65
|
run_non_overhead_test_files find_dependent_test_files(changed_file)
|
66
66
|
end
|
@@ -74,7 +74,7 @@ protected
|
|
74
74
|
private
|
75
75
|
|
76
76
|
def run_non_overhead_test_files test_files
|
77
|
-
|
77
|
+
test test_files.reject {|f| overhead_file? f }
|
78
78
|
end
|
79
79
|
|
80
80
|
def overhead_file? file
|
data/lib/tork/engine.rb
CHANGED
@@ -25,18 +25,22 @@ class Engine < Server
|
|
25
25
|
pclose @master
|
26
26
|
end
|
27
27
|
|
28
|
-
def
|
28
|
+
def boot!
|
29
29
|
@master.reconnect
|
30
30
|
|
31
31
|
# resume running all previously running test files and
|
32
32
|
# all previously failed test files in the new master
|
33
|
-
|
33
|
+
resumable = @running_test_files + @failed_test_files
|
34
34
|
@running_test_files.clear
|
35
|
-
|
35
|
+
test resumable
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
39
|
-
|
38
|
+
def test test_file, *line_numbers
|
39
|
+
# a list of tests was passed in for the first argument
|
40
|
+
if test_file.respond_to? :each and line_numbers.empty?
|
41
|
+
test_file.each {|args| test(*args) }
|
42
|
+
|
43
|
+
elsif File.exist? test_file and @running_test_files.add? test_file
|
40
44
|
if line_numbers.empty?
|
41
45
|
line_numbers = find_changed_line_numbers(test_file)
|
42
46
|
else
|
@@ -47,11 +51,15 @@ class Engine < Server
|
|
47
51
|
end
|
48
52
|
end
|
49
53
|
|
50
|
-
def
|
51
|
-
|
54
|
+
def test?
|
55
|
+
if @running_test_files.empty?
|
56
|
+
tell @client, 'There are no running test files to list.'
|
57
|
+
else
|
58
|
+
tell @client, @running_test_files.sort, false
|
59
|
+
end
|
52
60
|
end
|
53
61
|
|
54
|
-
def
|
62
|
+
def stop signal=nil
|
55
63
|
if @running_test_files.empty?
|
56
64
|
tell @client, 'There are no running test files to stop.'
|
57
65
|
else
|
@@ -60,23 +68,31 @@ class Engine < Server
|
|
60
68
|
end
|
61
69
|
end
|
62
70
|
|
63
|
-
def
|
71
|
+
def pass!
|
64
72
|
if @passed_test_files.empty?
|
65
73
|
tell @client, 'There are no passed test files to re-run.'
|
66
74
|
else
|
67
|
-
|
75
|
+
test @passed_test_files
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def pass?
|
80
|
+
if @passed_test_files.empty?
|
81
|
+
tell @client, 'There are no passed test files to list.'
|
82
|
+
else
|
83
|
+
tell @client, @passed_test_files.sort, false
|
68
84
|
end
|
69
85
|
end
|
70
86
|
|
71
|
-
def
|
87
|
+
def fail!
|
72
88
|
if @failed_test_files.empty?
|
73
89
|
tell @client, 'There are no failed test files to re-run.'
|
74
90
|
else
|
75
|
-
|
91
|
+
test @failed_test_files
|
76
92
|
end
|
77
93
|
end
|
78
94
|
|
79
|
-
def
|
95
|
+
def fail?
|
80
96
|
if @failed_test_files.empty?
|
81
97
|
tell @client, 'There are no failed test files to list.'
|
82
98
|
else
|
@@ -100,14 +116,14 @@ protected
|
|
100
116
|
@recently_failed_test_files.add file
|
101
117
|
was_pass = @passed_test_files.delete? file
|
102
118
|
now_fail = @failed_test_files.add? file
|
103
|
-
send @clients, [:
|
119
|
+
send @clients, [:fail!, file, message] if was_pass and now_fail
|
104
120
|
|
105
121
|
elsif line_numbers.empty?
|
106
122
|
# only whole test file runs should qualify as pass
|
107
123
|
@recently_passed_test_files.add file
|
108
124
|
was_fail = @failed_test_files.delete? file
|
109
125
|
now_pass = @passed_test_files.add? file
|
110
|
-
send @clients, [:
|
126
|
+
send @clients, [:pass!, file, message] if was_fail and now_pass
|
111
127
|
end
|
112
128
|
|
113
129
|
# notify user when all test files have finished running
|
@@ -119,7 +135,7 @@ protected
|
|
119
135
|
@recently_failed_test_files.clear
|
120
136
|
|
121
137
|
tested = passed + failed
|
122
|
-
send @clients, [:
|
138
|
+
send @clients, [:done, tested, passed, failed]
|
123
139
|
end
|
124
140
|
end
|
125
141
|
|