transpec 1.10.1 → 1.10.2

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.
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