specjour 2.0.0.rc2 → 2.0.0.rc3
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.
- checksums.yaml +4 -4
- data/lib/specjour.rb +1 -2
- data/lib/specjour/formatter.rb +8 -1
- data/lib/specjour/listener.rb +11 -2
- data/lib/specjour/loader.rb +15 -3
- data/lib/specjour/printer.rb +8 -13
- data/lib/specjour/worker.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18afbf7019ee84aeaa6eaa20f523d38c9e3f67c5
|
4
|
+
data.tar.gz: 5c190741ea65714a23579692ec30bc28bd0c5dcb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1da69aec4f91b7caeda8c5bb80877dda5c712b9906d7f352433f8d214964ab17b9e5d6a2c7c7c922ca2a9bb2f0bae1527853fb619d0f46c9a15fd90f12a341ca
|
7
|
+
data.tar.gz: 51a9464cabf12348591e919b5b298cd798daef7d5ee9eb4ecba5c0543f622a8f4fea9c00385c410f7faac3fb205895a61842722fb8ad3e04dfe36017dafad618
|
data/lib/specjour.rb
CHANGED
@@ -30,10 +30,9 @@ module Specjour
|
|
30
30
|
autoload :SocketHelper, 'specjour/socket_helper'
|
31
31
|
autoload :Worker, 'specjour/worker'
|
32
32
|
|
33
|
-
autoload :Cucumber, 'specjour/cucumber'
|
34
33
|
autoload :RSpec, 'specjour/rspec'
|
35
34
|
|
36
|
-
VERSION ||= "2.0.0.
|
35
|
+
VERSION ||= "2.0.0.rc3"
|
37
36
|
HOOKS_PATH ||= "./.specjour/hooks.rb"
|
38
37
|
PROGRAM_NAME ||= $PROGRAM_NAME # keep a reference of the original program name
|
39
38
|
Time = Time.dup
|
data/lib/specjour/formatter.rb
CHANGED
@@ -3,7 +3,7 @@ module Specjour
|
|
3
3
|
include Colors
|
4
4
|
# description, status [pending,failed,passed] file_path, line_number, exception => [class, message, backtrace]
|
5
5
|
|
6
|
-
STATUSES = Hash.new({char: "?", color: :
|
6
|
+
STATUSES = Hash.new({char: "?", color: :cyan}).merge!(
|
7
7
|
"passed" => {char: ".", color: :green},
|
8
8
|
"failed" => {char: "F", color: :red},
|
9
9
|
"error" => {char: "E", color: :magenta},
|
@@ -119,6 +119,13 @@ module Specjour
|
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
122
|
+
def report_error(message)
|
123
|
+
@error_count += 1
|
124
|
+
status_format = STATUSES["error"]
|
125
|
+
@output.print colorize(status_format[:char], status_format[:color])
|
126
|
+
@output.puts "\n#{message}\n"
|
127
|
+
end
|
128
|
+
|
122
129
|
def set_end_time!
|
123
130
|
@end_time = Time.now
|
124
131
|
end
|
data/lib/specjour/listener.rb
CHANGED
@@ -144,7 +144,7 @@ module Specjour
|
|
144
144
|
|
145
145
|
def start
|
146
146
|
$PROGRAM_NAME = program_name
|
147
|
-
log "Listener starting"
|
147
|
+
log "Listener starting pid: #{Process.pid} grp: #{Process.getpgrp} ppid: #{Process.ppid}"
|
148
148
|
write_pid
|
149
149
|
loop do
|
150
150
|
log "listening..."
|
@@ -167,7 +167,16 @@ module Specjour
|
|
167
167
|
end
|
168
168
|
|
169
169
|
def started?
|
170
|
-
|
170
|
+
process_id = pid
|
171
|
+
if process_id
|
172
|
+
begin
|
173
|
+
Process.getsid(process_id) && true
|
174
|
+
rescue Errno::ESRCH
|
175
|
+
false
|
176
|
+
end
|
177
|
+
else
|
178
|
+
false
|
179
|
+
end
|
171
180
|
end
|
172
181
|
|
173
182
|
def stop
|
data/lib/specjour/loader.rb
CHANGED
@@ -20,6 +20,7 @@ module Specjour
|
|
20
20
|
def start
|
21
21
|
Process.setsid
|
22
22
|
$PROGRAM_NAME = "specjour loader"
|
23
|
+
debug "Loader pid: #{Process.pid} ppid: #{Process.ppid}"
|
23
24
|
set_up
|
24
25
|
sync
|
25
26
|
Specjour.plugin_manager.send_task(:load_application)
|
@@ -31,9 +32,10 @@ module Specjour
|
|
31
32
|
$stderr.puts e.backtrace
|
32
33
|
$stderr.puts "\n\n"
|
33
34
|
connection.error(e)
|
35
|
+
remove_connection
|
36
|
+
kill_parent
|
34
37
|
ensure
|
35
38
|
remove_connection
|
36
|
-
log "Loader killing group #{Process.getsid}"
|
37
39
|
end
|
38
40
|
|
39
41
|
def fork_workers
|
@@ -59,12 +61,22 @@ module Specjour
|
|
59
61
|
signal = connection.get_server_done
|
60
62
|
case signal
|
61
63
|
when "INT"
|
62
|
-
|
63
|
-
Process.kill("INT", -Process.getsid)
|
64
|
+
kill_session
|
64
65
|
end
|
65
66
|
end
|
66
67
|
end
|
67
68
|
|
69
|
+
def kill_session
|
70
|
+
debug "Sending INT to session -#{Process.getsid}"
|
71
|
+
Process.kill("INT", -Process.getsid) rescue nil
|
72
|
+
end
|
73
|
+
|
74
|
+
# shut down the parent before it restarts this loader in a loop
|
75
|
+
def kill_parent
|
76
|
+
debug "Sending INT to parent -#{Process.ppid}"
|
77
|
+
Process.kill("INT", Process.ppid) rescue nil
|
78
|
+
end
|
79
|
+
|
68
80
|
def set_up
|
69
81
|
data = connection.ready({hostname: hostname, worker_size: Specjour.configuration.worker_size})
|
70
82
|
Specjour.configuration.project_name = data[:project_name]
|
data/lib/specjour/printer.rb
CHANGED
@@ -17,7 +17,7 @@ module Specjour
|
|
17
17
|
@clients = {}
|
18
18
|
@tests_to_run = []
|
19
19
|
@test_paths = options[:test_paths]
|
20
|
-
@example_size =
|
20
|
+
@example_size = nil
|
21
21
|
@machines = []
|
22
22
|
@send_threads = []
|
23
23
|
@bonjour_service = nil
|
@@ -89,7 +89,7 @@ module Specjour
|
|
89
89
|
reads = result.first
|
90
90
|
reads.each do |socket_being_read|
|
91
91
|
if socket_being_read == @server_socket
|
92
|
-
debug "adding connection"
|
92
|
+
debug "adding connection #{@send_threads.size}"
|
93
93
|
client_socket = @server_socket.accept
|
94
94
|
client_socket = Connection.wrap(client_socket)
|
95
95
|
@send_threads << Thread.new(client_socket) { |sock| serve(sock) }
|
@@ -175,6 +175,9 @@ module Specjour
|
|
175
175
|
end
|
176
176
|
IO.select([client.socket])
|
177
177
|
end
|
178
|
+
rescue => e
|
179
|
+
$stderr.puts("Serve got an Error #{e.inspect}")
|
180
|
+
raise e
|
178
181
|
end
|
179
182
|
|
180
183
|
def done
|
@@ -204,7 +207,7 @@ module Specjour
|
|
204
207
|
|
205
208
|
def register_tests(tests)
|
206
209
|
@mutex.synchronize do
|
207
|
-
if example_size ==
|
210
|
+
if example_size == nil
|
208
211
|
self.tests_to_run = run_order(tests)
|
209
212
|
self.example_size = tests_to_run.size
|
210
213
|
end
|
@@ -218,7 +221,7 @@ module Specjour
|
|
218
221
|
end
|
219
222
|
|
220
223
|
def unexpected_error(message)
|
221
|
-
|
224
|
+
Specjour.configuration.formatter.report_error(message)
|
222
225
|
end
|
223
226
|
|
224
227
|
def find_project_base_dir(directory)
|
@@ -242,10 +245,6 @@ module Specjour
|
|
242
245
|
rspec_report.add(summary)
|
243
246
|
end
|
244
247
|
|
245
|
-
def cucumber_summary=(client, summary)
|
246
|
-
cucumber_report.add(summary)
|
247
|
-
end
|
248
|
-
|
249
248
|
def add_to_profiler(test, time, host)
|
250
249
|
@mutex.synchronize do
|
251
250
|
self.profiler[test] = [time, host]
|
@@ -254,7 +253,7 @@ module Specjour
|
|
254
253
|
|
255
254
|
def disconnecting
|
256
255
|
@mutex.synchronize do
|
257
|
-
debug "DISCONNECT #{@running} #{example_size} #{examples_complete}"
|
256
|
+
debug "DISCONNECT #{@running} #{example_size.inspect} #{examples_complete.inspect}"
|
258
257
|
if @running && examples_complete == example_size
|
259
258
|
@running = false
|
260
259
|
debug "writing done"
|
@@ -277,10 +276,6 @@ module Specjour
|
|
277
276
|
@rspec_report ||= RSpec::FinalReport.new
|
278
277
|
end
|
279
278
|
|
280
|
-
def cucumber_report
|
281
|
-
@cucumber_report ||= Cucumber::FinalReport.new
|
282
|
-
end
|
283
|
-
|
284
279
|
# "test.rb" => [1.12, "host.local[2]"]
|
285
280
|
def record_performance
|
286
281
|
File.open('.specjour/performance', 'w') do |file|
|
data/lib/specjour/worker.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: specjour
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.rc3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sandro Turriate
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dnssd
|
@@ -96,7 +96,7 @@ dependencies:
|
|
96
96
|
version: '0'
|
97
97
|
description: |2
|
98
98
|
Specjour splits your RSpec suite across multiple machines, and multiple
|
99
|
-
cores per machine, to run super-parallel-fast!
|
99
|
+
cores per machine, to run super-parallel-fast!
|
100
100
|
email: sandro.turriate@gmail.com
|
101
101
|
executables:
|
102
102
|
- specjour
|