guard-rspec 4.5.2 → 4.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8b73f6aa6d19416f25c3e8676cc9e86c55a90a7b
4
- data.tar.gz: 9644dbe8c3990614582c08a94ab777e65be380c4
3
+ metadata.gz: da3d682ea54facc503739cd4d094710f204117da
4
+ data.tar.gz: 7222b1f22d4650eeb50b510e6ddd0b653d72c145
5
5
  SHA512:
6
- metadata.gz: 95e9c1fc933b6de01ceb7ee36fa3cee4a22c820b219447a4777e105980d0e583434861059fadd3ebb6a25954e2a801471c1a9a8138a8d54bfcb1ff90d1e5d0c9
7
- data.tar.gz: 7171db95c19c8a42488fb4d384819aeb5305e9f65821c352d11aa1ac4775448ed672f031bf6887d8427378bf97b99217712f5a9ace4d3ed6d5bef82811c18bb6
6
+ metadata.gz: 069b0a96a591b25139fff82402d4a48dff213ac9b4412ed570aad6ac92bae197808217786552b1b91785f91c0bb16e33c21bda3f7dacdfa33cd52439e3f3855f
7
+ data.tar.gz: d6d147aca928c4c5bc7c68f7b2cf40ee0eeeb8ff72ef63a5d1bb544b23ce401d6615f6ac039b51dfbd30840fc3c07c78f2eb54f818ae99e66f2f4fa5ebcec5ac
@@ -1,16 +1,13 @@
1
1
  language: ruby
2
2
  bundler_args: --without tool
3
3
  rvm:
4
- - 2.0.0
5
- - 2.1.5
6
- - 2.2.0
4
+ - 2.2.2
7
5
  - jruby-19mode
8
6
  - rbx
9
7
  gemfile:
10
8
  - gemfiles/Gemfile.rspec-2.14
11
9
  - gemfiles/Gemfile.rspec-2.99
12
- - gemfiles/Gemfile.rspec-3.0
13
- - gemfiles/Gemfile.rspec-3.2
10
+ - gemfiles/Gemfile.rspec-3.3
14
11
  matrix:
15
12
  allow_failures:
16
13
  - rvm: jruby-19mode
data/Gemfile CHANGED
@@ -1,6 +1,11 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gemspec
3
+ if ENV["USE_INSTALLED_GUARD_RSPEC"] == "1"
4
+ gem "guard-rspec"
5
+ gem "launchy"
6
+ else
7
+ gemspec
8
+ end
4
9
 
5
10
  group :test do
6
11
  gem "coveralls", require: false
data/README.md CHANGED
@@ -95,6 +95,7 @@ notification: false # Display notification after the specs are done running,
95
95
  run_all: { cmd: 'custom rspec command', message: 'custom message' } # Custom options to use when running all specs
96
96
  title: 'My project' # Display a custom title for the notification, default: 'RSpec results'
97
97
  chdir: 'directory' # run rspec from within a given subdirectory (useful if project has separate specs for submodules)
98
+ results_file: 'some/path' # use the given file for storing results (instead of default relative path)
98
99
  ```
99
100
 
100
101
  ### Using Launchy to view rspec results
@@ -108,6 +109,25 @@ guard :rspec, cmd: 'rspec -f html -o ./tmp/spec_results.html', launchy: './tmp/s
108
109
  end
109
110
  ```
110
111
 
112
+ ### Using parallel_tests
113
+
114
+ parallel_tests has a `-o` option for passing RSpec options, and here's a trick to make it work with Guard::RSpec:
115
+
116
+ ```ruby
117
+ rspec_options = {
118
+ cmd: "bundle exec rspec",
119
+ run_all: {
120
+ cmd: "bundle exec parallel_rspec -o '",
121
+ cmd_additional_args: "'"
122
+ }
123
+ }
124
+ guard :rspec, rspec_options do
125
+ # (...)
126
+ ```
127
+
128
+ (Notice where the `'` characters are placed)
129
+
130
+
111
131
  ## Development
112
132
 
113
133
  * Documentation hosted at [RubyDoc](http://rubydoc.info/github/guard/guard-rspec/master/frames).
@@ -2,7 +2,7 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec path: '../'
4
4
 
5
- gem 'rspec', '~> 3.0.0'
5
+ gem 'rspec', '~> 3.3.0'
6
6
 
7
7
  group :test do
8
8
  gem 'coveralls', require: false
@@ -0,0 +1,66 @@
1
+ require "guard/rspec/command"
2
+
3
+ module Guard
4
+ class RSpec < Plugin
5
+ class RSpecProcess
6
+ class Failure < RuntimeError
7
+ end
8
+
9
+ attr_reader :results
10
+
11
+ def initialize(command, formatter_tmp_file)
12
+ @command = command
13
+ @formatter_tmp_file = formatter_tmp_file
14
+ @results = nil
15
+
16
+ @exit_code = _run
17
+ @results = _read_results
18
+ end
19
+
20
+ def all_green?
21
+ exit_code.zero?
22
+ end
23
+
24
+ private
25
+
26
+ def _run
27
+ _without_bundler_env do
28
+ exit_code = _really_run
29
+ unless [0, Command::FAILURE_EXIT_CODE].include?(exit_code)
30
+ fail Failure, "Failed: #{command.inspect} (exit code: #{exit_code})"
31
+ end
32
+ exit_code
33
+ end
34
+ end
35
+
36
+ def _really_run
37
+ env = { "GUARD_RSPEC_RESULTS_FILE" => formatter_tmp_file }
38
+ pid = Kernel.spawn(env, command) # use spawn to stub in JRuby
39
+ result = Process.wait2(pid)
40
+ result.last.exitstatus
41
+ rescue Errno::ENOENT => ex
42
+ fail Failure, "Failed: #{command.inspect} (#{ex})"
43
+ end
44
+
45
+ def _read_results
46
+ Results.new(formatter_tmp_file)
47
+ ensure
48
+ File.delete(formatter_tmp_file) if File.exist?(formatter_tmp_file)
49
+ end
50
+
51
+ def _without_bundler_env
52
+ if defined?(::Bundler)
53
+ ::Bundler.with_clean_env { yield }
54
+ else
55
+ yield
56
+ end
57
+ end
58
+
59
+ private
60
+
61
+ attr_reader :command
62
+ attr_reader :exit_code
63
+ attr_reader :formatter_tmp_file
64
+ end
65
+ end
66
+ end
@@ -2,11 +2,18 @@ require "guard/rspec/inspectors/factory"
2
2
  require "guard/rspec/command"
3
3
  require "guard/rspec/notifier"
4
4
  require "guard/rspec/results"
5
+ require "guard/rspec/rspec_process"
5
6
 
6
7
  module Guard
7
8
  class RSpec < Plugin
8
9
  class Runner
9
- # NOTE: must match with const in RspecFormatter!
10
+ class NoCmdOptionError < RuntimeError
11
+ def initialize
12
+ super "No cmd option specified, unable to run specs!"
13
+ end
14
+ end
15
+
16
+ # NOTE: must match with const in RSpecFormatter!
10
17
  TEMPORARY_FILE_PATH ||= "tmp/rspec_guard_result"
11
18
 
12
19
  attr_accessor :options, :inspector, :notifier
@@ -22,14 +29,16 @@ module Guard
22
29
  options = @options.merge(@options[:run_all])
23
30
  return true if paths.empty?
24
31
  Compat::UI.info(options[:message], reset: true)
25
- _run(true, paths, options)
32
+ _run(paths, options)
26
33
  end
27
34
 
28
35
  def run(paths)
29
36
  paths = inspector.paths(paths)
30
37
  return true if paths.empty?
31
38
  Compat::UI.info("Running: #{paths.join(' ')}", reset: true)
32
- _run(false, paths, options)
39
+ _run(paths, options) do |all_green|
40
+ run_all if options[:all_after_pass] && all_green
41
+ end
33
42
  end
34
43
 
35
44
  def reload
@@ -38,44 +47,29 @@ module Guard
38
47
 
39
48
  private
40
49
 
41
- def _run(all, paths, options)
42
- return unless _cmd_option_present(options)
50
+ def _run(paths, options, &block)
51
+ fail NoCmdOptionError unless options[:cmd]
43
52
  command = Command.new(paths, options)
44
-
45
- _without_bundler_env { Kernel.system(command) }.tap do |result|
46
- if _command_success?(result)
47
- _process_run_result(result, all)
48
- else
49
- notifier.notify_failure
50
- end
51
- end
52
- end
53
-
54
- def _without_bundler_env
55
- if defined?(::Bundler)
56
- ::Bundler.with_clean_env { yield }
57
- else
58
- yield
59
- end
60
- end
61
-
62
- def _cmd_option_present(options)
63
- return true if options[:cmd]
64
- Compat::UI.error("No cmd option specified, unable to run specs!")
53
+ _really_run(command, options, &block)
54
+ true
55
+ rescue RSpecProcess::Failure, NoCmdOptionError => ex
56
+ Compat::UI.error(ex.to_s)
65
57
  notifier.notify_failure
66
58
  false
67
59
  end
68
60
 
69
- def _command_success?(success)
70
- return false if success.nil?
71
- [Command::FAILURE_EXIT_CODE, 0].include?($CHILD_STATUS.exitstatus)
72
- end
61
+ def _really_run(cmd, options)
62
+ # TODO: add option to specify the file
63
+ file = _results_file(options[:results_file], options[:chdir])
64
+
65
+ process = RSpecProcess.new(cmd, file)
66
+ results = process.results
73
67
 
74
- def _command_output
75
- formatter_tmp_file = _tmp_file(options[:chdir])
76
- Results.new(formatter_tmp_file)
77
- ensure
78
- File.delete(formatter_tmp_file) if File.exist?(formatter_tmp_file)
68
+ inspector.failed(results.failed_paths)
69
+ notifier.notify(results.summary)
70
+ _open_launchy
71
+
72
+ yield process.all_green? if block_given?
79
73
  end
80
74
 
81
75
  def _open_launchy
@@ -85,22 +79,10 @@ module Guard
85
79
  ::Launchy.open(options[:launchy]) if pn.exist?
86
80
  end
87
81
 
88
- def _run_all_after_pass
89
- return unless options[:all_after_pass]
90
- run_all
91
- end
92
-
93
- def _process_run_result(result, all)
94
- results = _command_output
95
- inspector.failed(results.failed_paths)
96
- notifier.notify(results.summary)
97
- _open_launchy
98
-
99
- _run_all_after_pass if !all && result
100
- end
101
-
102
- def _tmp_file(chdir)
103
- chdir ? File.join(chdir, TEMPORARY_FILE_PATH) : TEMPORARY_FILE_PATH
82
+ def _results_file(results_file, chdir)
83
+ results_file ||= TEMPORARY_FILE_PATH
84
+ return results_file unless Pathname(results_file).relative?
85
+ chdir ? File.join(chdir, results_file) : results_file
104
86
  end
105
87
  end
106
88
  end
@@ -1,5 +1,5 @@
1
1
  module Guard
2
2
  module RSpecVersion
3
- VERSION = "4.5.2"
3
+ VERSION = "4.6.0"
4
4
  end
5
5
  end
@@ -9,8 +9,6 @@ require "rspec/core/formatters/base_formatter"
9
9
 
10
10
  module Guard
11
11
  class RSpecFormatter < ::RSpec::Core::Formatters::BaseFormatter
12
- TEMPORARY_FILE_PATH ||= "tmp/rspec_guard_result"
13
-
14
12
  def self.rspec_3?
15
13
  ::RSpec::Core::Version::STRING.split(".").first == "3"
16
14
  end
@@ -33,10 +31,10 @@ module Guard
33
31
  location = metadata[:location]
34
32
 
35
33
  until spec_path?(location)
36
- metadata = metadata[:example_group]
34
+ metadata = metadata[:parent_example_group] || metadata[:example_group]
37
35
 
38
36
  unless metadata
39
- STDERR.puts "no spec file found for #{root_metadata[:location]}"
37
+ STDERR.puts "no spec file location in #{root_metadata.inspect}"
40
38
  return root_metadata[:location]
41
39
  end
42
40
 
@@ -82,7 +80,7 @@ module Guard
82
80
  end
83
81
 
84
82
  def _write(&block)
85
- file = File.expand_path(TEMPORARY_FILE_PATH)
83
+ file = _results_file
86
84
  FileUtils.mkdir_p(File.dirname(file))
87
85
  File.open(file, "w", &block)
88
86
  end
@@ -109,5 +107,11 @@ module Guard
109
107
  example.execution_result[:status].to_s == "failed"
110
108
  end
111
109
  end
110
+
111
+ def _results_file
112
+ path = ENV["GUARD_RSPEC_RESULTS_FILE"]
113
+ fail "Fatal: No output file given for Guard::RSpec formatter!" unless path
114
+ File.expand_path(path)
115
+ end
112
116
  end
113
117
  end
@@ -46,6 +46,13 @@ RSpec.describe Guard::RSpec::Command do
46
46
  end
47
47
 
48
48
  context "with no RSpec defined formatter" do
49
+ before do
50
+ allow(RSpec::Core::ConfigurationOptions).to receive(:new) do
51
+ instance_double(RSpec::Core::ConfigurationOptions,
52
+ options: { formatters: nil })
53
+ end
54
+ end
55
+
49
56
  it "sets default progress formatter" do
50
57
  expect(command).to match %r{-f progress}
51
58
  end
@@ -0,0 +1,78 @@
1
+ require "guard/compat/test/helper"
2
+
3
+ require "guard/rspec/rspec_process"
4
+
5
+ RSpec.describe Guard::RSpec::RSpecProcess do
6
+ before do
7
+ allow(Kernel).to receive(:spawn) do |*args|
8
+ fail "Not stubbed: Kernel.spawn(#{args.map(&:inspect) * ','})"
9
+ end
10
+ end
11
+
12
+ let(:results) { instance_double(Guard::RSpec::Results) }
13
+
14
+ let(:cmd) { "foo" }
15
+ let(:file) { "foobar.txt" }
16
+ let(:pid) { 1234 }
17
+ let(:exit_code) { 0 }
18
+ let(:status) { instance_double(Process::Status, exitstatus: exit_code) }
19
+ let(:wait_result) { [pid, status] }
20
+
21
+ subject do
22
+ described_class.new(cmd, file)
23
+ end
24
+
25
+ before do
26
+ allow(Kernel).to receive(:spawn).
27
+ with({ "GUARD_RSPEC_RESULTS_FILE" => file }, cmd).and_return(pid)
28
+
29
+ allow(Guard::RSpec::Results).to receive(:new).
30
+ with(file).and_return(results)
31
+ end
32
+
33
+ context "with an non-existing command" do
34
+ before do
35
+ allow(Kernel).to receive(:spawn).
36
+ and_raise(Errno::ENOENT, "No such file or directory - foo")
37
+ end
38
+
39
+ it "fails" do
40
+ expect { subject }.
41
+ to raise_error(Guard::RSpec::RSpecProcess::Failure, /Failed: /)
42
+ end
43
+ end
44
+
45
+ context "with an existing command" do
46
+ before do
47
+ allow(Process).to receive(:wait2).with(pid).and_return(wait_result)
48
+ end
49
+
50
+ context "with an unknown failure" do
51
+ let(:exit_code) { 100 }
52
+
53
+ it "fails" do
54
+ expect { subject }.
55
+ to raise_error(Guard::RSpec::RSpecProcess::Failure, /Failed: /)
56
+ end
57
+ end
58
+
59
+ context "with the failure code for normal test failures" do
60
+ let(:exit_code) { Guard::RSpec::Command::FAILURE_EXIT_CODE }
61
+
62
+ it "fails" do
63
+ expect { subject }.to_not raise_error
64
+ end
65
+
66
+ it { is_expected.to_not be_all_green }
67
+ end
68
+
69
+ context "with no failures" do
70
+ it "waits for process to end" do
71
+ expect(Process).to receive(:wait2).with(pid).and_return(wait_result)
72
+ subject
73
+ end
74
+
75
+ it { is_expected.to be_all_green }
76
+ end
77
+ end
78
+ end
@@ -10,22 +10,23 @@ RSpec.describe Guard::RSpec::Runner do
10
10
  let(:inspector) { instance_double(Guard::RSpec::Inspectors::SimpleInspector) }
11
11
  let(:notifier) { instance_double(Guard::RSpec::Notifier) }
12
12
  let(:results) { instance_double(Guard::RSpec::Results) }
13
+ let(:process) { instance_double(Guard::RSpec::RSpecProcess) }
13
14
 
14
15
  before do
15
16
  allow(Guard::Compat::UI).to receive(:info)
16
- allow(Kernel).to receive(:system) { true }
17
+ allow(Guard::Compat::UI).to receive(:error)
17
18
  allow(Guard::RSpec::Inspectors::Factory).to receive(:create) { inspector }
18
19
  allow(Guard::RSpec::Notifier).to receive(:new) { notifier }
19
20
  allow(Guard::RSpec::Command).to receive(:new) { "rspec" }
20
21
  allow(notifier).to receive(:notify)
21
22
  allow(notifier).to receive(:notify_failure)
22
23
 
23
- allow(Guard::RSpec::Results).to receive(:new).
24
- with("tmp/rspec_guard_result").and_return(results)
25
24
  allow(results).to receive(:summary).and_return("Summary")
26
25
  allow(results).to receive(:failed_paths).and_return([])
27
26
 
28
- $CHILD_STATUS = double("exitstatus", exitstatus: 0)
27
+ allow(Guard::RSpec::RSpecProcess).to receive(:new).and_return(process)
28
+ allow(process).to receive(:all_green?).and_return(true)
29
+ allow(process).to receive(:results).and_return(results)
29
30
  end
30
31
 
31
32
  describe ".initialize" do
@@ -190,6 +191,66 @@ RSpec.describe Guard::RSpec::Runner do
190
191
  end
191
192
  end
192
193
 
194
+ context "with a custom results file" do
195
+ let(:options) do
196
+ { cmd: "rspec", results_file: results_file }.merge(chdir_options)
197
+ end
198
+
199
+ context "with no chdir option" do
200
+ let(:chdir_options) { {} }
201
+
202
+ context "when the path is relative" do
203
+ let(:results_file) { "foobar.txt" }
204
+ it "uses the given file" do
205
+ expect(Guard::RSpec::RSpecProcess).to receive(:new).
206
+ with(anything, results_file).and_return(process)
207
+ runner.run(paths)
208
+ end
209
+ end
210
+
211
+ context "when the path is absolute" do
212
+ let(:results_file) { "/foo/foobar.txt" }
213
+ it "uses the given path" do
214
+ expect(Guard::RSpec::RSpecProcess).to receive(:new).
215
+ with(anything, results_file).and_return(process)
216
+ runner.run(paths)
217
+ end
218
+ end
219
+ end
220
+
221
+ context "with chdir option" do
222
+ let(:chdir_options) { { chdir: "moduleA" } }
223
+
224
+ context "when the path is relative" do
225
+ let(:results_file) { "foobar.txt" }
226
+
227
+ it "uses a path relative to chdir" do
228
+ expect(Guard::RSpec::RSpecProcess).to receive(:new).
229
+ with(anything, "moduleA/foobar.txt").and_return(process)
230
+ runner.run(paths)
231
+ end
232
+ end
233
+
234
+ context "when the path is absolute" do
235
+ let(:results_file) { "/foo/foobar.txt" }
236
+ it "uses the full given path anyway" do
237
+ expect(Guard::RSpec::RSpecProcess).to receive(:new).
238
+ with(anything, results_file).and_return(process)
239
+ runner.run(paths)
240
+ end
241
+ end
242
+ end
243
+ end
244
+
245
+ context "with no custom results file" do
246
+ let(:options) { { cmd: "rspec" } }
247
+ it "uses the default" do
248
+ expect(Guard::RSpec::RSpecProcess).to receive(:new).
249
+ with(anything, "tmp/rspec_guard_result").and_return(process)
250
+ runner.run(paths)
251
+ end
252
+ end
253
+
193
254
  it "notifies inspector about failed paths" do
194
255
  expect(inspector).to receive(:failed).with([])
195
256
  runner.run(paths)
@@ -217,24 +278,11 @@ RSpec.describe Guard::RSpec::Runner do
217
278
  end
218
279
 
219
280
  it "notifies failure" do
220
- allow(Kernel).to receive(:system) { nil }
281
+ allow(process).to receive(:all_green?).
282
+ and_raise(Guard::RSpec::RSpecProcess::Failure, /Failed: /)
283
+
221
284
  expect(notifier).to receive(:notify_failure)
222
285
  runner.run(paths)
223
286
  end
224
287
  end
225
-
226
- # TODO: remove / cleanup
227
- describe "_tmp_file" do
228
- subject { described_class.new.send(:_tmp_file, chdir) }
229
-
230
- context "with no chdir option" do
231
- let(:chdir) { nil }
232
- it { is_expected.to eq("tmp/rspec_guard_result") }
233
- end
234
-
235
- context "chdir option" do
236
- let(:chdir) { "moduleA" }
237
- it { is_expected.to eq("moduleA/tmp/rspec_guard_result") }
238
- end
239
- end
240
288
  end
@@ -1,11 +1,6 @@
1
1
  require "guard/rspec_formatter"
2
2
 
3
3
  RSpec.describe Guard::RSpecFormatter do
4
- describe "::TEMPORARY_FILE_PATH" do
5
- subject { Pathname.new(described_class::TEMPORARY_FILE_PATH) }
6
- it { is_expected.to be_relative }
7
- end
8
-
9
4
  describe "#dump_summary" do
10
5
  def rspec_summary_args(*args)
11
6
  return args unless ::RSpec::Core::Version::STRING.start_with?("3.")
@@ -53,8 +48,15 @@ RSpec.describe Guard::RSpecFormatter do
53
48
  context "without stubbed IO" do
54
49
  let(:stub_formatter) { false }
55
50
 
51
+ around do |example|
52
+ env_var = "GUARD_RSPEC_RESULTS_FILE"
53
+ old, ENV[env_var] = ENV[env_var], "foobar.txt"
54
+ example.run
55
+ ENV[env_var] = old
56
+ end
57
+
56
58
  it "creates temporary file and and writes to it" do
57
- file = File.expand_path(described_class::TEMPORARY_FILE_PATH)
59
+ file = File.expand_path("foobar.txt")
58
60
 
59
61
  expect(FileUtils).to receive(:mkdir_p).
60
62
  with(File.dirname(file)) {}
@@ -145,13 +147,43 @@ RSpec.describe Guard::RSpecFormatter do
145
147
  }
146
148
 
147
149
  expect(STDERR).to receive(:puts).
148
- with("no spec file found for #{metadata[:location]}") {}
150
+ with("no spec file location in #{metadata.inspect}")
149
151
 
150
152
  expect(described_class.extract_spec_location(metadata)).
151
153
  to eq metadata[:location]
152
154
  end
153
155
  end
154
156
 
157
+ context "when a shared examples are nested" do
158
+ it "should return location of the root spec" do
159
+ metadata = {
160
+ location: "./spec/support/breadcrumbs.rb:75",
161
+ example_group: {
162
+ example_group: {
163
+ location: "./spec/requests/breadcrumbs_spec.rb:218"
164
+ }
165
+ }
166
+ }
167
+
168
+ expect(described_class.extract_spec_location(metadata)).
169
+ to eq "./spec/requests/breadcrumbs_spec.rb"
170
+ end
171
+ end
172
+
173
+ context "when RSpec 3.0 metadata is present" do
174
+ it "should return location of the root spec" do
175
+ metadata = {
176
+ location: "./spec/support/breadcrumbs.rb:75",
177
+ parent_example_group: {
178
+ location: "./spec/requests/breadcrumbs_spec.rb:218"
179
+ }
180
+ }
181
+
182
+ expect(described_class.extract_spec_location(metadata)).
183
+ to eq "./spec/requests/breadcrumbs_spec.rb"
184
+ end
185
+ end
186
+
155
187
  context "with only success" do
156
188
  it "notifies success" do
157
189
  formatter.dump_summary(*summary_with_no_failures)
@@ -1,5 +1,12 @@
1
1
  require "rspec"
2
2
 
3
+ # To help produce better bug reports in Rubinius
4
+ if RUBY_ENGINE == "rbx"
5
+ $DEBUG = true # would be nice if this didn't fail ... :(
6
+ require "rspec/matchers"
7
+ require "rspec/matchers/built_in/be"
8
+ end
9
+
3
10
  if ENV["CI"]
4
11
  require "coveralls"
5
12
  Coveralls.wear!
@@ -107,7 +114,16 @@ RSpec.configure do |config|
107
114
  abort "stub me: Dir[#{args.first}]!"
108
115
  end
109
116
 
110
- %w(directory? delete readlines).each do |meth|
117
+ unless RUBY_ENGINE == "rbx"
118
+ # RBX uses cache in ~/.rbx
119
+ %w(directory?).each do |meth|
120
+ allow(File).to receive(meth.to_sym) do |*args|
121
+ abort "stub me: File.#{meth}(#{args.map(&:inspect) * ','})!"
122
+ end
123
+ end
124
+ end
125
+
126
+ %w(delete readlines).each do |meth|
111
127
  allow(File).to receive(meth.to_sym) do |*args|
112
128
  abort "stub me: File.#{meth}(#{args.map(&:inspect) * ','})!"
113
129
  end
@@ -118,5 +134,11 @@ RSpec.configure do |config|
118
134
  abort "stub me: FileUtils.#{meth}(#{args.map(&:inspect) * ','})!"
119
135
  end
120
136
  end
137
+
138
+ %w(spawn system).each do |meth|
139
+ allow(File).to receive(meth.to_sym) do |*args|
140
+ abort "stub me: Kernel.#{meth}(#{args.map(&:inspect) * ','})!"
141
+ end
142
+ end
121
143
  end
122
144
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.5.2
4
+ version: 4.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thibaud Guillaume-Gentil
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-03 00:00:00.000000000 Z
11
+ date: 2015-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -126,8 +126,7 @@ files:
126
126
  - Rakefile
127
127
  - gemfiles/Gemfile.rspec-2.14
128
128
  - gemfiles/Gemfile.rspec-2.99
129
- - gemfiles/Gemfile.rspec-3.0
130
- - gemfiles/Gemfile.rspec-3.2
129
+ - gemfiles/Gemfile.rspec-3.3
131
130
  - guard-rspec.gemspec
132
131
  - lib/guard/rspec.rb
133
132
  - lib/guard/rspec/command.rb
@@ -141,6 +140,7 @@ files:
141
140
  - lib/guard/rspec/notifier.rb
142
141
  - lib/guard/rspec/options.rb
143
142
  - lib/guard/rspec/results.rb
143
+ - lib/guard/rspec/rspec_process.rb
144
144
  - lib/guard/rspec/runner.rb
145
145
  - lib/guard/rspec/templates/Guardfile
146
146
  - lib/guard/rspec/version.rb
@@ -155,6 +155,7 @@ files:
155
155
  - spec/lib/guard/rspec/inspectors/simple_inspector_spec.rb
156
156
  - spec/lib/guard/rspec/notifier_spec.rb
157
157
  - spec/lib/guard/rspec/results_spec.rb
158
+ - spec/lib/guard/rspec/rspec_process_spec.rb
158
159
  - spec/lib/guard/rspec/runner_spec.rb
159
160
  - spec/lib/guard/rspec/template_spec.rb
160
161
  - spec/lib/guard/rspec_formatter_spec.rb
@@ -180,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
181
  version: '0'
181
182
  requirements: []
182
183
  rubyforge_project:
183
- rubygems_version: 2.4.5
184
+ rubygems_version: 2.4.7
184
185
  signing_key:
185
186
  specification_version: 4
186
187
  summary: Guard gem for RSpec
@@ -195,6 +196,7 @@ test_files:
195
196
  - spec/lib/guard/rspec/inspectors/simple_inspector_spec.rb
196
197
  - spec/lib/guard/rspec/notifier_spec.rb
197
198
  - spec/lib/guard/rspec/results_spec.rb
199
+ - spec/lib/guard/rspec/rspec_process_spec.rb
198
200
  - spec/lib/guard/rspec/runner_spec.rb
199
201
  - spec/lib/guard/rspec/template_spec.rb
200
202
  - spec/lib/guard/rspec_formatter_spec.rb
@@ -1,14 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec path: '../'
4
-
5
- gem 'rspec', '~> 3.2.0'
6
-
7
- group :test do
8
- gem 'coveralls', require: false
9
- gem "guard-compat", ">= 0.0.2", require: false
10
- end
11
-
12
- group :tool do
13
- gem 'ruby_gntp', require: false
14
- end