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