11require "guard/rspec/inspectors/factory"
22require "guard/rspec/command"
33require "guard/rspec/notifier"
4+ require "guard/rspec/results"
45
56module Guard
67 class RSpec < Plugin
@@ -41,8 +42,12 @@ def _run(all, paths, options)
4142 return unless _cmd_option_present ( options )
4243 command = Command . new ( paths , options )
4344
44- _without_bundler_env { Kernel . system ( command ) } . tap do |success |
45- _process_run_result ( success , all )
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
4651 end
4752 end
4853
@@ -68,13 +73,7 @@ def _command_success?(success)
6873
6974 def _command_output
7075 formatter_tmp_file = _tmp_file ( options [ :chdir ] )
71- lines = File . readlines ( formatter_tmp_file )
72- summary = lines . first . strip
73- failed_paths = lines [ 1 ..11 ] . map ( &:strip ) . compact
74-
75- [ summary , failed_paths ]
76- rescue
77- [ nil , nil ]
76+ Results . new ( formatter_tmp_file )
7877 ensure
7978 File . delete ( formatter_tmp_file ) if File . exist? ( formatter_tmp_file )
8079 end
@@ -92,19 +91,9 @@ def _run_all_after_pass
9291 end
9392
9493 def _process_run_result ( result , all )
95- unless _command_success? ( result )
96- notifier . notify_failure
97- return
98- end
99-
100- summary , failed_paths = _command_output
101- unless summary && failed_paths
102- notifier . notify_failure
103- return
104- end
105-
106- inspector . failed ( failed_paths )
107- notifier . notify ( summary )
94+ results = _command_output
95+ inspector . failed ( results . failed_paths )
96+ notifier . notify ( results . summary )
10897 _open_launchy
10998
11099 _run_all_after_pass if !all && result
0 commit comments