/
transformer_spec.rb
88 lines (82 loc) · 3.71 KB
/
transformer_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
require_relative 'spec_helper'
describe HashSyntax::Transformer do
describe 'transforming from 1.8 to 1.9 syntax' do
it 'can transform a simple hash' do
'x = {:foo => :bar}'.should transform_to('x = {foo: :bar}', :to_19)
end
it 'transforms all hashes in a block of code' do
input = %q{
with_jumps_redirected(:break => ensure_body[1], :redo => ensure_body[1], :next => ensure_body[1],
:return => ensure_body[1], :rescue => ensure_body[1],
:yield_fail => ensure_body[1]) do
rescue_target, yield_fail_target =
build_rescue_target(node, result, rescue_body, ensure_block,
current_rescue, current_yield_fail)
walk_body_with_rescue_target(result, body, body_block, rescue_target, yield_fail_target)
end
}
output = %q{
with_jumps_redirected(break: ensure_body[1], redo: ensure_body[1], next: ensure_body[1],
return: ensure_body[1], rescue: ensure_body[1],
yield_fail: ensure_body[1]) do
rescue_target, yield_fail_target =
build_rescue_target(node, result, rescue_body, ensure_block,
current_rescue, current_yield_fail)
walk_body_with_rescue_target(result, body, body_block, rescue_target, yield_fail_target)
end
}
input.should transform_to(output, :to_19)
end
it 'transforms all hashes in a block of code without minding tight spacing' do
input = %q{
with_jumps_redirected(:break=>ensure_body[1], :redo=>ensure_body[1], :next=>ensure_body[1],
:return=>ensure_body[1], :rescue=>ensure_body[1],
:yield_fail=>ensure_body[1]) do
rescue_target, yield_fail_target =
build_rescue_target(node, result, rescue_body, ensure_block,
current_rescue, current_yield_fail)
walk_body_with_rescue_target(result, body, body_block, rescue_target, yield_fail_target)
end
}
output = %q{
with_jumps_redirected(break:ensure_body[1], redo:ensure_body[1], next:ensure_body[1],
return:ensure_body[1], rescue:ensure_body[1],
yield_fail:ensure_body[1]) do
rescue_target, yield_fail_target =
build_rescue_target(node, result, rescue_body, ensure_block,
current_rescue, current_yield_fail)
walk_body_with_rescue_target(result, body, body_block, rescue_target, yield_fail_target)
end
}
input.should transform_to(output, :to_19)
end
end
describe 'transforming from 1.9 to 1.8 syntax' do
it 'can transform a simple hash' do
'x = {foo: :bar}'.should transform_to('x = {:foo => :bar}', :to_18)
end
it 'transforms all hashes in a block of code' do
input = %q{
with_jumps_redirected(break: ensure_body[1], redo: ensure_body[1], next: ensure_body[1],
return: ensure_body[1], rescue: ensure_body[1],
yield_fail: ensure_body[1]) do
rescue_target, yield_fail_target =
build_rescue_target(node, result, rescue_body, ensure_block,
current_rescue, current_yield_fail)
walk_body_with_rescue_target(result, body, body_block, rescue_target, yield_fail_target)
end
}
output = %q{
with_jumps_redirected(:break => ensure_body[1], :redo => ensure_body[1], :next => ensure_body[1],
:return => ensure_body[1], :rescue => ensure_body[1],
:yield_fail => ensure_body[1]) do
rescue_target, yield_fail_target =
build_rescue_target(node, result, rescue_body, ensure_block,
current_rescue, current_yield_fail)
walk_body_with_rescue_target(result, body, body_block, rescue_target, yield_fail_target)
end
}
input.should transform_to(output, :to_18)
end
end
end