guard-test 0.3.1 → 0.4.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.
@@ -1,60 +1,75 @@
1
1
  # encoding: utf-8
2
+
2
3
  module Guard
3
4
  class Test
4
5
  class Runner
5
6
 
6
- def self.runners
7
- @runners ||= Dir.open(File.expand_path('../runners', __FILE__)).map { |filename| filename[/^(\w+)_guard_test_runner\.rb$/, 1] }.compact
8
- end
9
-
10
- def initialize(options={})
11
- @runner_name = self.class.runners.detect { |runner| runner == options[:runner] } || self.class.runners[0]
12
- @options = {
13
- :bundler => File.exist?("#{Dir.pwd}/Gemfile"),
14
- :rvm => nil,
15
- :cli => nil
7
+ def initialize(options = {})
8
+ @options = {
9
+ :bundler => File.exist?("#{Dir.pwd}/Gemfile"),
10
+ :rvm => [],
11
+ :drb => false,
12
+ :cli => ""
16
13
  }.merge(options)
17
14
  end
18
15
 
19
- def run(paths, options={})
16
+ def run(paths, options = {})
20
17
  return true if paths.empty?
21
18
 
22
- message = options[:message] || "Running (#{@runner_name} runner): #{paths.join(' ') }"
23
- ::Guard::UI.info(message, :reset => true)
19
+ ::Guard::UI.info(options[:message] || "Running: #{paths.join(' ')}", :reset => true)
20
+
24
21
  system(test_unit_command(paths))
25
22
  end
26
23
 
27
- def rvm?
28
- @rvm ||= @options[:rvm] && @options[:rvm].respond_to?(:join)
24
+ def bundler?
25
+ if @bundler.nil?
26
+ @bundler = @options[:bundler] && !drb?
27
+ end
28
+ @bundler
29
29
  end
30
30
 
31
- def turn?
32
- @turn ||= begin
33
- require 'turn'
34
- rescue LoadError
35
- false
31
+ def drb?
32
+ if @drb.nil?
33
+ @drb = @options[:drb]
34
+ begin
35
+ require 'spork-testunit'
36
+ rescue LoadError
37
+ end
38
+ ::Guard::UI.info("Using testdrb to run the tests") if @drb
36
39
  end
40
+ @drb
37
41
  end
38
42
 
39
43
  private
40
44
 
41
45
  def test_unit_command(paths)
42
46
  cmd_parts = []
43
- cmd_parts << "rvm #{@options[:rvm].join(',')} exec" if rvm?
44
- cmd_parts << "bundle exec" if @options[:bundler] && !turn?
45
- cmd_parts << "#{turn? ? 'turn' : 'ruby'} -Itest"
46
- cmd_parts << "-r bundler/setup" if @options[:bundler] && !turn?
47
+ cmd_parts << "rvm #{@options[:rvm].join(',')} exec" unless @options[:rvm].empty?
48
+ cmd_parts << "bundle exec" if bundler?
49
+ cmd_parts << case true
50
+ when drb?
51
+ "testdrb"
52
+ else
53
+ "ruby"
54
+ end
55
+ cmd_parts << "-Itest"
56
+ cmd_parts << "-r bundler/setup" if bundler?
47
57
 
48
- unless turn?
49
- cmd_parts << "-r #{File.expand_path("../runners/#{@runner_name}_guard_test_runner", __FILE__)}"
58
+ unless drb?
59
+ cmd_parts << "-r #{File.expand_path("../guard_test_runner", __FILE__)}"
50
60
  cmd_parts << "-e \"%w[#{paths.join(' ')}].each { |p| load p }\""
51
61
  end
52
62
 
53
63
  paths.each { |path| cmd_parts << "\"./#{path}\"" }
54
- cmd_parts << "--runner=guard-#{@runner_name}" unless turn?
64
+
65
+ unless drb?
66
+ cmd_parts << "--use-color"
67
+ cmd_parts << "--runner=guard"
68
+ end
69
+
55
70
  cmd_parts << @options[:cli]
56
71
 
57
- cmd_parts.compact.join(' ')
72
+ cmd_parts.compact.join(' ').strip
58
73
  end
59
74
 
60
75
  end