guard-rspec 4.6.5 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36f680214b513178f42ad7f47d9fa8f6059eb5df
4
- data.tar.gz: 9ed784b1fe3be511dfaec7d934cc88b2c7d674bf
3
+ metadata.gz: 0fc28c16ceeddadc68019093ed5e2d48362f5c3c
4
+ data.tar.gz: 3b52eda168c7398bca052b5c01497b97dd2d11bd
5
5
  SHA512:
6
- metadata.gz: ebe1c445d9b2b52cb5f5b50d92d4d7bc8611034c95972dd79e1b29cd85a9e85a0ae9649c1e1eee4d820266306c1dabb8ba8fec42c83d4bd7d76ef4cdc6b7790d
7
- data.tar.gz: 9d758975348f80fa7dafcd71aeed1cdbdfd49dd32a82ab7ec60576f51da23600112dae3ac8c8edffb3a4ece91a1396c6ba74a49fcaaa81e152ad7a0f7c1bbbcf
6
+ metadata.gz: c2770e272f1965dd1cce1878f5dcb9617dff9519c453f6806fa8c7945603476edfe5cf33289a4d95267f154eb15cee8ba10459263b00ca987436e94c16909736
7
+ data.tar.gz: 293ed7b6f57587da0b3b4df12a8b0520b0d33b2fe16b17c8222ceb09c458dae57de5a7b8da95d74d65b69e16fc8be3452adc01055ebc3bcf65bf4acbb3c70aee
@@ -1,2 +1,2 @@
1
1
  inherit_from:
2
- .hound.yml
2
+ .rubocop_todo.yml
@@ -1,6 +1,40 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2015-05-27 21:27:40 +0200 using RuboCop version 0.25.0.
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2016-05-22 06:08:35 +0200 using RuboCop version 0.40.0.
3
4
  # The point is for the user to remove these configuration records
4
5
  # one by one as the offenses are removed from the code base.
5
6
  # Note that changes in the inspected code, or installation of new
6
7
  # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 15
10
+ Style/Documentation:
11
+ Exclude:
12
+ - 'spec/**/*'
13
+ - 'test/**/*'
14
+ - 'lib/guard/rspec.rb'
15
+ - 'lib/guard/rspec/command.rb'
16
+ - 'lib/guard/rspec/deprecator.rb'
17
+ - 'lib/guard/rspec/dsl.rb'
18
+ - 'lib/guard/rspec/inspectors/base_inspector.rb'
19
+ - 'lib/guard/rspec/inspectors/factory.rb'
20
+ - 'lib/guard/rspec/inspectors/simple_inspector.rb'
21
+ - 'lib/guard/rspec/notifier.rb'
22
+ - 'lib/guard/rspec/options.rb'
23
+ - 'lib/guard/rspec/results.rb'
24
+ - 'lib/guard/rspec/rspec_process.rb'
25
+ - 'lib/guard/rspec/runner.rb'
26
+ - 'lib/guard/rspec_formatter.rb'
27
+
28
+ # Offense count: 148
29
+ # Cop supports --auto-correct.
30
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
31
+ # SupportedStyles: leading, trailing
32
+ Style/DotPosition:
33
+ Enabled: false
34
+
35
+ # Offense count: 654
36
+ # Cop supports --auto-correct.
37
+ # Configuration parameters: EnforcedStyle, SupportedStyles, ConsistentQuotesInMultiline.
38
+ # SupportedStyles: single_quotes, double_quotes
39
+ Style/StringLiterals:
40
+ Enabled: false
@@ -1,13 +1,14 @@
1
1
  language: ruby
2
2
  bundler_args: --without tool
3
3
  rvm:
4
- - 2.2.2
5
- - jruby-head
4
+ - 2.2.5
5
+ - 2.3.1
6
+ - jruby-9.0.5.0
6
7
  gemfile:
7
- - gemfiles/Gemfile.rspec-2.14
8
8
  - gemfiles/Gemfile.rspec-2.99
9
- - gemfiles/Gemfile.rspec-3.3
9
+ - gemfiles/Gemfile.rspec-3.4
10
10
  matrix:
11
11
  allow_failures:
12
- - rvm: jruby-head
12
+ - rvm: jruby-9.0.50
13
13
  sudo: false
14
+ cache: bundler
data/Gemfile CHANGED
@@ -12,7 +12,7 @@ group :test do
12
12
  end
13
13
 
14
14
  group :development do
15
- gem "rspec", "~> 3.1"
15
+ gem "rspec", "~> 3.4"
16
16
  gem "rubocop", require: false
17
17
  gem "guard-rubocop", require: false
18
18
  gem "guard-compat", ">= 0.0.2", require: false
data/Guardfile CHANGED
@@ -13,16 +13,16 @@ group :specs, halt_on_fail: true do
13
13
  dsl.watch_spec_files_for(dsl.ruby.lib_files)
14
14
 
15
15
  watch(%r{^(lib/guard/rspec/template)s/Guardfile$}) do
16
- rspec.spec.("lib/guard/rspec/template")
16
+ rspec.spec.call("lib/guard/rspec/template")
17
17
  end
18
18
 
19
19
  watch(%r{^lib/guard/rspec/dsl.rb$}) do
20
- rspec.spec.("lib/guard/rspec/template")
20
+ rspec.spec.call("lib/guard/rspec/template")
21
21
  end
22
22
  end
23
23
 
24
24
  guard :rubocop, all_on_start: false do
25
- watch(%r{.+\.rb$})
25
+ watch(/.+\.rb$/)
26
26
  watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
27
27
  end
28
28
  end
data/README.md CHANGED
@@ -4,8 +4,8 @@
4
4
 
5
5
  Guard::RSpec allows to automatically & intelligently launch specs when files are modified.
6
6
 
7
- * Compatible with RSpec >2.14 & 3
8
- * Tested against Ruby 2.2.x, JRuby and Rubinius.
7
+ * Compatible with RSpec >2.99 & 3
8
+ * Tested against Ruby 2.2.x, JRuby 9.0.5.0 ~~and Rubinius~~.
9
9
 
10
10
  ## Install
11
11
 
@@ -66,6 +66,8 @@ guard :rspec, cmd: 'spring rspec -f doc' do
66
66
  end
67
67
  ```
68
68
 
69
+ NOTE: the above example assumes you have the `spring rspec` command installed - see here: https://github.com/jonleighton/spring-commands-rspec
70
+
69
71
  ### Running with bundler
70
72
 
71
73
  Running `bundle exec guard` will not run the specs with bundler. You need to change the `cmd` option to `bundle exec rspec`:
@@ -2,7 +2,7 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec path: '../'
4
4
 
5
- gem 'rspec', '~> 2.14'
5
+ gem 'rspec', '~> 3.4.0'
6
6
 
7
7
  group :test do
8
8
  gem 'coveralls', require: false
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
9
9
  s.author = "Thibaud Guillaume-Gentil"
10
10
  s.email = "thibaud@thibaud.gg"
11
11
  s.summary = "Guard gem for RSpec"
12
- s.description = "Guard::RSpec automatically run your specs" +
12
+ s.description = "Guard::RSpec automatically run your specs" \
13
13
  " (much like autotest)."
14
14
 
15
15
  s.homepage = "https://github.com/guard/guard-rspec"
@@ -29,7 +29,8 @@ module Guard
29
29
  end
30
30
 
31
31
  def _paths(options)
32
- return paths unless chdir = options[:chdir]
32
+ chdir = options[:chdir]
33
+ return paths unless chdir
33
34
  paths.map { |path| path.sub(File.join(chdir, "/"), "") }
34
35
  end
35
36
 
@@ -25,7 +25,7 @@ module Guard
25
25
  def _spec_opts_env
26
26
  return if ENV["SPEC_OPTS"].nil?
27
27
  Compat::UI.warning(
28
- "The SPEC_OPTS environment variable is present." +
28
+ "The SPEC_OPTS environment variable is present." \
29
29
  " This can conflict with guard-rspec."
30
30
  )
31
31
  end
@@ -33,7 +33,7 @@ module Guard
33
33
  def _version_option
34
34
  return unless options.key?(:version)
35
35
  _deprecated(
36
- "The :version option is deprecated." +
36
+ "The :version option is deprecated." \
37
37
  " Only RSpec ~> 2.14 is now supported."
38
38
  )
39
39
  end
@@ -41,8 +41,8 @@ module Guard
41
41
  def _exclude_option
42
42
  return unless options.key?(:exclude)
43
43
  _deprecated(
44
- "The :exclude option is deprecated." +
45
- " Please Guard ignore method instead." +
44
+ "The :exclude option is deprecated." \
45
+ " Please Guard ignore method instead." \
46
46
  " https://github.com/guard/guard#ignore"
47
47
  )
48
48
  end
@@ -52,7 +52,7 @@ module Guard
52
52
  binstubs rvm cli spring turnip zeus foreman).each do |option|
53
53
  next unless options.key?(option.to_sym)
54
54
  _deprecated(
55
- "The :#{option} option is deprecated." +
55
+ "The :#{option} option is deprecated." \
56
56
  " Please customize the new :cmd option to fit your need."
57
57
  )
58
58
  end
@@ -61,19 +61,21 @@ module Guard
61
61
  def _keep_failed_option
62
62
  return unless options.key?(:keep_failed)
63
63
  _deprecated(
64
- "The :keep_failed option is deprecated." +
65
- " Please set new :failed_mode option value to" +
66
- " :keep instead." +
67
- " https://github.com/guard/guard-rspec#list-of-available-options")
64
+ "The :keep_failed option is deprecated." \
65
+ " Please set new :failed_mode option value to" \
66
+ " :keep instead." \
67
+ " https://github.com/guard/guard-rspec#list-of-available-options"
68
+ )
68
69
  end
69
70
 
70
71
  def _focus_on_failed_option
71
72
  return unless options.key?(:focus_on_failed)
72
73
  _deprecated(
73
- "The :focus_on_failed option is deprecated." +
74
- " Please set new :failed_mode option value to" +
75
- " :focus instead." +
76
- " https://github.com/guard/guard-rspec#list-of-available-options")
74
+ "The :focus_on_failed option is deprecated." \
75
+ " Please set new :failed_mode option value to" \
76
+ " :focus instead." \
77
+ " https://github.com/guard/guard-rspec#list-of-available-options"
78
+ )
77
79
  end
78
80
 
79
81
  def _deprecated(message)
@@ -10,7 +10,7 @@ module Guard
10
10
  end
11
11
 
12
12
  def watch_spec_files_for(expr)
13
- @dsl.send(:watch, expr) { |m| rspec.spec.(m[1]) }
13
+ @dsl.send(:watch, expr) { |m| rspec.spec.call(m[1]) }
14
14
  end
15
15
 
16
16
  def self.detect_spec_file_for(rspec, file)
@@ -21,7 +21,7 @@ module Guard
21
21
  return path unless file.start_with?("lib/")
22
22
  return path if Dir.exist?("#{rspec.spec_dir}/lib")
23
23
 
24
- without_lib = file.sub(/^lib\//, "")
24
+ without_lib = file.sub(%r{^lib/}, "")
25
25
  "#{rspec.spec_dir}/#{without_lib}_spec.rb"
26
26
  end
27
27
 
@@ -44,9 +44,17 @@ module Guard
44
44
 
45
45
  def rails(options = {})
46
46
  # Rails example
47
- @rails ||= OpenStruct.new.tap do |rails|
48
- exts = _view_extensions(options) * "|"
47
+ @rails ||= _build_rails_rules(_view_extensions(options) * "|")
48
+ end
49
+
50
+ private
51
+
52
+ def _view_extensions(options)
53
+ options.dup.delete(:view_extensions) || %w(erb haml slim)
54
+ end
49
55
 
56
+ def _build_rails_rules(exts)
57
+ OpenStruct.new.tap do |rails|
50
58
  rails.app_files = %r{^app/(.+)\.rb$}
51
59
 
52
60
  rails.views = %r{^app/(views/.+/[^/]*\.(?:#{exts}))$}
@@ -59,12 +67,6 @@ module Guard
59
67
  rails.spec_helper = "#{rspec.spec_dir}/rails_helper.rb"
60
68
  end
61
69
  end
62
-
63
- private
64
-
65
- def _view_extensions(options)
66
- options.dup.delete(:view_extensions) || %w(erb haml slim)
67
- end
68
70
  end
69
71
  end
70
72
  end
@@ -11,15 +11,15 @@ module Guard
11
11
  end
12
12
 
13
13
  def paths(_paths)
14
- fail NotImplementedError
14
+ raise NotImplementedError
15
15
  end
16
16
 
17
17
  def failed(_locations)
18
- fail NotImplementedError
18
+ raise NotImplementedError
19
19
  end
20
20
 
21
21
  def reload
22
- fail NotImplementedError
22
+ raise NotImplementedError
23
23
  end
24
24
 
25
25
  private
@@ -37,7 +37,7 @@ module Guard
37
37
 
38
38
  # Extract file path from location
39
39
  def _location_path(location)
40
- location.match(/^(\.\/)?(.*?)(:\d+)?$/)[2]
40
+ location.match(%r{^(\./)?(.*?)(:\d+)?$})[2]
41
41
  end
42
42
  end
43
43
  end
@@ -48,8 +48,7 @@ module Guard
48
48
  def _priority(image)
49
49
  { failed: 2,
50
50
  pending: -1,
51
- success: -2
52
- }[image]
51
+ success: -2 }[image]
53
52
  end
54
53
  end
55
54
  end
@@ -11,7 +11,7 @@ module Guard
11
11
  lines = File.readlines(filename)
12
12
  if lines.empty? || lines.first.empty?
13
13
  dump = lines.inspect
14
- fail InvalidData, "Invalid results in: #{filename},"\
14
+ raise InvalidData, "Invalid results in: #{filename},"\
15
15
  " lines:\n#{dump}\n"
16
16
  end
17
17
 
@@ -26,8 +26,13 @@ module Guard
26
26
  def _run
27
27
  _without_bundler_env do
28
28
  exit_code = _really_run
29
+
30
+ msg = "Guard::RSpec: RSpec command %s exited with: %s"
31
+ Compat::UI.debug(format(msg, command, exit_code.inspect))
32
+
29
33
  unless [0, Command::FAILURE_EXIT_CODE].include?(exit_code)
30
- fail Failure, "Failed: #{command.inspect} (exit code: #{exit_code})"
34
+ msg = "Failed: %s (exit code: %d)"
35
+ raise Failure, format(msg, command.inspect, exit_code)
31
36
  end
32
37
  exit_code
33
38
  end
@@ -35,15 +40,27 @@ module Guard
35
40
 
36
41
  def _really_run
37
42
  env = { "GUARD_RSPEC_RESULTS_FILE" => formatter_tmp_file }
43
+
44
+ _warn_unless_absolute_path(formatter_tmp_file)
45
+
46
+ Compat::UI.debug("Guard::RSpec: results file: #{formatter_tmp_file}")
47
+
38
48
  pid = Kernel.spawn(env, command) # use spawn to stub in JRuby
39
49
  result = ::Process.wait2(pid)
40
50
  result.last.exitstatus
41
51
  rescue Errno::ENOENT => ex
42
- fail Failure, "Failed: #{command.inspect} (#{ex})"
52
+ raise Failure, "Failed: #{command.inspect} (#{ex})"
43
53
  end
44
54
 
45
55
  def _read_results
46
56
  Results.new(formatter_tmp_file)
57
+ rescue Errno::ENOENT
58
+ msg = "Guard::RSpec cannot open results file: %s. This is likely a bug"\
59
+ "so please report this at"\
60
+ " http://github.com/guard/guard-rspec/issues/new along with as much"\
61
+ "information as possible to reproduce this issue."
62
+ Compat::UI.error(format(msg, formatter_tmp_file.inspect))
63
+ raise
47
64
  ensure
48
65
  File.delete(formatter_tmp_file) if File.exist?(formatter_tmp_file)
49
66
  end
@@ -56,6 +73,14 @@ module Guard
56
73
  end
57
74
  end
58
75
 
76
+ def _warn_unless_absolute_path(formatter_tmp_file)
77
+ return if Pathname(formatter_tmp_file).absolute?
78
+
79
+ msg = "Guard::RSpec: The results file %s is not an absolute path."\
80
+ " Please provide an absolute path to avoid issues."
81
+ Compat::UI.warning(format(msg, formatter_tmp_file.inspect))
82
+ end
83
+
59
84
  attr_reader :command
60
85
  attr_reader :exit_code
61
86
  attr_reader :formatter_tmp_file
@@ -15,9 +15,6 @@ module Guard
15
15
  end
16
16
  end
17
17
 
18
- # NOTE: must match with const in RSpecFormatter!
19
- TEMPORARY_FILE_PATH ||= "tmp/rspec_guard_result".freeze
20
-
21
18
  attr_accessor :options, :inspector, :notifier
22
19
 
23
20
  def initialize(options = {})
@@ -52,7 +49,7 @@ module Guard
52
49
  private
53
50
 
54
51
  def _run(paths, options, &block)
55
- fail NoCmdOptionError unless options[:cmd]
52
+ raise NoCmdOptionError unless options[:cmd]
56
53
  command = Command.new(paths, options)
57
54
  _really_run(command, options, &block)
58
55
  rescue RSpecProcess::Failure, NoCmdOptionError => ex
@@ -73,11 +70,8 @@ module Guard
73
70
  _open_launchy
74
71
 
75
72
  all_green = process.all_green?
76
- if block_given?
77
- yield all_green
78
- else
79
- all_green
80
- end
73
+ return yield all_green if block_given?
74
+ all_green
81
75
  end
82
76
 
83
77
  def _open_launchy
@@ -88,9 +82,18 @@ module Guard
88
82
  end
89
83
 
90
84
  def _results_file(results_file, chdir)
91
- results_file ||= RSpecDefaults::TEMPORARY_FILE_PATH
85
+ results_file ||= File.expand_path(RSpecDefaults::TEMPORARY_FILE_PATH)
86
+ return results_file unless Pathname(results_file).relative?
87
+ results_file = File.join(chdir, results_file) if chdir
92
88
  return results_file unless Pathname(results_file).relative?
93
- chdir ? File.join(chdir, results_file) : results_file
89
+
90
+ unless Pathname(results_file).absolute?
91
+ msg = "Guard::RSpec: The results file %s is not an absolute path."\
92
+ " Please provide an absolute path to avoid issues."
93
+ Compat::UI.warning(format(msg, results_file.inspect))
94
+ end
95
+
96
+ File.expand_path(results_file)
94
97
  end
95
98
  end
96
99
  end
@@ -30,9 +30,9 @@ guard :rspec, cmd: "bundle exec rspec" do
30
30
 
31
31
  watch(rails.controllers) do |m|
32
32
  [
33
- rspec.spec.("routing/#{m[1]}_routing"),
34
- rspec.spec.("controllers/#{m[1]}_controller"),
35
- rspec.spec.("acceptance/#{m[1]}")
33
+ rspec.spec.call("routing/#{m[1]}_routing"),
34
+ rspec.spec.call("controllers/#{m[1]}_controller"),
35
+ rspec.spec.call("acceptance/#{m[1]}")
36
36
  ]
37
37
  end
38
38
 
@@ -42,8 +42,8 @@ guard :rspec, cmd: "bundle exec rspec" do
42
42
  watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
43
43
 
44
44
  # Capybara features specs
45
- watch(rails.view_dirs) { |m| rspec.spec.("features/#{m[1]}") }
46
- watch(rails.layouts) { |m| rspec.spec.("features/#{m[1]}") }
45
+ watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") }
46
+ watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") }
47
47
 
48
48
  # Turnip features and steps
49
49
  watch(%r{^spec/acceptance/(.+)\.feature$})