test-loop 9.0.1 → 9.1.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.
- data/README.md +8 -18
- data/bin/test-loop +17 -10
- metadata +18 -3
data/README.md
CHANGED
@@ -53,7 +53,8 @@ As a Ruby gem:
|
|
53
53
|
|
54
54
|
As a Git clone:
|
55
55
|
|
56
|
-
gem install diff-lcs
|
56
|
+
gem install diff-lcs -v '>= 1.1.2'
|
57
|
+
gem install ansi -v '>= 1.2.2'
|
57
58
|
git clone git://github.com/sunaku/test-loop
|
58
59
|
|
59
60
|
|
@@ -155,19 +156,15 @@ you can query and modify the `Test::Loop` OpenStruct configuration as follows:
|
|
155
156
|
execution began, and (5) how many seconds it took for the overall test
|
156
157
|
execution to complete.
|
157
158
|
|
158
|
-
For example, to see on-screen-display notifications about test
|
159
|
-
|
160
|
-
terminal, add the following to your configuration file:
|
159
|
+
For example, to see on-screen-display notifications only about test
|
160
|
+
failures, add the following to your configuration file:
|
161
161
|
|
162
162
|
Test::Loop.after_each_test = lambda do |test_file, log_file, run_status, started_at, elapsed_time|
|
163
163
|
unless run_status.success?
|
164
|
-
# display the failure log
|
165
|
-
divider = '#' * 80
|
166
|
-
STDERR.print [divider, File.read(log_file), divider, nil].join("\n")
|
167
|
-
|
168
|
-
# notify user about failure
|
169
164
|
title = 'FAIL at %s in %0.1fs' % [started_at.strftime('%r'), elapsed_time]
|
165
|
+
|
170
166
|
message = test_file
|
167
|
+
|
171
168
|
Thread.new do # run in background
|
172
169
|
system 'notify-send', '-i', 'dialog-error', title, message or
|
173
170
|
system 'growlnotify', '-a', 'Xcode', '-m', message, title or
|
@@ -177,19 +174,12 @@ you can query and modify the `Test::Loop` OpenStruct configuration as follows:
|
|
177
174
|
end
|
178
175
|
|
179
176
|
For example, to see on-screen-display notifications about completed test
|
180
|
-
runs
|
181
|
-
|
177
|
+
runs, regardless of whether they passed or failed, add the following to your
|
178
|
+
configuration file:
|
182
179
|
|
183
180
|
Test::Loop.after_each_test = lambda do |test_file, log_file, run_status, started_at, elapsed_time|
|
184
181
|
success = run_status.success?
|
185
182
|
|
186
|
-
# display the failure log
|
187
|
-
unless success
|
188
|
-
divider = '#' * 80
|
189
|
-
STDERR.print [divider, File.read(log_file), divider, nil].join("\n")
|
190
|
-
end
|
191
|
-
|
192
|
-
# notify the user about test completion
|
193
183
|
title = '%s at %s in %0.1fs' %
|
194
184
|
[success ? 'PASS' : 'FAIL', started_at.strftime('%X'), elapsed_time]
|
195
185
|
|
data/bin/test-loop
CHANGED
@@ -24,6 +24,7 @@
|
|
24
24
|
|
25
25
|
require 'ostruct'
|
26
26
|
require 'diff/lcs'
|
27
|
+
require 'ansi'
|
27
28
|
|
28
29
|
module Test
|
29
30
|
Loop = OpenStruct.new
|
@@ -37,8 +38,8 @@ module Test
|
|
37
38
|
# source files that correspond to test files
|
38
39
|
'{lib,app}/**/*.rb' => lambda do |path|
|
39
40
|
extn = File.extname(path)
|
40
|
-
|
41
|
-
"{test,spec}/**/#{
|
41
|
+
base = File.basename(path, extn)
|
42
|
+
"{test,spec}/**/#{base}_{test,spec}#{extn}"
|
42
43
|
end,
|
43
44
|
|
44
45
|
# the actual test files themselves
|
@@ -55,7 +56,7 @@ module Test
|
|
55
56
|
Loop.before_each_test = lambda do |test_file, log_file, test_names|
|
56
57
|
unless test_names.empty?
|
57
58
|
test_name_pattern = test_names.map do |name|
|
58
|
-
# sanitize string
|
59
|
+
# sanitize string interpolations and invalid method name characters
|
59
60
|
name.gsub(/\#\{.*?\}/, ' ').strip.gsub(/\W+/, '.*')
|
60
61
|
end.join('|')
|
61
62
|
|
@@ -208,15 +209,21 @@ module Test
|
|
208
209
|
notify "TEST #{test_file}"
|
209
210
|
|
210
211
|
# wait for worker to finish
|
211
|
-
|
212
|
-
|
213
|
-
rescue Errno::ECHILD
|
214
|
-
# worker finished and the OS has forgotten about it already
|
215
|
-
end
|
212
|
+
Process.waitpid worker_pid
|
213
|
+
run_status = $?
|
216
214
|
elapsed_time = Time.now - @last_ran_at
|
217
215
|
|
218
|
-
|
219
|
-
|
216
|
+
# report test results along with any failure logs
|
217
|
+
if run_status.success?
|
218
|
+
notify ANSI::Code.green("PASS #{test_file}")
|
219
|
+
else
|
220
|
+
notify ANSI::Code.red("FAIL #{test_file}")
|
221
|
+
STDERR.print File.read(log_file)
|
222
|
+
end
|
223
|
+
|
224
|
+
after_each_test.call \
|
225
|
+
test_file, log_file, run_status, @last_ran_at, elapsed_time
|
226
|
+
|
220
227
|
@running_files_lock.synchronize { @running_files.delete test_file }
|
221
228
|
end
|
222
229
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 9
|
7
|
-
- 0
|
8
7
|
- 1
|
9
|
-
|
8
|
+
- 0
|
9
|
+
version: 9.1.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Suraj N. Kurapati
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-02-
|
17
|
+
date: 2011-02-23 00:00:00 -08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -32,6 +32,21 @@ dependencies:
|
|
32
32
|
version: 1.1.2
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: ansi
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
segments:
|
44
|
+
- 1
|
45
|
+
- 2
|
46
|
+
- 2
|
47
|
+
version: 1.2.2
|
48
|
+
type: :runtime
|
49
|
+
version_requirements: *id002
|
35
50
|
description:
|
36
51
|
email:
|
37
52
|
executables:
|