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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/transpec/syntax/have/source_builder.rb +6 -12
- data/lib/transpec/util.rb +23 -0
- data/lib/transpec/version.rb +1 -1
- data/spec/transpec/util_spec.rb +19 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f63ab80111ffedb4a472083d734b97e3546a2378
|
4
|
+
data.tar.gz: e14e5cae27aa6e42915b8c82d3062122e156b711
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 017fccc8bed755513a5efaafcc11e32233457fc0cc87e40ba0606458898f48ce97a23127e783944193aff0d8ace73428858e0c8cffded85f857a93da15649a44
|
7
|
+
data.tar.gz: 22b1175c44bcc0f151c2d5bf307aabc866650190be0fc690e4aa7fd1b8ebaac78ec344c7e42109e4ea68334222eb28b2b8b2481bffba865b5284710d813e1a15
|
data/CHANGELOG.md
CHANGED
@@ -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
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
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
|
data/lib/transpec/util.rb
CHANGED
@@ -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
|
data/lib/transpec/version.rb
CHANGED
data/spec/transpec/util_spec.rb
CHANGED
@@ -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
|