specjour 0.3.0.rc2 → 0.3.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.
- data/History.markdown +10 -1
- data/README.markdown +0 -7
- data/Rakefile +1 -2
- data/VERSION +1 -1
- data/lib/specjour/connection.rb +5 -3
- data/lib/specjour/db_scrub.rb +8 -2
- data/lib/specjour/dispatcher.rb +3 -7
- data/lib/specjour/printer.rb +1 -1
- data/lib/specjour/rspec/marshalable_exception.rb +15 -0
- data/lib/specjour/rspec/marshalable_rspec_failure.rb +0 -14
- data/lib/specjour/rspec/runner.rb +11 -0
- data/lib/specjour/rspec.rb +27 -5
- data/lib/specjour/rspec2/distributed_formatter.rb +38 -0
- data/lib/specjour/rspec2/final_report.rb +60 -0
- data/lib/specjour/rspec2/runner.rb +12 -0
- data/lib/specjour/worker.rb +20 -13
- data/lib/specjour.rb +8 -1
- data/specjour.gemspec +10 -8
- metadata +21 -30
data/History.markdown
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
History
|
2
2
|
=======
|
3
3
|
|
4
|
-
## 0.3.0.
|
4
|
+
## 0.3.0.rc3 / 2010-07-27
|
5
|
+
|
6
|
+
* [fixed] Cucumber prints elapsed time
|
7
|
+
|
8
|
+
* [added] Print hostname for each hostname (closes gh-8)
|
9
|
+
|
10
|
+
* [added] Rspec2 support
|
11
|
+
|
12
|
+
|
13
|
+
## 0.3.0.rc2 / 2010-07-14
|
5
14
|
|
6
15
|
* [fixed] Cucumber compatibility with 0.8.5
|
7
16
|
|
data/README.markdown
CHANGED
@@ -2,17 +2,10 @@
|
|
2
2
|
|
3
3
|
## FUCK SETI. Run specs with your spare CPU cycles.
|
4
4
|
|
5
|
-
_Distribute your spec suite amongst your LAN via Bonjour._
|
6
|
-
|
7
5
|
1. Spin up a manager on each machine that can run your specs.
|
8
6
|
2. Start a dispatcher in your project directory.
|
9
7
|
3. Say farewell to your long coffee breaks.
|
10
8
|
|
11
|
-
## Requirements
|
12
|
-
* Bonjour or DNSSD (the capability and the gem)
|
13
|
-
* Rsync (system command used)
|
14
|
-
* Rspec (officially v1.3.0)
|
15
|
-
|
16
9
|
## Installation
|
17
10
|
gem install specjour
|
18
11
|
|
data/Rakefile
CHANGED
@@ -11,8 +11,7 @@ begin
|
|
11
11
|
gem.homepage = "http://github.com/sandro/specjour"
|
12
12
|
gem.authors = ["Sandro Turriate"]
|
13
13
|
gem.add_dependency "dnssd", "1.3.1"
|
14
|
-
gem.add_dependency "
|
15
|
-
gem.add_dependency "thor", "0.13.6"
|
14
|
+
gem.add_dependency "thor", "~>0.13.4"
|
16
15
|
gem.add_development_dependency "rspec", "1.3.0"
|
17
16
|
gem.add_development_dependency "rr", ">=0.10.11"
|
18
17
|
gem.add_development_dependency "yard", ">=0.5.3"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.0.
|
1
|
+
0.3.0.rc3
|
data/lib/specjour/connection.rb
CHANGED
@@ -52,7 +52,7 @@ module Specjour
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
def puts(arg)
|
55
|
+
def puts(arg='')
|
56
56
|
print(arg << "\n")
|
57
57
|
end
|
58
58
|
|
@@ -78,8 +78,10 @@ module Specjour
|
|
78
78
|
def will_reconnect(&block)
|
79
79
|
block.call
|
80
80
|
rescue SystemCallError => error
|
81
|
-
|
82
|
-
|
81
|
+
unless Specjour.interrupted?
|
82
|
+
reconnect
|
83
|
+
retry
|
84
|
+
end
|
83
85
|
end
|
84
86
|
end
|
85
87
|
end
|
data/lib/specjour/db_scrub.rb
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
module Specjour
|
2
2
|
module DbScrub
|
3
3
|
require 'rake'
|
4
|
-
|
5
|
-
|
4
|
+
if defined?(Rails) && Rails.version =~ /^3/
|
5
|
+
task(:environment) {}
|
6
|
+
load 'rails/tasks/misc.rake'
|
7
|
+
load 'active_record/railties/databases.rake'
|
8
|
+
else
|
9
|
+
load 'tasks/misc.rake'
|
10
|
+
load 'tasks/databases.rake'
|
11
|
+
end
|
6
12
|
|
7
13
|
extend self
|
8
14
|
|
data/lib/specjour/dispatcher.rb
CHANGED
@@ -4,11 +4,6 @@ module Specjour
|
|
4
4
|
Thread.abort_on_exception = true
|
5
5
|
include SocketHelper
|
6
6
|
|
7
|
-
class << self
|
8
|
-
attr_accessor :interrupted
|
9
|
-
alias interrupted? interrupted
|
10
|
-
end
|
11
|
-
|
12
7
|
attr_reader :project_alias, :managers, :manager_threads, :hosts, :options, :all_tests
|
13
8
|
attr_accessor :worker_size, :project_path
|
14
9
|
|
@@ -26,7 +21,6 @@ module Specjour
|
|
26
21
|
gather_managers
|
27
22
|
rsync_daemon.start
|
28
23
|
dispatch_work
|
29
|
-
Signal.trap('INT') { Dispatcher.interrupted = true; exit 1 }
|
30
24
|
printer.join if dispatching_tests?
|
31
25
|
wait_on_managers
|
32
26
|
exit printer.exit_status
|
@@ -73,8 +67,10 @@ module Specjour
|
|
73
67
|
end
|
74
68
|
|
75
69
|
def dispatch_work
|
76
|
-
puts "Managers found: #{managers.size}"
|
77
70
|
puts "Workers found: #{worker_size}"
|
71
|
+
managers.each do |manager|
|
72
|
+
puts "#{manager.hostname} (#{manager.worker_size})"
|
73
|
+
end
|
78
74
|
printer.worker_size = worker_size
|
79
75
|
command_managers(true) { |m| m.dispatch }
|
80
76
|
end
|
data/lib/specjour/printer.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
module Specjour::Rspec
|
2
|
+
class MarshalableException
|
3
|
+
attr_accessor :message, :backtrace, :class_name
|
4
|
+
|
5
|
+
def initialize(exception)
|
6
|
+
self.class_name = exception.class.name
|
7
|
+
self.message = exception.message
|
8
|
+
self.backtrace = exception.backtrace
|
9
|
+
end
|
10
|
+
|
11
|
+
def class
|
12
|
+
@class ||= OpenStruct.new :name => class_name
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -18,18 +18,4 @@ module Specjour
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
21
|
-
|
22
|
-
class MarshalableException
|
23
|
-
attr_accessor :message, :backtrace, :class_name
|
24
|
-
|
25
|
-
def initialize(exception)
|
26
|
-
self.class_name = exception.class.name
|
27
|
-
self.message = exception.message
|
28
|
-
self.backtrace = exception.backtrace
|
29
|
-
end
|
30
|
-
|
31
|
-
def class
|
32
|
-
@class ||= OpenStruct.new :name => class_name
|
33
|
-
end
|
34
|
-
end
|
35
21
|
end
|
data/lib/specjour/rspec.rb
CHANGED
@@ -1,10 +1,32 @@
|
|
1
1
|
module Specjour
|
2
2
|
module Rspec
|
3
|
-
|
4
|
-
|
3
|
+
def self.load_rspec1
|
4
|
+
require 'spec'
|
5
|
+
require 'spec/runner/formatter/base_text_formatter'
|
6
|
+
|
7
|
+
require 'specjour/rspec/distributed_formatter'
|
8
|
+
require 'specjour/rspec/final_report'
|
9
|
+
require 'specjour/rspec/marshalable_exception'
|
10
|
+
require 'specjour/rspec/preloader'
|
11
|
+
require 'specjour/rspec/runner'
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.load_rspec2
|
15
|
+
require 'rspec/core'
|
16
|
+
::Rspec::Core::Runner.disable_autorun!
|
17
|
+
|
18
|
+
require 'specjour/rspec/marshalable_exception'
|
19
|
+
require 'specjour/rspec/preloader'
|
20
|
+
require 'specjour/rspec2/distributed_formatter'
|
21
|
+
require 'specjour/rspec2/final_report'
|
22
|
+
require 'specjour/rspec2/runner'
|
23
|
+
end
|
24
|
+
|
25
|
+
begin
|
26
|
+
load_rspec2
|
27
|
+
rescue LoadError
|
28
|
+
load_rspec1
|
29
|
+
end
|
5
30
|
|
6
|
-
require 'specjour/rspec/distributed_formatter'
|
7
|
-
require 'specjour/rspec/final_report'
|
8
|
-
require 'specjour/rspec/preloader'
|
9
31
|
end
|
10
32
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Specjour::Rspec
|
2
|
+
class DistributedFormatter < ::RSpec::Core::Formatters::ProgressFormatter
|
3
|
+
|
4
|
+
def metadata_for_examples
|
5
|
+
examples.map do |example|
|
6
|
+
metadata = example.metadata
|
7
|
+
{
|
8
|
+
:execution_result => marshalable_execution_result(example.execution_result),
|
9
|
+
:description => metadata[:description],
|
10
|
+
:file_path => metadata[:file_path],
|
11
|
+
:full_description => metadata[:full_description],
|
12
|
+
:line_number => metadata[:line_number],
|
13
|
+
:location => metadata[:location]
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def noop
|
19
|
+
end
|
20
|
+
alias dump_pending noop
|
21
|
+
alias dump_failures noop
|
22
|
+
alias start_dump noop
|
23
|
+
|
24
|
+
def dump_summary(*args)
|
25
|
+
output.send_message :rspec_summary=, metadata_for_examples
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def marshalable_execution_result(execution_result)
|
31
|
+
if exception = execution_result[:exception_encountered]
|
32
|
+
execution_result[:exception_encountered] = MarshalableException.new(exception)
|
33
|
+
end
|
34
|
+
execution_result
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Specjour::Rspec
|
2
|
+
class FinalReport
|
3
|
+
attr_reader :examples
|
4
|
+
attr_reader :duration
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@examples = []
|
8
|
+
@duration = 0.0
|
9
|
+
end
|
10
|
+
|
11
|
+
def add(data)
|
12
|
+
if data.respond_to?(:has_key?) && data.has_key?(:duration)
|
13
|
+
self.duration = data[:duration]
|
14
|
+
else
|
15
|
+
metadata_for_examples(data)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def duration=(value)
|
20
|
+
@duration = value.to_f if duration < value.to_f
|
21
|
+
end
|
22
|
+
|
23
|
+
def exit_status
|
24
|
+
formatter.failed_examples.empty?
|
25
|
+
end
|
26
|
+
|
27
|
+
def metadata_for_examples(metadata_collection)
|
28
|
+
examples.concat(
|
29
|
+
metadata_collection.map do |partial_metadata|
|
30
|
+
example = ::Rspec::Core::Example.allocate
|
31
|
+
metadata = ::Rspec::Core::Metadata.new
|
32
|
+
metadata.merge! partial_metadata
|
33
|
+
example.instance_variable_set(:@metadata, metadata)
|
34
|
+
example
|
35
|
+
end
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
def formatter
|
40
|
+
@formatter ||= new_progress_formatter
|
41
|
+
end
|
42
|
+
|
43
|
+
def summarize
|
44
|
+
if examples.size > 0
|
45
|
+
formatter.dump_summary(duration, formatter.example_count, formatter.failure_count, formatter.pending_count)
|
46
|
+
formatter.dump_pending
|
47
|
+
formatter.dump_failures
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
protected
|
52
|
+
def new_progress_formatter
|
53
|
+
new_formatter = ::Rspec::Core::Formatters::ProgressFormatter.new($stdout)
|
54
|
+
new_formatter.instance_variable_set(:@examples, examples)
|
55
|
+
new_formatter.instance_variable_set(:@example_count, examples.size)
|
56
|
+
Rspec.configuration.color_enabled = true
|
57
|
+
new_formatter
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Specjour::Rspec::Runner
|
2
|
+
def self.run(spec, output)
|
3
|
+
reset
|
4
|
+
options = ['--format=Specjour::Rspec::DistributedFormatter', spec]
|
5
|
+
::Rspec::Core::Runner.run options, $stderr, output
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.reset
|
9
|
+
::Rspec.instance_variable_set(:@world, nil)
|
10
|
+
::Rspec.configuration.instance_variable_set(:@formatter, nil)
|
11
|
+
end
|
12
|
+
end
|
data/lib/specjour/worker.rb
CHANGED
@@ -34,15 +34,16 @@ module Specjour
|
|
34
34
|
def run_tests
|
35
35
|
load_app
|
36
36
|
Configuration.after_fork.call
|
37
|
-
|
37
|
+
run_times = Hash.new(0)
|
38
38
|
|
39
39
|
while test = connection.next_test
|
40
40
|
time = Benchmark.realtime do
|
41
41
|
run_test test
|
42
42
|
end
|
43
|
-
|
43
|
+
run_times[test_type(test)] += time
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
|
+
send_run_times(run_times)
|
46
47
|
connection.send_message(:done)
|
47
48
|
connection.disconnect
|
48
49
|
end
|
@@ -60,6 +61,8 @@ module Specjour
|
|
60
61
|
def load_app
|
61
62
|
Rspec::Preloader.load(preload_spec) if preload_spec
|
62
63
|
Cucumber::Preloader.load(preload_feature) if preload_feature
|
64
|
+
rescue StandardError => exception
|
65
|
+
$stderr.puts "Caught exception: #{exception.class} #{exception.message}\nProceeding..."
|
63
66
|
end
|
64
67
|
|
65
68
|
def printer_connection
|
@@ -74,7 +77,7 @@ module Specjour
|
|
74
77
|
|
75
78
|
def run_test(test)
|
76
79
|
print_status(test)
|
77
|
-
if test
|
80
|
+
if test_type(test) == :cucumber
|
78
81
|
run_feature test
|
79
82
|
else
|
80
83
|
run_spec test
|
@@ -87,18 +90,22 @@ module Specjour
|
|
87
90
|
end
|
88
91
|
|
89
92
|
def run_spec(spec)
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
93
|
+
Specjour::Rspec::Runner.run(spec, connection)
|
94
|
+
end
|
95
|
+
|
96
|
+
def send_run_times(run_times)
|
97
|
+
[:rspec, :cucumber].each do |type|
|
98
|
+
connection.send_message(:"#{type}_summary=", {:duration => sprintf("%6f", run_times[type])})
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_type(test)
|
103
|
+
test =~ /\.feature$/ ? :cucumber : :rspec
|
97
104
|
end
|
98
105
|
|
99
106
|
def set_env_variables
|
100
|
-
ENV['RSPEC_COLOR']
|
101
|
-
ENV['TEST_ENV_NUMBER']
|
107
|
+
ENV['RSPEC_COLOR'] ||= 'true'
|
108
|
+
ENV['TEST_ENV_NUMBER'] ||= number.to_s
|
102
109
|
end
|
103
110
|
end
|
104
111
|
end
|
data/lib/specjour.rb
CHANGED
@@ -28,9 +28,14 @@ module Specjour
|
|
28
28
|
autoload :Cucumber, 'specjour/cucumber'
|
29
29
|
autoload :Rspec, 'specjour/rspec'
|
30
30
|
|
31
|
-
VERSION = "0.3.0.
|
31
|
+
VERSION = "0.3.0.rc3".freeze
|
32
32
|
HOOKS_PATH = ".specjour/hooks.rb"
|
33
33
|
|
34
|
+
class << self
|
35
|
+
attr_accessor :interrupted
|
36
|
+
alias interrupted? interrupted
|
37
|
+
end
|
38
|
+
|
34
39
|
def self.logger
|
35
40
|
@logger ||= new_logger
|
36
41
|
end
|
@@ -53,4 +58,6 @@ module Specjour
|
|
53
58
|
PROGRAM_NAME = $PROGRAM_NAME # keep a reference of the original program name
|
54
59
|
|
55
60
|
GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=)
|
61
|
+
|
62
|
+
Signal.trap('INT') { Specjour.interrupted = true; exit 1 }
|
56
63
|
end
|
data/specjour.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{specjour}
|
8
|
-
s.version = "0.3.0.
|
8
|
+
s.version = "0.3.0.rc3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Sandro Turriate"]
|
12
|
-
s.date = %q{2010-07-
|
12
|
+
s.date = %q{2010-07-27}
|
13
13
|
s.default_executable = %q{specjour}
|
14
14
|
s.description = %q{Distribute your spec suite amongst your LAN via Bonjour.}
|
15
15
|
s.email = %q{sandro.turriate@gmail.com}
|
@@ -45,8 +45,13 @@ Gem::Specification.new do |s|
|
|
45
45
|
"lib/specjour/rspec.rb",
|
46
46
|
"lib/specjour/rspec/distributed_formatter.rb",
|
47
47
|
"lib/specjour/rspec/final_report.rb",
|
48
|
+
"lib/specjour/rspec/marshalable_exception.rb",
|
48
49
|
"lib/specjour/rspec/marshalable_rspec_failure.rb",
|
49
50
|
"lib/specjour/rspec/preloader.rb",
|
51
|
+
"lib/specjour/rspec/runner.rb",
|
52
|
+
"lib/specjour/rspec2/distributed_formatter.rb",
|
53
|
+
"lib/specjour/rspec2/final_report.rb",
|
54
|
+
"lib/specjour/rspec2/runner.rb",
|
50
55
|
"lib/specjour/rsync_daemon.rb",
|
51
56
|
"lib/specjour/socket_helper.rb",
|
52
57
|
"lib/specjour/worker.rb",
|
@@ -83,23 +88,20 @@ Gem::Specification.new do |s|
|
|
83
88
|
|
84
89
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
85
90
|
s.add_runtime_dependency(%q<dnssd>, ["= 1.3.1"])
|
86
|
-
s.add_runtime_dependency(%q<
|
87
|
-
s.add_runtime_dependency(%q<thor>, ["= 0.13.6"])
|
91
|
+
s.add_runtime_dependency(%q<thor>, ["~> 0.13.4"])
|
88
92
|
s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
|
89
93
|
s.add_development_dependency(%q<rr>, [">= 0.10.11"])
|
90
94
|
s.add_development_dependency(%q<yard>, [">= 0.5.3"])
|
91
95
|
else
|
92
96
|
s.add_dependency(%q<dnssd>, ["= 1.3.1"])
|
93
|
-
s.add_dependency(%q<
|
94
|
-
s.add_dependency(%q<thor>, ["= 0.13.6"])
|
97
|
+
s.add_dependency(%q<thor>, ["~> 0.13.4"])
|
95
98
|
s.add_dependency(%q<rspec>, ["= 1.3.0"])
|
96
99
|
s.add_dependency(%q<rr>, [">= 0.10.11"])
|
97
100
|
s.add_dependency(%q<yard>, [">= 0.5.3"])
|
98
101
|
end
|
99
102
|
else
|
100
103
|
s.add_dependency(%q<dnssd>, ["= 1.3.1"])
|
101
|
-
s.add_dependency(%q<
|
102
|
-
s.add_dependency(%q<thor>, ["= 0.13.6"])
|
104
|
+
s.add_dependency(%q<thor>, ["~> 0.13.4"])
|
103
105
|
s.add_dependency(%q<rspec>, ["= 1.3.0"])
|
104
106
|
s.add_dependency(%q<rr>, [">= 0.10.11"])
|
105
107
|
s.add_dependency(%q<yard>, [">= 0.5.3"])
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: specjour
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 977940564
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
version: 0.3.0.
|
10
|
+
- rc3
|
11
|
+
version: 0.3.0.rc3
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Sandro Turriate
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-07-
|
19
|
+
date: 2010-07-27 00:00:00 -04:00
|
20
20
|
default_executable: specjour
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -36,39 +36,25 @@ dependencies:
|
|
36
36
|
type: :runtime
|
37
37
|
version_requirements: *id001
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
|
-
name:
|
39
|
+
name: thor
|
40
40
|
prerelease: false
|
41
41
|
requirement: &id002 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
hash:
|
47
|
-
segments:
|
48
|
-
- 0
|
49
|
-
version: "0"
|
50
|
-
type: :runtime
|
51
|
-
version_requirements: *id002
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: thor
|
54
|
-
prerelease: false
|
55
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
|
-
requirements:
|
58
|
-
- - "="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
hash: 39
|
46
|
+
hash: 35
|
61
47
|
segments:
|
62
48
|
- 0
|
63
49
|
- 13
|
64
|
-
-
|
65
|
-
version: 0.13.
|
50
|
+
- 4
|
51
|
+
version: 0.13.4
|
66
52
|
type: :runtime
|
67
|
-
version_requirements: *
|
53
|
+
version_requirements: *id002
|
68
54
|
- !ruby/object:Gem::Dependency
|
69
55
|
name: rspec
|
70
56
|
prerelease: false
|
71
|
-
requirement: &
|
57
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
72
58
|
none: false
|
73
59
|
requirements:
|
74
60
|
- - "="
|
@@ -80,11 +66,11 @@ dependencies:
|
|
80
66
|
- 0
|
81
67
|
version: 1.3.0
|
82
68
|
type: :development
|
83
|
-
version_requirements: *
|
69
|
+
version_requirements: *id003
|
84
70
|
- !ruby/object:Gem::Dependency
|
85
71
|
name: rr
|
86
72
|
prerelease: false
|
87
|
-
requirement: &
|
73
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
88
74
|
none: false
|
89
75
|
requirements:
|
90
76
|
- - ">="
|
@@ -96,11 +82,11 @@ dependencies:
|
|
96
82
|
- 11
|
97
83
|
version: 0.10.11
|
98
84
|
type: :development
|
99
|
-
version_requirements: *
|
85
|
+
version_requirements: *id004
|
100
86
|
- !ruby/object:Gem::Dependency
|
101
87
|
name: yard
|
102
88
|
prerelease: false
|
103
|
-
requirement: &
|
89
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
104
90
|
none: false
|
105
91
|
requirements:
|
106
92
|
- - ">="
|
@@ -112,7 +98,7 @@ dependencies:
|
|
112
98
|
- 3
|
113
99
|
version: 0.5.3
|
114
100
|
type: :development
|
115
|
-
version_requirements: *
|
101
|
+
version_requirements: *id005
|
116
102
|
description: Distribute your spec suite amongst your LAN via Bonjour.
|
117
103
|
email: sandro.turriate@gmail.com
|
118
104
|
executables:
|
@@ -149,8 +135,13 @@ files:
|
|
149
135
|
- lib/specjour/rspec.rb
|
150
136
|
- lib/specjour/rspec/distributed_formatter.rb
|
151
137
|
- lib/specjour/rspec/final_report.rb
|
138
|
+
- lib/specjour/rspec/marshalable_exception.rb
|
152
139
|
- lib/specjour/rspec/marshalable_rspec_failure.rb
|
153
140
|
- lib/specjour/rspec/preloader.rb
|
141
|
+
- lib/specjour/rspec/runner.rb
|
142
|
+
- lib/specjour/rspec2/distributed_formatter.rb
|
143
|
+
- lib/specjour/rspec2/final_report.rb
|
144
|
+
- lib/specjour/rspec2/runner.rb
|
154
145
|
- lib/specjour/rsync_daemon.rb
|
155
146
|
- lib/specjour/socket_helper.rb
|
156
147
|
- lib/specjour/worker.rb
|