transpec 0.0.10 → 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: e92704929f93992b64fdcb82e658214425bd23cb
4
- data.tar.gz: c224583a7f8d0e0c44bf7f3a715d1c3aeff090ca
3
+ metadata.gz: abbc3182fd195b7473eea1f3bb4fcf8c7386a7c7
4
+ data.tar.gz: c3ea7cfb834e1bb4a65c018416dc809da620ec84
5
5
  SHA512:
6
- metadata.gz: 1da1c8cd1bd30a65f25836b87e7ee6454158eeb7f69462b54e13614cbbc4af90002f1625af5077b5868c249498d356efe6dfc06a4b79c05c5ebe497afae015db
7
- data.tar.gz: 758cb3a86ee46ea070c0a03c814d9c9aa81a82b853e950b5e2ba508ba101df78d63aa24092044609cb52fdc23a5fff90c0646908017d7b1a5c9cbfbb4b1e3748
6
+ metadata.gz: 36bc1599b648b15dc9ab19f66e45e105a521886832179e2ef29643ddb28519d233d2e6a7ee2de34c6bbc2dfbe316ba84d4f9a95175d900fe6b671113d49b7e82
7
+ data.tar.gz: cdf7b01444576de368f5359b79d0e98561e96d624e090ed6df1cfb9f17457d3c7c752cfac8d6e9ee882bbd4ea67c6f34804ca47657f78ddef9bec3382cbdf34e
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## Master
4
4
 
5
+ ## v0.1.0
6
+
7
+ * Highlight source in console when warning conversion error
8
+ * Add `--no-color` option
9
+
5
10
  ## v0.0.10
6
11
 
7
12
  * Support conversion of `at_least(0)`
data/lib/transpec/cli.rb CHANGED
@@ -6,6 +6,7 @@ require 'transpec/rewriter'
6
6
  require 'transpec/version'
7
7
  require 'optparse'
8
8
  require 'find'
9
+ require 'rainbow'
9
10
 
10
11
  module Transpec
11
12
  class CLI
@@ -44,9 +45,7 @@ module Transpec
44
45
  end
45
46
 
46
47
  target_files(paths).each do |file_path|
47
- puts "Processing #{file_path}"
48
- rewriter = Rewriter.new(@configuration)
49
- rewriter.rewrite_file!(file_path)
48
+ process_file(file_path)
50
49
  end
51
50
 
52
51
  # TODO: Print summary
@@ -57,6 +56,17 @@ module Transpec
57
56
  false
58
57
  end
59
58
 
59
+ def process_file(file_path)
60
+ puts "Processing #{file_path}"
61
+
62
+ rewriter = Rewriter.new(@configuration)
63
+ rewriter.rewrite_file!(file_path)
64
+
65
+ rewriter.errors.each do |error|
66
+ warn_not_in_example_group_context_error(error)
67
+ end
68
+ end
69
+
60
70
  # rubocop:disable MethodLength
61
71
  def parse_options(args)
62
72
  parser = OptionParser.new
@@ -114,6 +124,10 @@ module Transpec
114
124
  @configuration.parenthesize_matcher_arg = false
115
125
  end
116
126
 
127
+ parser.on('--no-color', 'Disable color in the output.') do
128
+ Sickill::Rainbow.enabled = false
129
+ end
130
+
117
131
  parser.on('--version', 'Show Transpec version.') do
118
132
  puts Version.to_s
119
133
  exit
@@ -162,5 +176,23 @@ module Transpec
162
176
 
163
177
  fail 'The current Git repository is not clean. Aborting.'
164
178
  end
179
+
180
+ def warn_not_in_example_group_context_error(error)
181
+ message = error.message.color(:yellow) + $RS
182
+ message << highlighted_source(error)
183
+ warn message
184
+ end
185
+
186
+ def highlighted_source(error)
187
+ filename = error.source_buffer.name.color(:cyan)
188
+
189
+ line_number = error.source_range.line
190
+
191
+ source = error.source_range.source_line
192
+ highlight_range = error.source_range.column_range
193
+ source[highlight_range] = source[highlight_range].underline
194
+
195
+ [filename, line_number, source].join(':')
196
+ end
165
197
  end
166
198
  end
@@ -16,8 +16,11 @@ require 'parser/current'
16
16
 
17
17
  module Transpec
18
18
  class Rewriter
19
+ attr_reader :errors
20
+
19
21
  def initialize(configuration = Configuration.new)
20
22
  @configuration = configuration
23
+ @errors = []
21
24
  end
22
25
 
23
26
  def rewrite_file!(file_path)
@@ -78,17 +81,7 @@ module Transpec
78
81
  break
79
82
  end
80
83
  rescue Syntax::NotInExampleGroupContextError => error
81
- warn_not_in_example_group_context_error(error)
82
- end
83
-
84
- def warn_not_in_example_group_context_error(error)
85
- warn error.message
86
- warn format(
87
- '%s:%d:%s',
88
- error.source_buffer.name,
89
- error.source_range.line,
90
- error.source_range.source_line
91
- )
84
+ @errors << error
92
85
  end
93
86
 
94
87
  def process_should(should)
@@ -20,7 +20,7 @@ module Transpec
20
20
  fail 'Already replaced deprecated method, cannot allowize.' if @replaced_deprecated_method
21
21
 
22
22
  unless in_example_group_context?
23
- fail NotInExampleGroupContextError.new(expression_range, "##{method_name}", '#allow')
23
+ fail NotInExampleGroupContextError.new(selector_range, "##{method_name}", '#allow')
24
24
  end
25
25
 
26
26
  if arg_node.type == :hash
@@ -16,7 +16,7 @@ module Transpec
16
16
 
17
17
  def expectize!(negative_form = 'not_to', parenthesize_matcher_arg = true)
18
18
  unless in_example_group_context?
19
- fail NotInExampleGroupContextError.new(expression_range, "##{method_name}", '#expect')
19
+ fail NotInExampleGroupContextError.new(selector_range, "##{method_name}", '#expect')
20
20
  end
21
21
 
22
22
  if proc_literal?(subject_node)
@@ -38,7 +38,7 @@ module Transpec
38
38
 
39
39
  def convert_to_syntax!(syntax, negative_form)
40
40
  unless in_example_group_context?
41
- fail NotInExampleGroupContextError.new(expression_range, "##{method_name}", "##{syntax}")
41
+ fail NotInExampleGroupContextError.new(selector_range, "##{method_name}", "##{syntax}")
42
42
  end
43
43
 
44
44
  if any_instance?
@@ -4,8 +4,8 @@ module Transpec
4
4
  # http://semver.org/
5
5
  module Version
6
6
  MAJOR = 0
7
- MINOR = 0
8
- PATCH = 10
7
+ MINOR = 1
8
+ PATCH = 0
9
9
 
10
10
  def self.to_s
11
11
  [MAJOR, MINOR, PATCH].join('.')
data/spec/spec_helper.rb CHANGED
@@ -14,8 +14,10 @@ RSpec.configure do |config|
14
14
  config.treat_symbols_as_metadata_keys_with_true_values = true
15
15
  config.filter_run_excluding do_not_run_in_converted_spec: ENV['TRANSPEC_CONVERTED_SPEC']
16
16
 
17
- if ENV['TRAVIS']
18
- config.before(:all) do
17
+ config.before(:all) do
18
+ Sickill::Rainbow.enabled = false
19
+
20
+ if ENV['TRAVIS']
19
21
  system('git config --global user.email "you@example.com"')
20
22
  system('git config --global user.name "Your Name"')
21
23
  end
@@ -132,6 +132,44 @@ module Transpec
132
132
  end
133
133
  end
134
134
 
135
+ describe '#process_file' do
136
+ include_context 'isolated environment'
137
+
138
+ let(:file_path) { 'example.rb' }
139
+
140
+ before do
141
+ FileHelper.create_file(file_path, source)
142
+ cli.stub(:puts)
143
+ end
144
+
145
+ context 'when the source has a monkey-patched expectation outside of example group context' do
146
+ let(:source) do
147
+ <<-END
148
+ describe 'example group' do
149
+ class SomeClass
150
+ def some_method
151
+ 1.should == 1
152
+ end
153
+ end
154
+
155
+ it 'is an example' do
156
+ SomeClass.new.some_method
157
+ end
158
+ end
159
+ END
160
+ end
161
+
162
+ it 'warns to user' do
163
+ cli.should_receive(:warn) do |message|
164
+ message.should =~ /cannot/i
165
+ message.should =~ /context/i
166
+ end
167
+
168
+ cli.process_file(file_path)
169
+ end
170
+ end
171
+ end
172
+
135
173
  describe '#parse_options' do
136
174
  subject { cli.parse_options(args) }
137
175
  let(:args) { ['some_file', '--negative-form', 'to_not', 'some_dir'] }
@@ -214,6 +252,19 @@ module Transpec
214
252
  end
215
253
  end
216
254
 
255
+ describe '--no-color option' do
256
+ before do
257
+ Sickill::Rainbow.enabled = true
258
+ end
259
+
260
+ let(:args) { ['--no-color'] }
261
+
262
+ it 'disables color in the output' do
263
+ cli.parse_options(args)
264
+ Sickill::Rainbow.enabled.should be_false
265
+ end
266
+ end
267
+
217
268
  describe '--version option' do
218
269
  before do
219
270
  cli.stub(:puts)
@@ -95,15 +95,6 @@ module Transpec
95
95
  it 'does not rewrite the expectation to non-monkey-patch syntax' do
96
96
  should == source
97
97
  end
98
-
99
- it 'warns to user' do
100
- rewriter.should_receive(:warn) do |message|
101
- message.should =~ /cannot/i
102
- message.should =~ /context/i
103
- end
104
-
105
- rewriter.rewrite(source)
106
- end
107
98
  end
108
99
  end
109
100
 
data/transpec.gemspec CHANGED
@@ -19,8 +19,9 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_runtime_dependency 'parser', '~> 2.0.0.pre1'
23
- spec.add_runtime_dependency 'rspec', '~> 2.14'
22
+ spec.add_runtime_dependency 'parser', '~> 2.0.0.pre1'
23
+ spec.add_runtime_dependency 'rspec', '~> 2.14'
24
+ spec.add_runtime_dependency 'rainbow', '~> 1.1'
24
25
 
25
26
  spec.add_development_dependency 'bundler', '~> 1.3'
26
27
  spec.add_development_dependency 'rake', '~> 10.1'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transpec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji Nakayama
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.14'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rainbow
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement