guard-test 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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