ripper2ruby 0.0.1
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.
- data/MIT-LICENSE +20 -0
- data/README.markdown +10 -0
- data/lib/core_ext/array/flush.rb +5 -0
- data/lib/core_ext/hash/delete_at.rb +5 -0
- data/lib/core_ext/object/meta_class.rb +5 -0
- data/lib/core_ext/object/try.rb +12 -0
- data/lib/erb/stripper.rb +48 -0
- data/lib/highlighters/ansi.rb +29 -0
- data/lib/ripper/event_log.rb +45 -0
- data/lib/ripper/ruby_builder.rb +168 -0
- data/lib/ripper/ruby_builder/buffer.rb +34 -0
- data/lib/ripper/ruby_builder/events/args.rb +40 -0
- data/lib/ripper/ruby_builder/events/array.rb +71 -0
- data/lib/ripper/ruby_builder/events/assignment.rb +55 -0
- data/lib/ripper/ruby_builder/events/block.rb +80 -0
- data/lib/ripper/ruby_builder/events/call.rb +123 -0
- data/lib/ripper/ruby_builder/events/case.rb +17 -0
- data/lib/ripper/ruby_builder/events/const.rb +47 -0
- data/lib/ripper/ruby_builder/events/for.rb +13 -0
- data/lib/ripper/ruby_builder/events/hash.rb +24 -0
- data/lib/ripper/ruby_builder/events/identifier.rb +41 -0
- data/lib/ripper/ruby_builder/events/if.rb +37 -0
- data/lib/ripper/ruby_builder/events/lexer.rb +159 -0
- data/lib/ripper/ruby_builder/events/literal.rb +47 -0
- data/lib/ripper/ruby_builder/events/method.rb +21 -0
- data/lib/ripper/ruby_builder/events/operator.rb +23 -0
- data/lib/ripper/ruby_builder/events/statements.rb +50 -0
- data/lib/ripper/ruby_builder/events/string.rb +117 -0
- data/lib/ripper/ruby_builder/events/symbol.rb +22 -0
- data/lib/ripper/ruby_builder/events/while.rb +27 -0
- data/lib/ripper/ruby_builder/queue.rb +33 -0
- data/lib/ripper/ruby_builder/stack.rb +125 -0
- data/lib/ripper/ruby_builder/token.rb +91 -0
- data/lib/ripper2ruby.rb +1 -0
- data/lib/ruby.rb +28 -0
- data/lib/ruby/aggregate.rb +71 -0
- data/lib/ruby/alternation/args.rb +25 -0
- data/lib/ruby/alternation/hash.rb +25 -0
- data/lib/ruby/alternation/list.rb +19 -0
- data/lib/ruby/args.rb +36 -0
- data/lib/ruby/array.rb +27 -0
- data/lib/ruby/assignment.rb +32 -0
- data/lib/ruby/assoc.rb +17 -0
- data/lib/ruby/block.rb +42 -0
- data/lib/ruby/call.rb +34 -0
- data/lib/ruby/case.rb +30 -0
- data/lib/ruby/const.rb +49 -0
- data/lib/ruby/for.rb +18 -0
- data/lib/ruby/hash.rb +14 -0
- data/lib/ruby/if.rb +35 -0
- data/lib/ruby/list.rb +40 -0
- data/lib/ruby/literal.rb +45 -0
- data/lib/ruby/method.rb +19 -0
- data/lib/ruby/node.rb +47 -0
- data/lib/ruby/node/composite.rb +68 -0
- data/lib/ruby/node/conversions.rb +66 -0
- data/lib/ruby/node/position.rb +35 -0
- data/lib/ruby/node/source.rb +29 -0
- data/lib/ruby/node/text.rb +121 -0
- data/lib/ruby/node/traversal.rb +82 -0
- data/lib/ruby/operator.rb +49 -0
- data/lib/ruby/params.rb +41 -0
- data/lib/ruby/statements.rb +45 -0
- data/lib/ruby/string.rb +40 -0
- data/lib/ruby/symbol.rb +27 -0
- data/lib/ruby/token.rb +51 -0
- data/lib/ruby/while.rb +32 -0
- data/test/all.rb +3 -0
- data/test/builder/stack_test.rb +67 -0
- data/test/builder/text_test.rb +118 -0
- data/test/context_test.rb +54 -0
- data/test/erb_stripper_test.rb +29 -0
- data/test/fixtures/all.rb.src +150 -0
- data/test/fixtures/source_1.rb +16 -0
- data/test/fixtures/source_2.rb +1 -0
- data/test/fixtures/stuff.rb +371 -0
- data/test/fixtures/template.html.erb +22 -0
- data/test/fixtures/tmp.rb +6 -0
- data/test/lib_test.rb +92 -0
- data/test/lib_test_helper.rb +103 -0
- data/test/libs.txt +227 -0
- data/test/nodes/args_test.rb +100 -0
- data/test/nodes/array_test.rb +141 -0
- data/test/nodes/assignment_test.rb +49 -0
- data/test/nodes/block_test.rb +125 -0
- data/test/nodes/call_test.rb +229 -0
- data/test/nodes/case_test.rb +68 -0
- data/test/nodes/comments_test.rb +25 -0
- data/test/nodes/const_test.rb +46 -0
- data/test/nodes/conversions_test.rb +9 -0
- data/test/nodes/for_test.rb +34 -0
- data/test/nodes/hash_test.rb +71 -0
- data/test/nodes/heredoc_test.rb +202 -0
- data/test/nodes/identifier_test.rb +51 -0
- data/test/nodes/if_test.rb +100 -0
- data/test/nodes/literals_test.rb +63 -0
- data/test/nodes/method_test.rb +92 -0
- data/test/nodes/namespaces_test.rb +65 -0
- data/test/nodes/node_test.rb +74 -0
- data/test/nodes/nodes_test.rb +23 -0
- data/test/nodes/operator_test.rb +241 -0
- data/test/nodes/separators_test.rb +97 -0
- data/test/nodes/statements_test.rb +70 -0
- data/test/nodes/string_test.rb +92 -0
- data/test/nodes/symbol_test.rb +57 -0
- data/test/nodes/unless_test.rb +42 -0
- data/test/nodes/until_test.rb +61 -0
- data/test/nodes/while_test.rb +71 -0
- data/test/test_helper.rb +51 -0
- data/test/traversal_test.rb +53 -0
- metadata +163 -0
@@ -0,0 +1,100 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class ArgsTest < Test::Unit::TestCase
|
4
|
+
include TestHelper
|
5
|
+
|
6
|
+
define_method :"test call arguments positions" do
|
7
|
+
src = "t('a' , 'b', 'c' => 'd', &e) { |f| g }"
|
8
|
+
assert_build(src) do |node|
|
9
|
+
assert_equal Ruby::ArgsList, node.first.arguments.class
|
10
|
+
assert_position [0, 0], node.select(:token => 't')
|
11
|
+
assert_position [0, 1], node.select(:token => '(')
|
12
|
+
assert_position [0, 2], node.select(:value => 'a')
|
13
|
+
assert_position [0, 6], node.select(:token => ',')
|
14
|
+
assert_position [0, 8], node.select(:value => 'b')
|
15
|
+
assert_position [0, 13], node.select(:value => 'c')
|
16
|
+
assert_position [0, 17], node.select(:token => '=>')
|
17
|
+
assert_position [0, 20], node.select(:value => 'd')
|
18
|
+
assert_position [0, 25], node.select(Ruby::Arg).last
|
19
|
+
assert_position [0, 27], node.select(:token => ')')
|
20
|
+
assert_position [0, 29], node.select(:token => '{')
|
21
|
+
assert_position [0, 31], node.select(:token => '|')[0]
|
22
|
+
assert_position [0, 32], node.select(:token => 'f')
|
23
|
+
assert_position [0, 33], node.select(:token => '|')[1]
|
24
|
+
assert_position [0, 35], node.select(:token => 'g')
|
25
|
+
assert_position [0, 37], node.select(:token => '}')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
define_method :'test call arguments: t("foo") (string)' do
|
30
|
+
src = 't("foo")'
|
31
|
+
assert_build(src)
|
32
|
+
end
|
33
|
+
|
34
|
+
define_method :'test call arguments: t(:a => a, :b => b, &block)' do
|
35
|
+
src = 't(:a => a, :b => b, &c)'
|
36
|
+
assert_build(src) do |node|
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
define_method :'test call arguments: t("foo") (string, no parentheses)' do
|
41
|
+
src = 't foo'
|
42
|
+
assert_build(src)
|
43
|
+
end
|
44
|
+
|
45
|
+
define_method :"test call arguments: t :foo, :bar, :baz (3 symbols, no parentheses)" do
|
46
|
+
src = "t :foo, :bar, :baz"
|
47
|
+
assert_build(src)
|
48
|
+
end
|
49
|
+
|
50
|
+
define_method :"test method call: t(:foo => :bar, :baz => :buz) (bare hash)" do
|
51
|
+
src = "t(:foo => :bar, :baz => :buz)"
|
52
|
+
assert_build(src)
|
53
|
+
end
|
54
|
+
|
55
|
+
define_method :"test method call: t :a => :a do end (bare hash, no parentheses, do block)" do
|
56
|
+
src = "t :a => :a do end"
|
57
|
+
assert_build(src)
|
58
|
+
end
|
59
|
+
|
60
|
+
define_method :"test method call: t({ :foo => :bar, :baz => :buz }) (hash)" do
|
61
|
+
src = "t({ :foo => :bar, :baz => :buz })"
|
62
|
+
assert_build(src)
|
63
|
+
end
|
64
|
+
|
65
|
+
define_method :"test method call: t({ :foo => :bar }) (hash, leading whitespace)" do
|
66
|
+
src = 't ({ :foo => :bar })'
|
67
|
+
assert_build(src)
|
68
|
+
end
|
69
|
+
|
70
|
+
define_method :"test method call: t([:foo, :bar]) (array)" do
|
71
|
+
src = "(t[:foo, :bar, :baz])"
|
72
|
+
assert_build(src)
|
73
|
+
end
|
74
|
+
|
75
|
+
define_method :"test method call: t(nil) (keyword)" do
|
76
|
+
src = "t(nil)"
|
77
|
+
assert_build(src)
|
78
|
+
end
|
79
|
+
|
80
|
+
define_method :"test: args with a splat call" do
|
81
|
+
src = "t(*a.b)"
|
82
|
+
assert_build(src)
|
83
|
+
end
|
84
|
+
|
85
|
+
define_method :"test: args with a splat and block" do
|
86
|
+
src = "t(*a.b { |c| c.d })"
|
87
|
+
assert_build(src)
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
define_method :"test: replace argument" do
|
92
|
+
src = "(:foo, :bar)"
|
93
|
+
args = build('t' + src).first.arguments
|
94
|
+
foo, bar = args
|
95
|
+
|
96
|
+
args[0] = baz = Ruby.from_native(:baz)
|
97
|
+
assert_equal args, baz.parent.parent # baz is wrapped into an Arg
|
98
|
+
assert_equal [0, 2], baz.position.to_a
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class ArrayTest < Test::Unit::TestCase
|
4
|
+
include TestHelper
|
5
|
+
|
6
|
+
define_method :'test an array: [:foo, :bar]' do
|
7
|
+
src = '[:foo, :bar]'
|
8
|
+
assert_build(src) do |node|
|
9
|
+
assert_node node.first, :class => Ruby::Array, :value => [:foo, :bar]
|
10
|
+
assert_position [0, 1], node.select(:value => :foo)
|
11
|
+
assert_position [0, 7], node.select(:value => :bar)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
define_method :'test a wordlist array %w(foo bar) (parentheses)' do
|
16
|
+
src = '%w(foo bar)'
|
17
|
+
assert_build(src) do |node|
|
18
|
+
assert_node node.first, :class => Ruby::Array, :value => %w(foo bar)
|
19
|
+
assert_position [0, 3], node.first.select(:value => 'foo')
|
20
|
+
assert_position [0, 7], node.select(:value => 'bar')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
define_method :"test a percent-parens delimited string" do
|
25
|
+
src = "%(foo)"
|
26
|
+
assert_build(src)
|
27
|
+
end
|
28
|
+
|
29
|
+
define_method :'test a multiline wordlist array %w(\nfoo bar\n)' do
|
30
|
+
src = "%w(\nfoo bar\n).foo"
|
31
|
+
assert_build(src)
|
32
|
+
end
|
33
|
+
|
34
|
+
define_method :'test a multiline wordlist array w/ extra whitespace %w( \nfoo bar\n )' do
|
35
|
+
src = "%w( \nfoo bar\n ).foo"
|
36
|
+
assert_build(src)
|
37
|
+
end
|
38
|
+
|
39
|
+
define_method :'test a wordlist array %W[foo bar] (brackets)' do
|
40
|
+
src = '%W[foo bar]'
|
41
|
+
assert_build(src)
|
42
|
+
end
|
43
|
+
|
44
|
+
define_method :'test an empty wordlist (using parentheses)' do
|
45
|
+
src = "%w()"
|
46
|
+
assert_build(src)
|
47
|
+
end
|
48
|
+
|
49
|
+
define_method :'test an empty wordlist (interpolating, using parentheses)' do
|
50
|
+
src = "%W()"
|
51
|
+
assert_build(src)
|
52
|
+
end
|
53
|
+
|
54
|
+
define_method :'test an empty wordlist (using brackets)' do
|
55
|
+
src = "%w[]"
|
56
|
+
assert_build(src)
|
57
|
+
end
|
58
|
+
|
59
|
+
define_method :'test an empty wordlist (interpolating, using brackets)' do
|
60
|
+
src = "%W[]"
|
61
|
+
assert_build(src)
|
62
|
+
end
|
63
|
+
|
64
|
+
define_method :'test a wordlist with an embedded expression (using brackets)' do
|
65
|
+
src = "%W[\#{foo}]"
|
66
|
+
assert_build(src) do |node|
|
67
|
+
assert_position [0, 3], node.select(:class => Ruby::Statements)
|
68
|
+
assert_position [0, 5], node.select(:token => 'foo').first
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
define_method :"test array access" do
|
73
|
+
src = "foo[1]"
|
74
|
+
assert_build(src) do |node|
|
75
|
+
assert_position [0, 4], node.select(:value => 1).first
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
define_method :"test array access with no argument" do
|
80
|
+
src = "foo[]"
|
81
|
+
assert_build(src)
|
82
|
+
end
|
83
|
+
|
84
|
+
define_method :"test array access on a call with no argument" do
|
85
|
+
src = "foo.bar[]"
|
86
|
+
assert_build(src)
|
87
|
+
end
|
88
|
+
|
89
|
+
define_method :"test array w/ nested array access" do
|
90
|
+
src = '[ foo[bar] ]'
|
91
|
+
assert_build(src)
|
92
|
+
end
|
93
|
+
|
94
|
+
define_method :"test array assignment" do
|
95
|
+
src = "result[0] = :value"
|
96
|
+
assert_build(src)
|
97
|
+
end
|
98
|
+
|
99
|
+
define_method :'test nested array with whitespace' do
|
100
|
+
src = "\n [type, [row]]\n"
|
101
|
+
assert_build(src)
|
102
|
+
end
|
103
|
+
|
104
|
+
define_method :'test array length: with and without whitespace' do
|
105
|
+
src = <<-eoc
|
106
|
+
[:foo]
|
107
|
+
[:foo ]
|
108
|
+
[ :foo]
|
109
|
+
[ :foo ]
|
110
|
+
|
111
|
+
[:foo]
|
112
|
+
[:foo ]
|
113
|
+
[ :foo]
|
114
|
+
[ :foo ]
|
115
|
+
|
116
|
+
[:foo, :bar, :baz]
|
117
|
+
[:foo , :bar , :baz]
|
118
|
+
[:foo ,:bar ,:baz]
|
119
|
+
|
120
|
+
%w(foo)
|
121
|
+
%w(foo bar)
|
122
|
+
%w(foo bar)
|
123
|
+
|
124
|
+
%w( foo)
|
125
|
+
%w( foo bar)
|
126
|
+
%w( foo bar)
|
127
|
+
|
128
|
+
%w(foo )
|
129
|
+
%w(foo bar )
|
130
|
+
%w(foo bar )
|
131
|
+
|
132
|
+
%w( foo )
|
133
|
+
%w( foo bar )
|
134
|
+
%w( foo bar )
|
135
|
+
eoc
|
136
|
+
|
137
|
+
src.split("\n").map { |l| l.strip }.select { |l| !l.empty? }.each do |line|
|
138
|
+
assert_build(line)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class AssignmentTest < Test::Unit::TestCase
|
4
|
+
include TestHelper
|
5
|
+
|
6
|
+
define_method :'test assignment: a = b' do
|
7
|
+
src = 'a = b'
|
8
|
+
assert_build(src) do |node|
|
9
|
+
assert_equal Ruby::Assignment, node.first.class
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
define_method :'test assignment: a ||= b' do
|
14
|
+
src = 'a ||= b'
|
15
|
+
assert_build(src)
|
16
|
+
end
|
17
|
+
|
18
|
+
define_method :'test assignment: a, b = c' do
|
19
|
+
src = 'a, b = c'
|
20
|
+
assert_build(src) do |node|
|
21
|
+
assert_equal Ruby::Assignment, node.first.class
|
22
|
+
assert_equal Ruby::MultiAssignment, node.first.left.class
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
define_method :'test assignment: a, b = c, d' do
|
27
|
+
src = 'a, b = c, d'
|
28
|
+
assert_build(src) do |node|
|
29
|
+
assert_equal Ruby::Assignment, node.first.class
|
30
|
+
assert_equal Ruby::MultiAssignment, node.first.left.class
|
31
|
+
assert_equal Ruby::MultiAssignment, node.first.right.class
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
define_method :'test assignment: a, *b = c' do
|
36
|
+
src = 'a, *b = c'
|
37
|
+
assert_build(src)
|
38
|
+
end
|
39
|
+
|
40
|
+
define_method :'test assignment: a, b = *c' do
|
41
|
+
src = 'a, b = *c'
|
42
|
+
assert_build(src)
|
43
|
+
end
|
44
|
+
|
45
|
+
define_method :'test assignment to namespaced const: A::B = 1' do
|
46
|
+
src = 'A::B = 1'
|
47
|
+
assert_build(src)
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class BlockTest < Test::Unit::TestCase
|
4
|
+
include TestHelper
|
5
|
+
|
6
|
+
define_method :"test a block with an invalid param" do
|
7
|
+
src = 'foo { |@a| }'
|
8
|
+
assert_raises(Ripper::RubyBuilder::ParseError) { build(src) }
|
9
|
+
end
|
10
|
+
|
11
|
+
define_method :"test method call block with 2 statements (newline delimited)" do
|
12
|
+
src = "t do\nfoo\nbar\nend"
|
13
|
+
assert_build(src)
|
14
|
+
end
|
15
|
+
|
16
|
+
define_method :"test method call block with no statements, single semicolon" do
|
17
|
+
src = "t do ; end"
|
18
|
+
assert_build(src)
|
19
|
+
end
|
20
|
+
|
21
|
+
define_method :"test method call block with empty params" do
|
22
|
+
src = "t do ||\nfoo\n end"
|
23
|
+
assert_build(src)
|
24
|
+
end
|
25
|
+
|
26
|
+
define_method :"test method call block with semicolon delimited statements" do
|
27
|
+
src = "t do ;; ;foo ; ;;bar; ; end"
|
28
|
+
assert_build(src)
|
29
|
+
end
|
30
|
+
|
31
|
+
define_method :"test: a method call block with arguments" do
|
32
|
+
src = "t do |(a, b), *c|\n foo\n bar\n end"
|
33
|
+
assert_build(src)
|
34
|
+
end
|
35
|
+
|
36
|
+
define_method :"test: an empty method call brace_block" do
|
37
|
+
src = "t { |(a, b), *c| }"
|
38
|
+
assert_build(src)
|
39
|
+
end
|
40
|
+
|
41
|
+
define_method :"test: method call w/ do_block" do
|
42
|
+
src = "t do |(a, b), *c| end"
|
43
|
+
assert_build(src)
|
44
|
+
end
|
45
|
+
|
46
|
+
define_method :"test: method call do_block with a block_param" do
|
47
|
+
src = "t do |*a, &c| end"
|
48
|
+
assert_build(src)
|
49
|
+
end
|
50
|
+
|
51
|
+
define_method :"test: an empty method call brace_block w/ arg and parenthesed param" do
|
52
|
+
src = 't {|a, (b)| }'
|
53
|
+
assert_build(src)
|
54
|
+
end
|
55
|
+
|
56
|
+
define_method :"test: an empty begin end block" do
|
57
|
+
src = "begin\nend"
|
58
|
+
assert_build(src)
|
59
|
+
end
|
60
|
+
|
61
|
+
define_method :"test: a begin ; end block" do
|
62
|
+
src = "begin ; end"
|
63
|
+
assert_build(src)
|
64
|
+
end
|
65
|
+
|
66
|
+
define_method :"test: a begin foo; end block" do
|
67
|
+
src = "begin foo; end"
|
68
|
+
assert_build(src)
|
69
|
+
end
|
70
|
+
|
71
|
+
define_method :"test: a begin block with an else block" do
|
72
|
+
src = "begin\nfoo\nelse\nbar\nend"
|
73
|
+
assert_build(src)
|
74
|
+
end
|
75
|
+
|
76
|
+
define_method :"test: a begin block with rescue without error_type" do
|
77
|
+
src = "begin\nfoo\nrescue\nbar\nend"
|
78
|
+
assert_build(src)
|
79
|
+
end
|
80
|
+
|
81
|
+
define_method :"test: a begin block with rescue without an error_type" do
|
82
|
+
src = "begin \n rescue A \n end"
|
83
|
+
assert_build(src)
|
84
|
+
end
|
85
|
+
|
86
|
+
define_method :"test: a begin block with rescue with a error_types and error_var" do
|
87
|
+
src = "begin foo\n rescue A => e\n bar\n end"
|
88
|
+
assert_build(src)
|
89
|
+
end
|
90
|
+
|
91
|
+
define_method :"test: a begin block with rescue with a multiple error_types and error_var" do
|
92
|
+
src = "begin foo\n rescue A, B => e\n bar\n end"
|
93
|
+
assert_build(src)
|
94
|
+
end
|
95
|
+
|
96
|
+
define_method :"test: a begin block with multiple rescues and ensure" do
|
97
|
+
src = "begin foo\n rescue A, B => e\n bar\nrescue C => e\n bam\nensure\nbaz\n end"
|
98
|
+
assert_build(src)
|
99
|
+
end
|
100
|
+
|
101
|
+
define_method :"test: a begin block using rescue, then and else (from rubylexer tests)" do
|
102
|
+
src = "begin a; rescue NameError => e then e else :foo end"
|
103
|
+
assert_build(src)
|
104
|
+
end
|
105
|
+
|
106
|
+
define_method :"test: multiple rescue blocks" do
|
107
|
+
src = "begin\nrescue A => e\nrescue B\nend"
|
108
|
+
assert_build(src)
|
109
|
+
end
|
110
|
+
|
111
|
+
define_method :"test: rescue and else block" do
|
112
|
+
src = "begin\nrescue A\nelse\nend\n"
|
113
|
+
assert_build(src)
|
114
|
+
end
|
115
|
+
|
116
|
+
define_method :"test: line with a rescue modifier yielding a method call" do
|
117
|
+
src = "foo rescue bar"
|
118
|
+
assert_build(src)
|
119
|
+
end
|
120
|
+
|
121
|
+
define_method :"test: line with a rescue modifier yielding an integer" do
|
122
|
+
src = "foo rescue 0"
|
123
|
+
assert_build(src)
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,229 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class CallTest < Test::Unit::TestCase
|
4
|
+
include TestHelper
|
5
|
+
|
6
|
+
define_method :"test a variable" do
|
7
|
+
src = "t"
|
8
|
+
assert_build(src) do |node|
|
9
|
+
assert_equal Ruby::Variable, node.first.class
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
define_method :"test call on const target without arguments and without parantheses" do
|
14
|
+
src = "I18n.t"
|
15
|
+
assert_build(src) do |node|
|
16
|
+
assert_equal Ruby::Call, node.first.class
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
define_method :'test method call: a.b(:foo) (var ref target, parantheses)' do
|
21
|
+
src = "a.b(:foo)"
|
22
|
+
assert_build(src)
|
23
|
+
end
|
24
|
+
|
25
|
+
define_method :"test call on const target without arguments and with parantheses" do
|
26
|
+
src = "I18n.t()"
|
27
|
+
assert_build(src)
|
28
|
+
end
|
29
|
+
|
30
|
+
define_method :'test method call: I18n.t("foo") (const target, double-quoted string, parantheses)' do
|
31
|
+
src = "I18n.t('foo')"
|
32
|
+
assert_build(src)
|
33
|
+
end
|
34
|
+
|
35
|
+
define_method :'test method call: I18n.t "foo" (const target, double-quoted string, no parantheses)' do
|
36
|
+
src = "I18n.t 'foo'"
|
37
|
+
assert_build(src)
|
38
|
+
end
|
39
|
+
|
40
|
+
define_method :"test call on const target without arguments and without parantheses (:: separator)" do
|
41
|
+
src = "I18n::t"
|
42
|
+
assert_build(src)
|
43
|
+
end
|
44
|
+
|
45
|
+
define_method :"test call on const target without arguments and with parantheses (:: separator)" do
|
46
|
+
src = "I18n::t()"
|
47
|
+
assert_build(src)
|
48
|
+
end
|
49
|
+
|
50
|
+
define_method :'test method call: I18n::t("foo") (const target, double-quoted string, parantheses, :: separator)' do
|
51
|
+
src = "I18n::t('foo')"
|
52
|
+
assert_build(src)
|
53
|
+
end
|
54
|
+
|
55
|
+
define_method :'test method call: foo.<=>(bar) (sending an operator, srsly ... used in Rake 0.8.3)' do
|
56
|
+
src = "foo.<=>(bar)"
|
57
|
+
assert_build(src)
|
58
|
+
end
|
59
|
+
|
60
|
+
define_method :'test method call: foo.<< bar (sending an operator, srsly ... used in Redmine)' do
|
61
|
+
src = "foo.<< bar"
|
62
|
+
assert_build(src)
|
63
|
+
end
|
64
|
+
|
65
|
+
define_method :"test call with a string with an embedded expression" do
|
66
|
+
src = 'foo("#{bar}")'
|
67
|
+
assert_build(src)
|
68
|
+
end
|
69
|
+
|
70
|
+
define_method :"test call on no target without arguments but parantheses" do
|
71
|
+
src = "t('foo', 'bar')"
|
72
|
+
assert_build(src)
|
73
|
+
end
|
74
|
+
|
75
|
+
define_method :"test two method calls: t('foo'); t 'bar' (no target)" do
|
76
|
+
src = "t('foo', 'bar'); t 'baz'"
|
77
|
+
assert_build(src)
|
78
|
+
end
|
79
|
+
|
80
|
+
define_method :'test method call: t "foo" (no target, double-quoted string, no parantheses)' do
|
81
|
+
src = "t 'foo'"
|
82
|
+
assert_build(src)
|
83
|
+
end
|
84
|
+
|
85
|
+
define_method :'test method call: t %(foo) (no target, two percent-parentheses delimited strings w/ embedded expression)' do
|
86
|
+
src = 't %(foo #{bar}), %(baz)'
|
87
|
+
assert_build(src)
|
88
|
+
end
|
89
|
+
|
90
|
+
define_method :"test call on no target without arguments but parantheses" do
|
91
|
+
src = "t()"
|
92
|
+
assert_build(src)
|
93
|
+
end
|
94
|
+
|
95
|
+
define_method :"test call with nested call/parantheses" do
|
96
|
+
src = "t(:a, b(:b))"
|
97
|
+
assert_build(src)
|
98
|
+
end
|
99
|
+
|
100
|
+
define_method :"test call with nested call/parantheses" do
|
101
|
+
src = "t(:a, b(:b))"
|
102
|
+
assert_build(src)
|
103
|
+
end
|
104
|
+
|
105
|
+
define_method :"test call with a symbol that is a backtick" do
|
106
|
+
src = "t(:`)"
|
107
|
+
assert_build(src)
|
108
|
+
end
|
109
|
+
|
110
|
+
define_method :"test call on no target without arguments but a block" do
|
111
|
+
src = "t do |a, b, *c|\nfoo\nend"
|
112
|
+
assert_build(src)
|
113
|
+
end
|
114
|
+
|
115
|
+
define_method :"test call on no target without arguments but a block" do
|
116
|
+
src = "t do |(a, b), *c|\nfoo\nend"
|
117
|
+
assert_build(src)
|
118
|
+
end
|
119
|
+
|
120
|
+
define_method :"test call on no target with a block var" do
|
121
|
+
src = "t(:foo, &block)"
|
122
|
+
assert_build(src)
|
123
|
+
end
|
124
|
+
|
125
|
+
define_method :"test call with a call with a block as an arg" do
|
126
|
+
src = "foo(bar do |a| ; end)"
|
127
|
+
assert_build(src)
|
128
|
+
end
|
129
|
+
|
130
|
+
define_method :"test call to self" do
|
131
|
+
src = "self.b"
|
132
|
+
assert_build(src)
|
133
|
+
end
|
134
|
+
|
135
|
+
define_method :"test call super without arguments" do
|
136
|
+
src = "super"
|
137
|
+
assert_build(src)
|
138
|
+
end
|
139
|
+
|
140
|
+
define_method :"test call super with arguments" do
|
141
|
+
src = "super(:foo)"
|
142
|
+
assert_build(src)
|
143
|
+
end
|
144
|
+
|
145
|
+
define_method :"test call yield without arguments" do
|
146
|
+
src = "yield"
|
147
|
+
assert_build(src)
|
148
|
+
end
|
149
|
+
|
150
|
+
define_method :"test call yield with arguments" do
|
151
|
+
src = "yield(:foo)"
|
152
|
+
assert_build(src)
|
153
|
+
end
|
154
|
+
|
155
|
+
define_method :"test call alias with identifiers" do
|
156
|
+
src = "alias eql? =="
|
157
|
+
assert_build(src)
|
158
|
+
end
|
159
|
+
|
160
|
+
define_method :"test call alias with symbols" do
|
161
|
+
src = "alias :foo :bar"
|
162
|
+
assert_build(src)
|
163
|
+
end
|
164
|
+
|
165
|
+
define_method :"test call alias with global vars" do
|
166
|
+
src = "alias $ERROR_INFO $!"
|
167
|
+
assert_build(src)
|
168
|
+
end
|
169
|
+
|
170
|
+
define_method :"test call undef with a symbol" do
|
171
|
+
src = "undef :foo"
|
172
|
+
assert_build(src)
|
173
|
+
end
|
174
|
+
|
175
|
+
define_method :"test call undef with method names" do
|
176
|
+
src = "undef foo, bar, baz"
|
177
|
+
assert_build(src)
|
178
|
+
end
|
179
|
+
|
180
|
+
define_method :"test call undef with an operator" do
|
181
|
+
src = "undef =~"
|
182
|
+
assert_build(src)
|
183
|
+
end
|
184
|
+
|
185
|
+
define_method :"test call return" do
|
186
|
+
src = "return :foo"
|
187
|
+
assert_build(src)
|
188
|
+
end
|
189
|
+
|
190
|
+
define_method :"test call next" do
|
191
|
+
src = "next"
|
192
|
+
assert_build(src)
|
193
|
+
end
|
194
|
+
|
195
|
+
define_method :"test call redo" do
|
196
|
+
src = "redo"
|
197
|
+
assert_build(src)
|
198
|
+
end
|
199
|
+
|
200
|
+
define_method :"test call break" do
|
201
|
+
src = "break"
|
202
|
+
assert_build(src)
|
203
|
+
end
|
204
|
+
|
205
|
+
define_method :"test call retry" do
|
206
|
+
src = "retry"
|
207
|
+
assert_build(src)
|
208
|
+
end
|
209
|
+
|
210
|
+
define_method :"test call to an assignment method: a.b = :c" do
|
211
|
+
src = "a.b = :c"
|
212
|
+
assert_build(src)
|
213
|
+
end
|
214
|
+
|
215
|
+
define_method :"test call to defined?" do
|
216
|
+
src = "defined?(A)"
|
217
|
+
assert_build(src)
|
218
|
+
end
|
219
|
+
|
220
|
+
define_method :'test BEGIN routine' do
|
221
|
+
src = "BEGIN { foo }"
|
222
|
+
assert_build(src)
|
223
|
+
end
|
224
|
+
|
225
|
+
define_method :'test END routine' do
|
226
|
+
src = "END { foo }"
|
227
|
+
assert_build(src)
|
228
|
+
end
|
229
|
+
end
|