guard-rubocop 0.0.4 → 0.1.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: 0dfc8d85682b0eb89593cac569aeb9c3287c0f3c
4
- data.tar.gz: 09fe402f245769e82794e2da20af64c6474f2c44
3
+ metadata.gz: c0c295908d4ca4ca5f79bd5c4d85857dc2a05140
4
+ data.tar.gz: 7cd9a0ff0f3858ab1a9182cb4b2645e2778a8b2c
5
5
  SHA512:
6
- metadata.gz: 73d2c70b2fa70867c5955f399e13485e36a8740ee5dc496d96abc568e72b5539affe589614de1c20aa8daa236f4a69c47a2734a91050bc2fbc2168a017e97b7d
7
- data.tar.gz: d008aeeccc2be2404307980b01f8e5028508927871fbb1904c025920bfae005c3f23bffeec66f9e6f52c8c90e15e80303dbe46c61836f7115b4a7a56d263d7f9
6
+ metadata.gz: 84c30fe8fb9538d668bd2951ffd428dce9204d01f725f7ebb6df772652ec3223c767d9bc68a60d5f9f98b6b38aaaec44dc1cd7c9dfb9a84b8e72b8798141f5f5
7
+ data.tar.gz: b1d22e396e96132d9749a87aae7af718dac2a7c2b425b1a803836a7fdfdc8b793c49b89fd8423b6c83aa191f00950bfe8cc06cb3b745db31955c267a991ed1ad
@@ -0,0 +1,26 @@
1
+ # CHANGELOG
2
+
3
+ ## v0.1.0
4
+
5
+ * Update RuboCop dependency to 0.9 or later and earlier than 1.0
6
+ * Rework with JSON formatter
7
+ * Change the displayed text to "Inspecting ..."
8
+ * Print relative file paths when they are under current working directory
9
+
10
+ ## v0.0.4
11
+
12
+ * Specify dependency on rubocop gem as under 0.9.0
13
+ * Force RuboCop to colorize output even though output is not TTY
14
+ * Revert "Use rubocop 0.6.1 --no-color option instead of uncoloring colored output"
15
+
16
+ ## v0.0.3
17
+
18
+ * Use rubocop 0.6.1 --no-color option instead of uncoloring colored output
19
+
20
+ ## v0.0.2
21
+
22
+ * Fix capitalization of the name RuboCop in notification title
23
+
24
+ ## v0.0.1
25
+
26
+ * Initial release
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.authors = ['Yuji Nakayama']
12
12
  spec.email = ['nkymyj@gmail.com']
13
13
  spec.summary = 'Guard plugin for RuboCop'
14
- spec.description = 'Guard::Rubocop allows you to automatically check Ruby code style with RuboCop when files are modified.'
14
+ spec.description = 'Guard::Rubocop automatically checks Ruby code style with RuboCop when files are modified.'
15
15
  spec.homepage = 'https://github.com/yujinakayama/guard-rubocop'
16
16
  spec.license = 'MIT'
17
17
 
@@ -20,10 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_runtime_dependency "guard", '~> 1.8'
24
- spec.add_runtime_dependency "rubocop", ['>= 0.8.2', '< 0.9.0']
25
- spec.add_runtime_dependency "childprocess", '~> 0.3'
26
- spec.add_runtime_dependency "term-ansicolor", '~> 1.1'
23
+ spec.add_runtime_dependency 'guard', '~> 1.8'
24
+ spec.add_runtime_dependency 'rubocop', '~> 0.9'
27
25
 
28
26
  spec.add_development_dependency 'bundler', '~> 1.3'
29
27
  spec.add_development_dependency 'rake', '~> 10.0'
@@ -26,26 +26,18 @@ module Guard
26
26
  end
27
27
 
28
28
  def run_all
29
- UI.info 'Checking Ruby code style of all files'
30
-
31
- runner = Runner.new(@options)
32
- passed = runner.run
33
- @failed_paths = runner.failed_paths
34
-
35
- throw :task_has_failed unless passed
29
+ UI.info 'Inspecting Ruby code style of all files'
30
+ run
36
31
  end
37
32
 
38
33
  def run_on_changes(paths)
39
34
  paths += @failed_paths if @options[:keep_failed]
40
35
  paths = clean_paths(paths)
41
36
 
42
- UI.info "Checking Ruby code styles: #{paths.join(' ')}"
37
+ displayed_paths = paths.map { |path| smart_path(path) }
38
+ UI.info "Inspecting Ruby code style: #{displayed_paths.join(' ')}"
43
39
 
44
- runner = Runner.new(@options)
45
- passed = runner.run(paths)
46
- @failed_paths = runner.failed_paths
47
-
48
- throw :task_has_failed unless passed
40
+ run(paths)
49
41
  end
50
42
 
51
43
  def reload
@@ -64,6 +56,16 @@ module Guard
64
56
 
65
57
  private
66
58
 
59
+ def run(paths = [])
60
+ runner = Runner.new(@options)
61
+ passed = runner.run(paths)
62
+ @failed_paths = runner.failed_paths
63
+ throw :task_has_failed unless passed
64
+ rescue => error
65
+ UI.error 'The following exception occurred while running guard-rubocop: ' +
66
+ "#{error.backtrace.first} #{error.message} (#{error.class.name})"
67
+ end
68
+
67
69
  def included_in_other_path?(target_path, other_paths)
68
70
  dir_paths = other_paths.select { |path| File.directory?(path) }
69
71
  dir_paths.delete(target_path)
@@ -71,5 +73,13 @@ module Guard
71
73
  target_path.start_with?(dir_path)
72
74
  end
73
75
  end
76
+
77
+ def smart_path(path)
78
+ if path.start_with?(Dir.pwd)
79
+ Pathname.new(path).relative_path_from(Pathname.getwd).to_s
80
+ else
81
+ path
82
+ end
83
+ end
74
84
  end
75
85
  end
@@ -1,98 +1,91 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'childprocess'
4
- require 'term/ansicolor'
3
+ require 'json'
5
4
 
6
5
  module Guard
7
6
  class Rubocop
8
7
  class Runner
9
- PASSED_EXIT_CODE = 0
10
- MINIMUM_POLL_INTERVAL = 0.1
11
-
12
- attr_reader :passed, :output
13
-
14
- alias_method :passed?, :passed
15
-
16
8
  def initialize(options)
17
9
  @options = options
18
10
  end
19
11
 
20
12
  def run(paths = [])
21
- exit_code, output = rubocop(paths)
22
- @passed = (exit_code == PASSED_EXIT_CODE)
23
- @output = Term::ANSIColor.uncolor(output)
13
+ command = build_command(paths)
14
+ passed = system(*command)
24
15
 
25
16
  case @options[:notification]
26
17
  when :failed
27
- notify unless passed?
18
+ notify(passed) unless passed
28
19
  when true
29
- notify
20
+ notify(passed)
30
21
  end
31
22
 
32
23
  passed
33
24
  end
34
25
 
35
- def rubocop(args)
36
- process = ChildProcess.build('rubocop', *args)
37
-
38
- # Force Rainbow inside RuboCop to colorize output
39
- # even though output is not TTY.
40
- # https://github.com/sickill/rainbow/blob/0b64edc/lib/rainbow.rb#L7
41
- process.environment['CLICOLOR_FORCE'] = '1'
42
-
43
- stdout_reader, process.io.stdout = IO.pipe
44
- process.start
45
-
46
- output = ''
26
+ def build_command(paths)
27
+ command = ['rubocop']
28
+ command.concat(%w(--format progress)) # Keep default formatter for console.
29
+ command.concat(['--format', 'json', '--out', json_file_path])
30
+ command.concat(paths)
31
+ end
47
32
 
48
- loop do
49
- output << capture_and_print_output(stdout_reader)
50
- break if process.exited?
33
+ def json_file_path
34
+ @tempfile_path ||= begin
35
+ # Just generate random tempfile path.
36
+ basename = self.class.name.downcase.gsub('::', '_')
37
+ tempfile = Tempfile.new(basename)
38
+ tempfile.close
39
+ tempfile.path
51
40
  end
41
+ end
52
42
 
53
- [process.exit_code, output]
43
+ def result
44
+ @result ||= begin
45
+ File.open(json_file_path) do |file|
46
+ JSON.load(file, nil, symbolize_names: true)
47
+ end
48
+ end
54
49
  end
55
50
 
56
- def notify
51
+ def notify(passed)
57
52
  image = passed ? :success : :failed
58
- Notifier.notify(summary, title: 'RuboCop results', image: image)
53
+ Notifier.notify(summary_text, title: 'RuboCop results', image: image)
59
54
  end
60
55
 
61
- def summary
62
- return nil unless output
63
- output.lines.to_a.last.chomp
56
+ def summary_text
57
+ summary = result[:summary]
58
+
59
+ text = pluralize(summary[:inspected_file_count], 'file')
60
+ text << ' inspected, '
61
+
62
+ text << pluralize(summary[:offence_count], 'offence', no_for_zero: true)
63
+ text << ' detected'
64
64
  end
65
65
 
66
66
  def failed_paths
67
- return [] unless output
68
- output.scan(/^== (.+) ==$/).flatten
67
+ failed_files = result[:files].reject do |file|
68
+ file[:offences].empty?
69
+ end
70
+ failed_files.map do |file|
71
+ file[:path]
72
+ end
69
73
  end
70
74
 
71
- private
72
-
73
- def capture_and_print_output(output)
74
- available_ios, = IO.select([output], nil, nil, MINIMUM_POLL_INTERVAL)
75
- return '' unless available_ios
76
- chunk = available_ios.first.read_available_nonblock
77
- $stdout.write chunk
78
- chunk
79
- end
75
+ def pluralize(number, thing, options = {})
76
+ text = ''
80
77
 
81
- class IO < ::IO
82
- READ_CHUNK_SIZE = 10000
83
-
84
- def read_available_nonblock
85
- data = ''
86
- loop do
87
- begin
88
- data << read_nonblock(READ_CHUNK_SIZE)
89
- rescue ::IO::WaitReadable, EOFError
90
- return data
91
- end
92
- end
78
+ if number == 0 && options[:no_for_zero]
79
+ text = 'no'
80
+ else
81
+ text << number.to_s
93
82
  end
94
- end
95
83
 
84
+ text << " #{thing}"
85
+ text << 's' unless number == 1
86
+
87
+ text
88
+ end
96
89
  end
97
90
  end
98
91
  end
@@ -6,8 +6,8 @@ module Guard
6
6
  module RubocopVersion
7
7
  # http://semver.org/
8
8
  MAJOR = 0
9
- MINOR = 0
10
- PATCH = 4
9
+ MINOR = 1
10
+ PATCH = 0
11
11
  VERSION = [MAJOR, MINOR, PATCH].join('.')
12
12
  end
13
13
  end
@@ -1,11 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
3
  require 'spec_helper.rb'
4
- require 'term/ansicolor'
5
-
6
- describe Guard::Rubocop::Runner, :silence_output do
7
- include CaptureHelper
8
4
 
5
+ describe Guard::Rubocop::Runner do
9
6
  subject(:runner) { Guard::Rubocop::Runner.new(options) }
10
7
  let(:options) { {} }
11
8
 
@@ -14,24 +11,26 @@ describe Guard::Rubocop::Runner, :silence_output do
14
11
  let(:paths) { ['spec/spec_helper.rb'] }
15
12
 
16
13
  before do
17
- runner.stub(:rubocop)
14
+ runner.stub(:system)
18
15
  end
19
16
 
20
17
  it 'executes rubocop' do
21
- runner.should_receive(:rubocop)
18
+ runner.should_receive(:system) do |*args|
19
+ args.first.should == 'rubocop'
20
+ end
22
21
  runner.run
23
22
  end
24
23
 
25
- context 'when all files are passed' do
24
+ context 'when RuboCop exited with 0 status' do
26
25
  before do
27
- runner.stub(:rubocop).and_return(0)
26
+ runner.stub(:system).and_return(true)
28
27
  end
29
28
  it { should be_true }
30
29
  end
31
30
 
32
- context 'when any file is failed' do
31
+ context 'when RuboCop exited with non 0 status' do
33
32
  before do
34
- runner.stub(:rubocop).and_return(1)
33
+ runner.stub(:system).and_return(false)
35
34
  end
36
35
  it { should be_false }
37
36
  end
@@ -53,7 +52,7 @@ describe Guard::Rubocop::Runner, :silence_output do
53
52
  shared_examples 'notification' do |expectations|
54
53
  context 'when passed' do
55
54
  before do
56
- runner.stub(:rubocop).and_return(0)
55
+ runner.stub(:system).and_return(true)
57
56
  end
58
57
 
59
58
  if expectations[:passed]
@@ -65,7 +64,7 @@ describe Guard::Rubocop::Runner, :silence_output do
65
64
 
66
65
  context 'when failed' do
67
66
  before do
68
- runner.stub(:rubocop).and_return(1)
67
+ runner.stub(:system).and_return(false)
69
68
  end
70
69
 
71
70
  if expectations[:failed]
@@ -92,116 +91,198 @@ describe Guard::Rubocop::Runner, :silence_output do
92
91
  end
93
92
  end
94
93
 
95
- describe '#rubocop' do
96
- let(:paths) { ['spec/spec_helper.rb'] }
94
+ describe '#build_command' do
95
+ let(:paths) { %w(file1.rb file2.rb) }
97
96
 
98
- it 'runs rubocop command' do
99
- capture(:stdout) do
100
- runner.rubocop(paths)
101
- end.should include 'inspected'
97
+ it 'adds args for the default formatter for console' do
98
+ runner.build_command(paths)[0..2].should == %w(rubocop --format progress)
102
99
  end
103
100
 
104
- it 'returns exit code and output' do
105
- exit_code, output = runner.rubocop(paths)
106
- exit_code.should == 0
107
- output.should include 'inspected'
101
+ it 'adds args for JSON formatter ' do
102
+ runner.build_command(paths)[3..4].should == %w(--format json)
108
103
  end
109
- end
110
-
111
- describe '#output' do
112
- subject { super().output }
113
- let(:paths) { ['spec/spec_helper.rb'] }
114
104
 
115
- context 'before running' do
116
- it { should be_nil }
105
+ it 'adds args for output file path of JSON formatter ' do
106
+ command = runner.build_command(paths)
107
+ command[5].should == '--out'
108
+ command[6].should_not be_empty
117
109
  end
118
110
 
119
- context 'after running' do
120
- before do
121
- runner.stub(:notify)
122
- end
111
+ it 'adds the passed paths' do
112
+ runner.build_command(paths)[7..-1].should == %w(file1.rb file2.rb)
113
+ end
114
+ end
123
115
 
124
- it 'returns uncolored output of rubocop command' do
125
- captured_output = capture(:stdout) { runner.run(paths) }
126
- runner.output.should == Term::ANSIColor.uncolor(captured_output)
127
- end
116
+ describe '#json_file_path' do
117
+ it 'is not world readable' do
118
+ File.world_readable?(runner.json_file_path).should be_false
128
119
  end
129
120
  end
130
121
 
131
- shared_context 'stubbed output', :stubbed_output do
122
+ shared_context 'JSON file', :json_file do
132
123
  before do
133
- runner.stub(:output) do
134
- <<OUTPUT
135
- == /home/foo/guard-rubocop/lib/guard/rubocop.rb ==
136
- C: 1: Missing encoding comment.
137
- == /home/foo/guard-rubocop/spec/support/silence_output.rb ==
138
- C: 3: Ruby 1.8 hash syntax detected
124
+ json = <<-END
125
+ {
126
+ "metadata": {
127
+ "rubocop_version": "0.9.0",
128
+ "ruby_engine": "ruby",
129
+ "ruby_version": "2.0.0",
130
+ "ruby_patchlevel": "195",
131
+ "ruby_platform": "x86_64-darwin12.3.0"
132
+ },
133
+ "files": [{
134
+ "path": "lib/foo.rb",
135
+ "offences": []
136
+ }, {
137
+ "path": "lib/bar.rb",
138
+ "offences": [{
139
+ "severity": "convention",
140
+ "message": "Line is too long. [81/79]",
141
+ "cop_name": "LineLength",
142
+ "location": {
143
+ "line": 546,
144
+ "column": 80
145
+ }
146
+ }, {
147
+ "severity": "warning",
148
+ "message": "Unreachable code detected.",
149
+ "cop_name": "UnreachableCode",
150
+ "location": {
151
+ "line": 15,
152
+ "column": 9
153
+ }
154
+ }
155
+ ]
156
+ }
157
+ ],
158
+ "summary": {
159
+ "offence_count": 2,
160
+ "target_file_count": 2,
161
+ "inspected_file_count": 2
162
+ }
163
+ }
164
+ END
165
+ File.write(runner.json_file_path, json)
166
+ end
167
+ end
139
168
 
140
- 7 files inspected, 2 offences detected
141
- OUTPUT
142
- end
169
+ describe '#result', :json_file do
170
+ it 'parses JSON file' do
171
+ runner.result[:summary][:offence_count].should == 2
143
172
  end
144
173
  end
145
174
 
146
- describe '#notify', :stubbed_output do
175
+ describe '#notify' do
176
+ before do
177
+ runner.stub(:result).and_return(
178
+ {
179
+ summary: {
180
+ offence_count: 4,
181
+ target_file_count: 3,
182
+ inspected_file_count: 2
183
+ }
184
+ }
185
+ )
186
+ end
187
+
147
188
  it 'notifies summary' do
148
189
  Guard::Notifier.should_receive(:notify) do |message, options|
149
- message.should == '7 files inspected, 2 offences detected'
190
+ message.should == '2 files inspected, 4 offences detected'
150
191
  end
151
- runner.notify
192
+ runner.notify(true)
152
193
  end
153
194
 
154
195
  it 'notifies with title "RuboCop results"' do
155
196
  Guard::Notifier.should_receive(:notify) do |message, options|
156
197
  options[:title].should == 'RuboCop results'
157
198
  end
158
- runner.notify
199
+ runner.notify(true)
159
200
  end
160
201
 
161
202
  context 'when passed' do
162
- before do
163
- runner.stub(:passed).and_return(true)
164
- end
165
-
166
203
  it 'shows success image' do
167
204
  Guard::Notifier.should_receive(:notify) do |message, options|
168
205
  options[:image].should == :success
169
206
  end
170
- runner.notify
207
+ runner.notify(true)
171
208
  end
172
209
  end
173
210
 
174
211
  context 'when failed' do
175
- before do
176
- runner.stub(:passed).and_return(false)
177
- end
178
-
179
212
  it 'shows failed image' do
180
213
  Guard::Notifier.should_receive(:notify) do |message, options|
181
214
  options[:image].should == :failed
182
215
  end
183
- runner.notify
216
+ runner.notify(false)
184
217
  end
185
218
  end
186
219
  end
187
220
 
188
- describe '#summary', :stubbed_output do
189
- subject { super().summary }
221
+ describe '#summary_text' do
222
+ before do
223
+ runner.stub(:result).and_return(
224
+ {
225
+ summary: {
226
+ offence_count: offence_count,
227
+ target_file_count: target_file_count,
228
+ inspected_file_count: inspected_file_count
229
+ }
230
+ }
231
+ )
232
+ end
233
+
234
+ subject(:summary_text) { runner.summary_text }
235
+
236
+ let(:offence_count) { 0 }
237
+ let(:target_file_count) { 0 }
238
+ let(:inspected_file_count) { 0 }
190
239
 
191
- it 'returns summary line of output' do
192
- should == '7 files inspected, 2 offences detected'
240
+ context 'when no files are inspected' do
241
+ let(:inspected_file_count) { 0 }
242
+ it 'includes "0 files"' do
243
+ summary_text.should include '0 files'
244
+ end
193
245
  end
194
- end
195
246
 
196
- describe '#failed_paths', :stubbed_output do
197
- subject { super().failed_paths }
247
+ context 'when a file is inspected' do
248
+ let(:inspected_file_count) { 1 }
249
+ it 'includes "1 file"' do
250
+ summary_text.should include '1 file'
251
+ end
252
+ end
198
253
 
199
- it 'returns failed file paths as array' do
200
- should == [
201
- '/home/foo/guard-rubocop/lib/guard/rubocop.rb',
202
- '/home/foo/guard-rubocop/spec/support/silence_output.rb'
203
- ]
254
+ context 'when 2 files are inspected' do
255
+ let(:inspected_file_count) { 2 }
256
+ it 'includes "2 files"' do
257
+ summary_text.should include '2 files'
258
+ end
259
+ end
260
+
261
+ context 'when no offences are detected' do
262
+ let(:offence_count) { 0 }
263
+ it 'includes "no offences"' do
264
+ summary_text.should include 'no offences'
265
+ end
266
+ end
267
+
268
+ context 'when an offence is detected' do
269
+ let(:offence_count) { 1 }
270
+ it 'includes "1 offence"' do
271
+ summary_text.should include '1 offence'
272
+ end
273
+ end
274
+
275
+ context 'when 2 offences are detected' do
276
+ let(:offence_count) { 2 }
277
+ it 'includes "2 offences"' do
278
+ summary_text.should include '2 offences'
279
+ end
204
280
  end
205
281
  end
206
282
 
283
+ describe '#failed_paths', :json_file do
284
+ it 'returns file paths which have offences' do
285
+ runner.failed_paths.should == ['lib/bar.rb']
286
+ end
287
+ end
207
288
  end
@@ -73,6 +73,13 @@ describe Guard::Rubocop, :silence_output do
73
73
  guard.failed_paths.should == failed_paths
74
74
  end
75
75
  end
76
+
77
+ context 'when an exception is raised' do
78
+ it 'prevents itself from firing' do
79
+ runner.stub(:run).and_raise(RuntimeError)
80
+ expect { subject }.not_to raise_error
81
+ end
82
+ end
76
83
  end
77
84
 
78
85
  describe '#run_all', :processes_after_running do
@@ -80,10 +87,11 @@ describe Guard::Rubocop, :silence_output do
80
87
 
81
88
  before do
82
89
  runner.stub(:run).and_return(true)
90
+ runner.stub(:failed_paths).and_return([])
83
91
  end
84
92
 
85
93
  it 'inspects all files with rubocop' do
86
- runner.should_receive(:run).with(no_args)
94
+ runner.should_receive(:run).with([])
87
95
  guard.run_all
88
96
  end
89
97
  end
@@ -94,6 +102,7 @@ describe Guard::Rubocop, :silence_output do
94
102
 
95
103
  before do
96
104
  runner.stub(:run).and_return(true)
105
+ runner.stub(:failed_paths).and_return([])
97
106
  end
98
107
 
99
108
  it 'inspects changed files with rubocop' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji Nakayama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-14 00:00:00.000000000 Z
11
+ date: 2013-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -26,52 +26,18 @@ dependencies:
26
26
  version: '1.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: 0.8.2
34
- - - <
35
- - !ruby/object:Gem::Version
36
- version: 0.9.0
37
- type: :runtime
38
- prerelease: false
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - '>='
42
- - !ruby/object:Gem::Version
43
- version: 0.8.2
44
- - - <
45
- - !ruby/object:Gem::Version
46
- version: 0.9.0
47
- - !ruby/object:Gem::Dependency
48
- name: childprocess
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: '0.3'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ~>
59
- - !ruby/object:Gem::Version
60
- version: '0.3'
61
- - !ruby/object:Gem::Dependency
62
- name: term-ansicolor
63
29
  requirement: !ruby/object:Gem::Requirement
64
30
  requirements:
65
31
  - - ~>
66
32
  - !ruby/object:Gem::Version
67
- version: '1.1'
33
+ version: '0.9'
68
34
  type: :runtime
69
35
  prerelease: false
70
36
  version_requirements: !ruby/object:Gem::Requirement
71
37
  requirements:
72
38
  - - ~>
73
39
  - !ruby/object:Gem::Version
74
- version: '1.1'
40
+ version: '0.9'
75
41
  - !ruby/object:Gem::Dependency
76
42
  name: bundler
77
43
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +122,15 @@ dependencies:
156
122
  - - ~>
157
123
  - !ruby/object:Gem::Version
158
124
  version: '0.3'
159
- description: Guard::Rubocop allows you to automatically check Ruby code style with
160
- RuboCop when files are modified.
125
+ description: Guard::Rubocop automatically checks Ruby code style with RuboCop when
126
+ files are modified.
161
127
  email:
162
128
  - nkymyj@gmail.com
163
129
  executables: []
164
130
  extensions: []
165
131
  extra_rdoc_files: []
166
132
  files:
133
+ - CHANGELOG.md
167
134
  - Gemfile
168
135
  - Guardfile
169
136
  - LICENSE.txt
@@ -177,7 +144,6 @@ files:
177
144
  - spec/guard/rubocop/runner_spec.rb
178
145
  - spec/guard/rubocop_spec.rb
179
146
  - spec/spec_helper.rb
180
- - spec/support/capture_helper.rb
181
147
  - spec/support/silence_output.rb
182
148
  homepage: https://github.com/yujinakayama/guard-rubocop
183
149
  licenses:
@@ -207,6 +173,5 @@ test_files:
207
173
  - spec/guard/rubocop/runner_spec.rb
208
174
  - spec/guard/rubocop_spec.rb
209
175
  - spec/spec_helper.rb
210
- - spec/support/capture_helper.rb
211
176
  - spec/support/silence_output.rb
212
177
  has_rdoc:
@@ -1,20 +0,0 @@
1
- # coding: utf-8
2
-
3
- module CaptureHelper
4
- # rubocop:disable Eval
5
- def capture(stream_name)
6
- stream_name = stream_name.to_s.downcase
7
- original_stream = eval("$#{stream_name}")
8
- eval("$#{stream_name} = StringIO.new")
9
-
10
- begin
11
- yield
12
- result = eval("$#{stream_name}").string
13
- ensure
14
- eval("$#{stream_name} = original_stream")
15
- end
16
-
17
- result
18
- end
19
- # rubocop:enable Eval
20
- end