transpec 1.10.1 → 1.10.2

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: 44ca6a93bd2bda16ddb06a1b392b577d4058e181
4
- data.tar.gz: 157977020a4bff523c6e261722288b3f06d49bc1
3
+ metadata.gz: f63ab80111ffedb4a472083d734b97e3546a2378
4
+ data.tar.gz: e14e5cae27aa6e42915b8c82d3062122e156b711
5
5
  SHA512:
6
- metadata.gz: 7aa89e910659d73dbe0c62bf494041cb94997f5a1d0fad85e01773dc8ff31be766f6f4f138cc0ec228391dded032e0181a75d1ba6f6cb9cd619769218db867e0
7
- data.tar.gz: 9c902ba46ea0940d3d418bf5f9e752d97b9d19797d3543da814e41f568115dc4e17d3f8e6b0d132dd3704d06f7fc02a7efcf5a6070cfdaaf4b0bddf438f91ba5
6
+ metadata.gz: 017fccc8bed755513a5efaafcc11e32233457fc0cc87e40ba0606458898f48ce97a23127e783944193aff0d8ace73428858e0c8cffded85f857a93da15649a44
7
+ data.tar.gz: 22b1175c44bcc0f151c2d5bf307aabc866650190be0fc690e4aa7fd1b8ebaac78ec344c7e42109e4ea68334222eb28b2b8b2481bffba865b5284710d813e1a15
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Development
4
4
 
5
+ ## v1.10.2
6
+
7
+ * Fix a bug where `expect(an_array + another_array).to have(2).items` was converted to `expect((an_array +(another_array).size).to eq(2)`
8
+
5
9
  ## v1.10.1
6
10
 
7
11
  * Fix a bug where `expect(hash['some_key']).to have(2).items` was converted to `expect(hash[().size).to eq(2)` ([#51](https://github.com/yujinakayama/transpec/issues/51))
@@ -6,6 +6,8 @@ module Transpec
6
6
  class Syntax
7
7
  class Have
8
8
  class SourceBuilder
9
+ include Util
10
+
9
11
  attr_reader :have, :size_source
10
12
 
11
13
  def initialize(have, size_source)
@@ -47,19 +49,11 @@ module Transpec
47
49
  private
48
50
 
49
51
  def base_subject_source(node)
50
- map = node.loc
51
- source = map.expression.source
52
-
53
- if node.send_type? && (arg_node = node.children[2])
54
- left_of_arg_range = map.selector.end.join(arg_node.loc.expression.begin)
55
- if !map.selector.source.start_with?('[') && !left_of_arg_range.source.include?('(')
56
- relative_index = left_of_arg_range.begin_pos - map.expression.begin_pos
57
- source[relative_index, left_of_arg_range.length] = '('
58
- source << ')'
59
- end
52
+ if node.send_type?
53
+ chainable_source(node)
54
+ else
55
+ node.loc.expression.source
60
56
  end
61
-
62
- source
63
57
  end
64
58
 
65
59
  def replacement_matcher_source_for_should
@@ -226,5 +226,28 @@ module Transpec
226
226
  end
227
227
  end
228
228
  end
229
+
230
+ def chainable_source(node)
231
+ fail "Invalid argument #{node}" unless node.send_type?
232
+
233
+ map = node.loc
234
+ source = map.expression.source
235
+
236
+ return source if map.selector.source.start_with?('[')
237
+
238
+ arg_node = node.children[2]
239
+ return source unless arg_node
240
+
241
+ left_of_arg_range = map.selector.end.join(arg_node.loc.expression.begin)
242
+ return source if left_of_arg_range.source.include?('(')
243
+
244
+ if map.selector.source.match(/^\w/)
245
+ relative_index = left_of_arg_range.begin_pos - map.expression.begin_pos
246
+ source[relative_index, left_of_arg_range.length] = '('
247
+ source << ')'
248
+ else
249
+ "(#{source})"
250
+ end
251
+ end
229
252
  end
230
253
  end
@@ -5,7 +5,7 @@ module Transpec
5
5
  module Version
6
6
  MAJOR = 1
7
7
  MINOR = 10
8
- PATCH = 1
8
+ PATCH = 2
9
9
 
10
10
  def self.to_s
11
11
  [MAJOR, MINOR, PATCH].join('.')
@@ -92,5 +92,24 @@ module Transpec
92
92
  end
93
93
  end
94
94
  end
95
+
96
+ describe '#chainable_source' do
97
+ subject { Util.chainable_source(ast) }
98
+
99
+ [
100
+ ['receiver.do_something(arg1, arg2)', 'receiver.do_something(arg1, arg2)'],
101
+ ['receiver.do_something arg1, arg2', 'receiver.do_something(arg1, arg2)'],
102
+ ['receiver[arg1, arg2]', 'receiver[arg1, arg2]'],
103
+ ['receiver + arg', '(receiver + arg)']
104
+ ].each do |original, expected|
105
+ context "when the invocation is `#{original}` form" do
106
+ let(:source) { original }
107
+
108
+ it "returns `#{expected}`" do
109
+ should == expected
110
+ end
111
+ end
112
+ end
113
+ end
95
114
  end
96
115
  end
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: 1.10.1
4
+ version: 1.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji Nakayama