guard-rspec 2.1.0 → 4.7.3

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.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.hound.yml +3 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +5 -0
  6. data/.rubocop_todo.yml +40 -0
  7. data/.travis.yml +14 -0
  8. data/CONTRIBUTING.md +38 -0
  9. data/Gemfile +25 -0
  10. data/Guardfile +28 -0
  11. data/{LICENSE → LICENSE.txt} +4 -2
  12. data/README.md +99 -114
  13. data/Rakefile +38 -0
  14. data/gemfiles/Gemfile.rspec-2.99 +6 -0
  15. data/gemfiles/Gemfile.rspec-3.4 +6 -0
  16. data/gemfiles/common +9 -0
  17. data/guard-rspec.gemspec +25 -0
  18. data/lib/guard/rspec/command.rb +71 -0
  19. data/lib/guard/rspec/deprecator.rb +86 -0
  20. data/lib/guard/rspec/dsl.rb +72 -0
  21. data/lib/guard/rspec/inspectors/base_inspector.rb +73 -0
  22. data/lib/guard/rspec/inspectors/factory.rb +23 -0
  23. data/lib/guard/rspec/inspectors/focused_inspector.rb +39 -0
  24. data/lib/guard/rspec/inspectors/keeping_inspector.rb +97 -0
  25. data/lib/guard/rspec/inspectors/simple_inspector.rb +21 -0
  26. data/lib/guard/rspec/notifier.rb +55 -0
  27. data/lib/guard/rspec/options.rb +37 -0
  28. data/lib/guard/rspec/results.rb +23 -0
  29. data/lib/guard/rspec/rspec_process.rb +93 -0
  30. data/lib/guard/rspec/runner.rb +71 -174
  31. data/lib/guard/rspec/templates/Guardfile +49 -17
  32. data/lib/guard/rspec/version.rb +1 -1
  33. data/lib/guard/rspec.rb +30 -59
  34. data/lib/guard/rspec_defaults.rb +5 -0
  35. data/lib/guard/rspec_formatter.rb +147 -0
  36. data/lib/guard/rspec_formatter_results_path.rb +29 -0
  37. data/spec/acceptance/fixtures/succeeding_spec.rb +4 -0
  38. data/spec/acceptance/formatter_spec.rb +46 -0
  39. data/spec/lib/guard/rspec/command_spec.rb +95 -0
  40. data/spec/lib/guard/rspec/deprecator_spec.rb +101 -0
  41. data/spec/lib/guard/rspec/inspectors/base_inspector_spec.rb +144 -0
  42. data/spec/lib/guard/rspec/inspectors/factory_spec.rb +45 -0
  43. data/spec/lib/guard/rspec/inspectors/focused_inspector_spec.rb +140 -0
  44. data/spec/lib/guard/rspec/inspectors/keeping_inspector_spec.rb +200 -0
  45. data/spec/lib/guard/rspec/inspectors/shared_examples.rb +121 -0
  46. data/spec/lib/guard/rspec/inspectors/simple_inspector_spec.rb +59 -0
  47. data/spec/lib/guard/rspec/notifier_spec.rb +90 -0
  48. data/spec/lib/guard/rspec/results_spec.rb +66 -0
  49. data/spec/lib/guard/rspec/rspec_process_spec.rb +152 -0
  50. data/spec/lib/guard/rspec/runner_spec.rb +372 -0
  51. data/spec/lib/guard/rspec/template_spec.rb +78 -0
  52. data/spec/lib/guard/rspec_formatter_spec.rb +277 -0
  53. data/spec/lib/guard/rspec_spec.rb +91 -0
  54. data/spec/spec_helper.rb +145 -0
  55. metadata +103 -42
  56. data/lib/guard/rspec/formatter.rb +0 -56
  57. data/lib/guard/rspec/inspector.rb +0 -72
@@ -0,0 +1,46 @@
1
+ require 'pathname'
2
+ require 'tempfile'
3
+
4
+ require 'gem_isolator'
5
+
6
+ RSpec.describe "Formatter test", type: :acceptance do
7
+ context "when isolated" do
8
+ before { allow(Kernel).to receive(:system).and_call_original }
9
+
10
+ let!(:formatter) { File.expand_path('lib/guard/rspec_formatter.rb') }
11
+
12
+ context "when a valid results file path is given" do
13
+ around do |example|
14
+ Tempfile.open('results') do |tempfile|
15
+ @results_file = tempfile.path
16
+ example.run
17
+ end
18
+ end
19
+
20
+ context "when a succeeding command is given" do
21
+ let!(:spec) do
22
+ File.expand_path('spec/acceptance/fixtures/succeeding_spec.rb')
23
+ end
24
+
25
+ let(:rspec_args) do
26
+ ['-r', formatter, '-f', 'Guard::RSpecFormatter', spec]
27
+ end
28
+
29
+ context "when guard is not in Gemfile" do
30
+ let(:gems) { [%w(rspec ~>3.4)] }
31
+
32
+ it "works" do
33
+ GemIsolator.isolate(gems: gems) do |env, isolation|
34
+ env = env.merge('GUARD_RSPEC_RESULTS_FILE' => @results_file)
35
+
36
+ # TODO: I don't know why Travis needs a full path for binaries
37
+ # for system() to work.
38
+ rspec = env['PATH'].sub(/:.*/, '/rspec')
39
+ expect(isolation.system(env, rspec, *rspec_args)).to eq(true)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,95 @@
1
+ require "launchy"
2
+
3
+ require "guard/compat/test/helper"
4
+ require "guard/rspec/command"
5
+
6
+ RSpec.describe Guard::RSpec::Command do
7
+ let(:options) { {} }
8
+ let(:paths) { %w(path1 path2) }
9
+ let(:command) { Guard::RSpec::Command.new(paths, options) }
10
+
11
+ describe ".initialize" do
12
+ it "sets paths at the end" do
13
+ expect(command).to match(/path1 path2$/)
14
+ end
15
+
16
+ it "sets custom failure exit code" do
17
+ expect(command).to match(/--failure-exit-code 2/)
18
+ end
19
+
20
+ it "sets formatter" do
21
+ regexp = %r{-r .*/lib/guard/rspec_formatter.rb -f Guard::RSpecFormatter}
22
+ expect(command).to match(regexp)
23
+ end
24
+
25
+ context "with custom cmd" do
26
+ let(:options) { { cmd: "rspec -t ~slow" } }
27
+
28
+ it "uses custom cmd" do
29
+ expect(command).to match(/^rspec -t ~slow/)
30
+ end
31
+ end
32
+
33
+ context "with RSpec defined formatter" do
34
+ let(:formatters) { [%w(doc output)] }
35
+
36
+ before do
37
+ allow(RSpec::Core::ConfigurationOptions).to receive(:new) do
38
+ instance_double(RSpec::Core::ConfigurationOptions,
39
+ options: { formatters: formatters })
40
+ end
41
+ end
42
+
43
+ it "uses them" do
44
+ expect(command).to match(/-f doc -o output/)
45
+ end
46
+ end
47
+
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
+
56
+ it "sets default progress formatter" do
57
+ expect(command).to match(/-f progress/)
58
+ end
59
+ end
60
+
61
+ context "with formatter in cmd" do
62
+ let(:options) { { cmd: "rspec -f doc" } }
63
+
64
+ it "sets no other formatters" do
65
+ expect(command).to match(/-f doc/)
66
+ end
67
+ end
68
+
69
+ context "with cmd_additional_args" do
70
+ let(:options) { { cmd: "rspec", cmd_additional_args: "-f progress" } }
71
+
72
+ it "uses them" do
73
+ expect(command).to match(/-f progress/)
74
+ end
75
+ end
76
+
77
+ context ":chdir option present" do
78
+ let(:chdir) { "moduleA" }
79
+ let(:paths) do
80
+ %w(path1 path2).map { |p| "#{chdir}#{File::Separator}#{p}" }
81
+ end
82
+
83
+ let(:options) do
84
+ {
85
+ cmd: "cd #{chdir} && rspec",
86
+ chdir: chdir
87
+ }
88
+ end
89
+
90
+ it "strips path of chdir" do
91
+ expect(command).to match(/path1 path2/)
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,101 @@
1
+ require "guard/compat/test/helper"
2
+ require "guard/rspec/deprecator"
3
+
4
+ RSpec.describe Guard::RSpec::Deprecator do
5
+ let(:options) { {} }
6
+ let(:deprecator) { Guard::RSpec::Deprecator.new(options) }
7
+
8
+ describe "#warns_about_deprecated_options" do
9
+ describe "handling of environment variable SPEC_OPTS" do
10
+ it "shows warning if SPEC_OPTS is set" do
11
+ ENV["SPEC_OPTS"] = "-f p"
12
+ expect(Guard::Compat::UI).to receive(:warning).with(
13
+ "The SPEC_OPTS environment variable is present." \
14
+ " This can conflict with guard-rspec."
15
+ )
16
+ deprecator.warns_about_deprecated_options
17
+ ENV["SPEC_OPTS"] = nil # otherwise other specs pick it up and fail
18
+ end
19
+ it "does not show warning if SPEC_OPTS is unset" do
20
+ expect(Guard::Compat::UI).to_not receive(:warning).with(
21
+ "The SPEC_OPTS environment variable is present." \
22
+ " This can conflict with guard-rspec."
23
+ )
24
+ deprecator.warns_about_deprecated_options
25
+ end
26
+ end
27
+
28
+ describe "with version option" do
29
+ let(:options) { { version: 1 } }
30
+
31
+ it "shows deprecation warning" do
32
+ expect(Guard::Compat::UI).to receive(:warning).with(
33
+ "Guard::RSpec DEPRECATION WARNING:" \
34
+ " The :version option is deprecated." \
35
+ " Only RSpec ~> 2.14 is now supported."
36
+ )
37
+ deprecator.warns_about_deprecated_options
38
+ end
39
+ end
40
+
41
+ describe "with exclude option" do
42
+ let(:options) { { exclude: "**" } }
43
+
44
+ it "shows deprecation warning" do
45
+ expect(Guard::Compat::UI).to receive(:warning).with(
46
+ "Guard::RSpec DEPRECATION WARNING:" \
47
+ " The :exclude option is deprecated." \
48
+ " Please Guard ignore method instead." \
49
+ " https://github.com/guard/guard#ignore"
50
+ )
51
+ deprecator.warns_about_deprecated_options
52
+ end
53
+ end
54
+
55
+ %w(color drb fail_fast formatter env bundler binstubs rvm cli
56
+ spring turnip zeus foreman).each do |option|
57
+ describe "with #{option} option" do
58
+ let(:options) { { option.to_sym => 1 } }
59
+
60
+ it "shows deprecation warning" do
61
+ expect(Guard::Compat::UI).to receive(:warning).with(
62
+ "Guard::RSpec DEPRECATION WARNING: The :#{option} option is" \
63
+ " deprecated. Please customize the new :cmd option to" \
64
+ " fit your need."
65
+ )
66
+ deprecator.warns_about_deprecated_options
67
+ end
68
+ end
69
+ end
70
+
71
+ describe "with keep_failed option" do
72
+ let(:options) { { keep_failed: true } }
73
+
74
+ it "shows deprecation warning" do
75
+ expect(Guard::Compat::UI).to receive(:warning).with(
76
+ "Guard::RSpec DEPRECATION WARNING:" \
77
+ " The :keep_failed option is deprecated." \
78
+ " Please set new :failed_mode option value to" \
79
+ " :keep instead." \
80
+ " https://github.com/guard/guard-rspec#list-of-available-options"
81
+ )
82
+ deprecator.warns_about_deprecated_options
83
+ end
84
+ end
85
+
86
+ describe "with focus_on_failed option" do
87
+ let(:options) { { focus_on_failed: true } }
88
+
89
+ it "shows deprecation warning" do
90
+ expect(Guard::Compat::UI).to receive(:warning).with(
91
+ "Guard::RSpec DEPRECATION WARNING:" \
92
+ " The :focus_on_failed option is deprecated." \
93
+ " Please set new :failed_mode option value to" \
94
+ " :focus instead." \
95
+ " https://github.com/guard/guard-rspec#list-of-available-options"
96
+ )
97
+ deprecator.warns_about_deprecated_options
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,144 @@
1
+ require "guard/compat/test/helper"
2
+
3
+ require "guard/rspec/inspectors/base_inspector"
4
+
5
+ RSpec.describe Guard::RSpec::Inspectors::BaseInspector do
6
+ let(:options) { { custom: "value", spec_paths: %w(myspec) } }
7
+ let(:inspector) { Guard::RSpec::Inspectors::BaseInspector.new(options) }
8
+ let(:paths) { %w(spec/foo_spec.rb spec/bar_spec.rb) }
9
+
10
+ describe ".initialize" do
11
+ it "sets options and spec_paths" do
12
+ expect(inspector.options).to include(:custom, :spec_paths)
13
+ expect(inspector.options[:custom]).to eq("value")
14
+ expect(inspector.spec_paths).to eq(%w(myspec))
15
+ end
16
+ end
17
+
18
+ describe "#paths" do
19
+ it "should not be implemented here" do
20
+ expect { inspector.paths(paths) }.to raise_error(NotImplementedError)
21
+ end
22
+
23
+ context "specific inspector" do
24
+ class FooInspector < Guard::RSpec::Inspectors::BaseInspector
25
+ def paths(paths)
26
+ _clean(paths)
27
+ end
28
+ end
29
+
30
+ let(:options) do
31
+ {
32
+ chdir: chdir,
33
+ spec_paths: ["spec"]
34
+ }
35
+ end
36
+ let(:chdir) { nil }
37
+ let(:inspector) { FooInspector.new(options) }
38
+
39
+ subject { inspector.paths(paths) }
40
+
41
+ context "with dirs" do
42
+ let(:paths) { ["spec"] }
43
+
44
+ it "returns matching paths" do
45
+ allow(File).to receive(:directory?).
46
+ with("spec").and_return(false)
47
+
48
+ allow(Dir).to receive(:[]).and_return(["foo"])
49
+
50
+ expect(subject).to eq(paths)
51
+ end
52
+
53
+ context "chdir option present" do
54
+ let(:chdir) { "moduleA" }
55
+ let(:paths) { ["#{chdir}/spec"] }
56
+
57
+ it "returns matching paths" do
58
+ allow(Dir).to receive(:[]).
59
+ with("moduleA/spec/**{,/*/**}/*[_.]spec.rb").
60
+ and_return(paths)
61
+
62
+ allow(Dir).to receive(:[]).
63
+ with("moduleA/spec/**{,/*/**}/*.feature").
64
+ and_return([])
65
+
66
+ allow(File).to receive(:directory?).
67
+ with("moduleA/spec").and_return(false)
68
+
69
+ expect(subject).to eq(paths)
70
+ end
71
+ end
72
+ end
73
+
74
+ context "with spec files" do
75
+ let(:paths) do
76
+ ["app/models/a_foo.rb", "spec/models/a_foo_spec.rb"]
77
+ end
78
+ let(:spec_files) do
79
+ [["spec/models/a_foo_spec.rb",
80
+ "spec/models/b_foo_spec.rb"]]
81
+ end
82
+
83
+ it "returns matching paths" do
84
+ allow(File).to receive(:directory?).with("app/models/a_foo.rb").
85
+ and_return(false)
86
+
87
+ allow(File).to receive(:directory?).with("spec/models/a_foo_spec.rb").
88
+ and_return(false)
89
+
90
+ allow(Dir).to receive(:[]).with("spec/**{,/*/**}/*[_.]spec.rb").
91
+ and_return(spec_files)
92
+
93
+ allow(Dir).to receive(:[]).with("spec/**{,/*/**}/*.feature").
94
+ and_return([])
95
+
96
+ expect(subject).to eq(["spec/models/a_foo_spec.rb"])
97
+ end
98
+
99
+ context "chdir option present" do
100
+ let(:chdir) { "moduleA" }
101
+ let(:paths) do
102
+ ["moduleA/models/a_foo.rb", "spec/models/a_foo_spec.rb"]
103
+ end
104
+
105
+ let(:spec_files) do
106
+ [["moduleA/spec/models/a_foo_spec.rb",
107
+ "moduleA/spec/models/b_foo_spec.rb"]]
108
+ end
109
+
110
+ it "returns matching paths" do
111
+ allow(File).to receive(:directory?).with("moduleA/models/a_foo.rb").
112
+ and_return(false)
113
+
114
+ allow(File).to receive(:directory?).
115
+ with("spec/models/a_foo_spec.rb").
116
+ and_return(false)
117
+
118
+ allow(Dir).to receive(:[]).
119
+ with("moduleA/spec/**{,/*/**}/*[_.]spec.rb").
120
+ and_return(spec_files)
121
+
122
+ allow(Dir).to receive(:[]).
123
+ with("moduleA/spec/**{,/*/**}/*.feature").
124
+ and_return([])
125
+
126
+ expect(subject).to eq(["spec/models/a_foo_spec.rb"])
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
132
+
133
+ describe "#failed" do
134
+ it "should not be implemented here" do
135
+ expect { inspector.failed(paths) }.to raise_error(NotImplementedError)
136
+ end
137
+ end
138
+
139
+ describe "#reload" do
140
+ it "should not be implemented here" do
141
+ expect { inspector.reload }.to raise_error(NotImplementedError)
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,45 @@
1
+ require "guard/compat/test/helper"
2
+
3
+ require "guard/rspec/inspectors/factory"
4
+
5
+ RSpec.describe Guard::RSpec::Inspectors::Factory do
6
+ let(:factory) { Guard::RSpec::Inspectors::Factory }
7
+ let(:options) { {} }
8
+
9
+ it "can not be instantiated" do
10
+ expect { factory.new(options) }.to raise_error(NoMethodError)
11
+ end
12
+
13
+ context "with :focus failed mode and custom options" do
14
+ let(:options) { { failed_mode: :focus, custom: "value" } }
15
+
16
+ it "creates FocusedInspector instance with custom options" do
17
+ inspector = factory.create(options)
18
+ expect(inspector).
19
+ to be_an_instance_of(Guard::RSpec::Inspectors::FocusedInspector)
20
+ expect(inspector.options).to eq(options)
21
+ end
22
+ end
23
+
24
+ context "with :keep failed mode and custom options" do
25
+ let(:options) { { failed_mode: :keep, custom: "value" } }
26
+
27
+ it "creates KeepingInspector instance with custom options" do
28
+ inspector = factory.create(options)
29
+ expect(inspector).
30
+ to be_an_instance_of(Guard::RSpec::Inspectors::KeepingInspector)
31
+ expect(inspector.options).to eq(options)
32
+ end
33
+ end
34
+
35
+ context "with :none failed mode and custom options" do
36
+ let(:options) { { failed_mode: :none, custom: "value" } }
37
+
38
+ it "creates SimpleInspector instance with custom options" do
39
+ inspector = factory.create(options)
40
+ expect(inspector).
41
+ to be_an_instance_of(Guard::RSpec::Inspectors::SimpleInspector)
42
+ expect(inspector.options).to eq(options)
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,140 @@
1
+ require "guard/compat/test/helper"
2
+
3
+ require "lib/guard/rspec/inspectors/shared_examples"
4
+
5
+ require "guard/rspec/inspectors/focused_inspector"
6
+
7
+ klass = Guard::RSpec::Inspectors::FocusedInspector
8
+
9
+ RSpec.describe klass do
10
+ include_examples "inspector", klass
11
+
12
+ # Use real paths because BaseInspector#_clean will be used to clean them
13
+ let(:other_paths) do
14
+ [
15
+ "spec/lib/guard/rspec/inspectors/simple_inspector_spec.rb",
16
+ "spec/lib/guard/rspec/runner_spec.rb"
17
+ ]
18
+ end
19
+
20
+ let(:other_failed_locations) do
21
+ %w(./spec/lib/guard/rspec/deprecator_spec.rb:446)
22
+ end
23
+
24
+ it "remembers failed paths and returns them until they all pass" do
25
+ allow(File).to receive(:directory?).
26
+ with("spec/lib/guard/rspec/inspectors/base_inspector_spec.rb").
27
+ and_return(false)
28
+
29
+ allow(File).to receive(:directory?).
30
+ with("spec/lib/guard/rspec/inspectors/simple_inspector_spec.rb").
31
+ and_return(false)
32
+
33
+ allow(File).to receive(:directory?).
34
+ with("spec/lib/guard/rspec/runner_spec.rb").
35
+ and_return(false)
36
+
37
+ allow(File).to receive(:directory?).
38
+ with("spec/lib/guard/rspec/deprecator_spec.rb").
39
+ and_return(false)
40
+
41
+ allow(Dir).to receive(:[]).with("spec/**{,/*/**}/*[_.]spec.rb").
42
+ and_return(paths + other_paths)
43
+
44
+ allow(Dir).to receive(:[]).with("myspec/**{,/*/**}/*[_.]spec.rb").
45
+ and_return([])
46
+
47
+ allow(Dir).to receive(:[]).with("myspec/**{,/*/**}/*.feature").
48
+ and_return([])
49
+
50
+ allow(Dir).to receive(:[]).with("spec/**{,/*/**}/*.feature").
51
+ and_return([])
52
+
53
+ expect(inspector.paths(paths)).to match_array(paths)
54
+ inspector.failed(failed_locations)
55
+
56
+ # Return failed_locations until they pass
57
+ 3.times do
58
+ expect(inspector.paths(other_paths)).to match_array(failed_locations)
59
+ inspector.failed(other_failed_locations)
60
+
61
+ expect(inspector.paths(paths)).to match_array(failed_locations)
62
+ inspector.failed(other_failed_locations)
63
+
64
+ expect(inspector.paths([])).to match_array(failed_locations)
65
+ inspector.failed(failed_locations)
66
+ end
67
+
68
+ # Now all pass
69
+ expect(inspector.paths(paths)).to match_array(failed_locations)
70
+ inspector.failed([])
71
+
72
+ # And some fails again
73
+ expect(inspector.paths(other_paths)).to match_array(other_paths)
74
+ inspector.failed(other_failed_locations)
75
+
76
+ # Return other_failed_locations until they pass
77
+ 3.times do
78
+ expect(inspector.paths(other_paths)).
79
+ to match_array(other_failed_locations)
80
+
81
+ inspector.failed(other_failed_locations)
82
+
83
+ expect(inspector.paths(paths)).to match_array(other_failed_locations)
84
+ inspector.failed(other_failed_locations)
85
+
86
+ expect(inspector.paths([])).to match_array(other_failed_locations)
87
+ inspector.failed(failed_locations)
88
+ end
89
+
90
+ # Now all pass
91
+ expect(inspector.paths(paths)).to match_array(other_failed_locations)
92
+ inspector.failed([])
93
+
94
+ expect(inspector.paths(paths)).to match_array(paths)
95
+ inspector.failed([])
96
+
97
+ expect(inspector.paths(other_paths)).to match_array(other_paths)
98
+ inspector.failed([])
99
+
100
+ expect(inspector.paths([])).to eq([])
101
+ end
102
+
103
+ describe "#reload" do
104
+ it "force to forget about focused locations" do
105
+ allow(File).to receive(:directory?).
106
+ with("spec/lib/guard/rspec/inspectors/base_inspector_spec.rb").
107
+ and_return(false)
108
+
109
+ allow(File).to receive(:directory?).
110
+ with("spec/lib/guard/rspec/runner_spec.rb").
111
+ and_return(false)
112
+
113
+ allow(File).to receive(:directory?).
114
+ with("spec/lib/guard/rspec/deprecator_spec.rb").
115
+ and_return(false)
116
+
117
+ allow(Dir).to receive(:[]).with("spec/**{,/*/**}/*[_.]spec.rb").
118
+ and_return(paths + other_paths)
119
+
120
+ allow(Dir).to receive(:[]).with("myspec/**{,/*/**}/*[_.]spec.rb").
121
+ and_return([])
122
+
123
+ allow(Dir).to receive(:[]).with("myspec/**{,/*/**}/*.feature").
124
+ and_return([])
125
+
126
+ allow(Dir).to receive(:[]).with("spec/**{,/*/**}/*.feature").
127
+ and_return([])
128
+
129
+ allow(File).to receive(:directory?).
130
+ with("spec/lib/guard/rspec/inspectors/simple_inspector_spec.rb").
131
+ and_return(false)
132
+
133
+ expect(inspector.paths(paths)).to match_array(paths)
134
+ inspector.failed(failed_locations)
135
+
136
+ inspector.reload
137
+ expect(inspector.paths(other_paths)).to match_array(other_paths)
138
+ end
139
+ end
140
+ end