tork 18.2.2 → 18.2.3
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/HISTORY.markdown +20 -0
- data/LICENSE +1 -0
- data/README.markdown +1 -2
- data/bin/tork +12 -16
- data/bin/tork-driver +1 -1
- data/bin/tork-engine +1 -1
- data/bin/tork-herald +1 -1
- data/bin/tork-master +1 -1
- data/lib/tork/master.rb +3 -3
- data/lib/tork/server.rb +7 -9
- data/lib/tork/version.rb +1 -1
- data/man/man1/tork-driver.1 +1 -1
- data/man/man1/tork-engine.1 +1 -1
- data/man/man1/tork-herald.1 +1 -1
- data/man/man1/tork-master.1 +1 -1
- data/man/man1/tork.1 +1 -1
- data/tork.gemspec +3 -2
- metadata +7 -7
data/HISTORY.markdown
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
## Version 18.2.3 (2012-09-26)
|
2
|
+
|
3
|
+
Patch:
|
4
|
+
|
5
|
+
* Restored support for building Tork from its gemspec under Ruby 1.8.
|
6
|
+
Thanks to Ohno Shin'ichi for reporting this issue and contributing a
|
7
|
+
preliminary fix.
|
8
|
+
|
9
|
+
* Add resilience against failed command dispatch in `Tork::Server#loop()`.
|
10
|
+
|
11
|
+
Other:
|
12
|
+
|
13
|
+
* It's not worth rescuing Interrupt only to exit silently.
|
14
|
+
Let the user see stack traces when they press Control-C.
|
15
|
+
|
16
|
+
* Update old comments about SIGCHLD handler, which was
|
17
|
+
replaced by reaping threads quite a few releases ago.
|
18
|
+
|
19
|
+
* Use $0 instead of hard-coding the program name.
|
20
|
+
|
1
21
|
## Version 18.2.2 (2012-07-11)
|
2
22
|
|
3
23
|
Patch:
|
data/LICENSE
CHANGED
@@ -18,6 +18,7 @@ Thanks to 2012 David Burrows <david@imergent.com>
|
|
18
18
|
Thanks to 2012 Bjørn Trondsen <contact@sharagoz.com>
|
19
19
|
Thanks to 2012 NagaChaitanya Vellanki <me@chaitanyavellanki.com>
|
20
20
|
Thanks to 2012 Jesse Cooke <jesse@jc00ke.com>
|
21
|
+
Thanks to 2012 Ohno Shin'ichi <shin1ohno@me.com>
|
21
22
|
|
22
23
|
Permission to use, copy, modify, and/or distribute this software for any
|
23
24
|
purpose with or without fee is hereby granted, provided that the above
|
data/README.markdown
CHANGED
@@ -35,7 +35,7 @@ Tork runs your tests as they change, in parallel:
|
|
35
35
|
|
36
36
|
* You can override the modular `tork*` programs with your own in $PATH.
|
37
37
|
|
38
|
-
* Its core is written in about
|
38
|
+
* Its core is written in about 420 lines (SLOC) of pure Ruby code! :-)
|
39
39
|
|
40
40
|
### Architecture
|
41
41
|
|
@@ -71,7 +71,6 @@ tests in your saved file, simply save the file *again* without changing it.
|
|
71
71
|
To check if your system qualifies, launch `irb` and enter the following:
|
72
72
|
|
73
73
|
Process.respond_to? :fork # must be true
|
74
|
-
Signal.list.key? 'CHLD' # must be true
|
75
74
|
Signal.list.key? 'TERM' # must be true
|
76
75
|
|
77
76
|
* To make the `tork-herald` program's filesystem monitoring more efficient:
|
data/bin/tork
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
=begin =======================================================================
|
3
3
|
|
4
|
-
# TORK 1 2012-
|
4
|
+
# TORK 1 2012-09-26 18.2.3
|
5
5
|
|
6
6
|
## NAME
|
7
7
|
|
@@ -44,11 +44,11 @@ ENV['TORK_CONFIGS'] = JSON.dump(ARGV)
|
|
44
44
|
|
45
45
|
require 'tork/client'
|
46
46
|
|
47
|
-
warn
|
47
|
+
warn "#{$0}: Absorbing test execution overhead..."
|
48
48
|
@driver = Tork::Client::Transceiver.new('tork-driver') do |event, *details|
|
49
49
|
case event_sym = event.to_sym
|
50
|
-
when :load then warn
|
51
|
-
when :over then warn
|
50
|
+
when :load then warn "#{$0}: Overhead absorbed. Ready for testing!"
|
51
|
+
when :over then warn "#{$0}: Reabsorbing changed overhead files..."
|
52
52
|
else
|
53
53
|
test_file, line_numbers, log_file, worker_number, exit_status = details
|
54
54
|
message = [event.upcase, [test_file, *line_numbers].join(':'),
|
@@ -78,20 +78,16 @@ COMMANDS = {
|
|
78
78
|
'q' => :quit,
|
79
79
|
}
|
80
80
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
warn "tork: Type #{k} then ENTER to #{cmd.to_s.tr('_', ' ')}."
|
90
|
-
end
|
81
|
+
while key = STDIN.gets
|
82
|
+
if command = COMMANDS[key.strip]
|
83
|
+
warn "#{$0}: Sending #{command.to_s.inspect} command..."
|
84
|
+
@driver.send [command]
|
85
|
+
break if command == :quit
|
86
|
+
else # invalid command
|
87
|
+
COMMANDS.each do |key, cmd|
|
88
|
+
warn "#{$0}: Type #{key} then ENTER to #{cmd.to_s.tr('_', ' ')}."
|
91
89
|
end
|
92
90
|
end
|
93
|
-
rescue Interrupt
|
94
|
-
# forced quit
|
95
91
|
end
|
96
92
|
|
97
93
|
Process.waitall
|
data/bin/tork-driver
CHANGED
data/bin/tork-engine
CHANGED
data/bin/tork-herald
CHANGED
data/bin/tork-master
CHANGED
data/lib/tork/master.rb
CHANGED
@@ -57,7 +57,7 @@ class Master < Server
|
|
57
57
|
# after loading the user's test file, the at_exit() hook of the user's
|
58
58
|
# testing framework will take care of running the tests and reflecting
|
59
59
|
# any failures in the worker process' exit status, which will then be
|
60
|
-
# handled by the
|
60
|
+
# handled by the reaping thread registered in the master process (below)
|
61
61
|
Kernel.load test_file if test_file.end_with? '.rb'
|
62
62
|
end
|
63
63
|
|
@@ -65,7 +65,7 @@ class Master < Server
|
|
65
65
|
@client.send @command
|
66
66
|
|
67
67
|
# wait for the worker to finish and report its status to the client
|
68
|
-
Thread.new do
|
68
|
+
Thread.new do # the reaping thread
|
69
69
|
worker_status = Process.wait2(worker_pid).last
|
70
70
|
command = @command_by_worker_pid.delete(worker_pid)
|
71
71
|
@worker_number_pool.push command.last
|
@@ -75,7 +75,7 @@ class Master < Server
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def stop
|
78
|
-
#
|
78
|
+
# the reaping threads registered above will reap these killed workers
|
79
79
|
Process.kill :SIGTERM, *@command_by_worker_pid.keys.map {|pid| -pid }
|
80
80
|
rescue ArgumentError, SystemCallError
|
81
81
|
# some workers might have already exited before we sent them the signal
|
data/lib/tork/server.rb
CHANGED
@@ -16,18 +16,16 @@ class Server
|
|
16
16
|
STDOUT.reopen(STDERR).sync = true
|
17
17
|
|
18
18
|
Client::Receiver.new(STDIN) do |command|
|
19
|
-
|
20
|
-
if respond_to? method and method != __method__ # prevent loops
|
19
|
+
if command.first != __method__ # prevent loops
|
21
20
|
@command = command
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
begin
|
22
|
+
__send__(*command)
|
23
|
+
rescue => error
|
24
|
+
warn "#{$0}: #{error}"
|
25
|
+
warn error.backtrace.join("\n")
|
26
|
+
end
|
25
27
|
end
|
26
28
|
end.join
|
27
|
-
rescue Interrupt
|
28
|
-
# forced quit
|
29
|
-
ensure
|
30
|
-
Process.waitall
|
31
29
|
end
|
32
30
|
|
33
31
|
end
|
data/lib/tork/version.rb
CHANGED
data/man/man1/tork-driver.1
CHANGED
data/man/man1/tork-engine.1
CHANGED
data/man/man1/tork-herald.1
CHANGED
data/man/man1/tork-master.1
CHANGED
data/man/man1/tork.1
CHANGED
data/tork.gemspec
CHANGED
@@ -6,8 +6,9 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.name = 'tork'
|
7
7
|
s.version = Tork::VERSION
|
8
8
|
s.authors,
|
9
|
-
s.email = File.read('LICENSE'
|
10
|
-
|
9
|
+
s.email = File.read(*['LICENSE',
|
10
|
+
({:encoding => 'utf-8'} if RUBY_VERSION >= '1.9')
|
11
|
+
].compact).scan(/Copyright \d+ (.+) <(.+?)>/).transpose
|
11
12
|
s.homepage = 'http://github.com/sunaku/tork'
|
12
13
|
s.summary = 'test with fork'
|
13
14
|
s.description = 'Runs your tests as they change, in parallel.'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tork
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 18.2.
|
4
|
+
version: 18.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-09-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: binman
|
@@ -166,11 +166,11 @@ files:
|
|
166
166
|
- lib/tork/server.rb
|
167
167
|
- lib/tork/version.rb
|
168
168
|
- tork.gemspec
|
169
|
-
- man/man1/tork-master.1
|
170
|
-
- man/man1/tork.1
|
171
|
-
- man/man1/tork-engine.1
|
172
169
|
- man/man1/tork-herald.1
|
170
|
+
- man/man1/tork-engine.1
|
171
|
+
- man/man1/tork-master.1
|
173
172
|
- man/man1/tork-driver.1
|
173
|
+
- man/man1/tork.1
|
174
174
|
homepage: http://github.com/sunaku/tork
|
175
175
|
licenses: []
|
176
176
|
post_install_message:
|
@@ -185,7 +185,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
185
185
|
version: '0'
|
186
186
|
segments:
|
187
187
|
- 0
|
188
|
-
hash:
|
188
|
+
hash: 2002680833994737282
|
189
189
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
190
190
|
none: false
|
191
191
|
requirements:
|
@@ -194,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
194
|
version: '0'
|
195
195
|
segments:
|
196
196
|
- 0
|
197
|
-
hash:
|
197
|
+
hash: 2002680833994737282
|
198
198
|
requirements: []
|
199
199
|
rubyforge_project:
|
200
200
|
rubygems_version: 1.8.23
|