mvz-live_ast 1.1.3 → 1.2.0
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/CHANGES.rdoc +6 -0
- data/README.rdoc +9 -9
- data/lib/live_ast/base.rb +9 -9
- data/lib/live_ast/common.rb +9 -12
- data/lib/live_ast/error.rb +1 -1
- data/lib/live_ast/evaler.rb +1 -1
- data/lib/live_ast/irb_spy.rb +16 -13
- data/lib/live_ast/linker.rb +1 -1
- data/lib/live_ast/loader.rb +4 -7
- data/lib/live_ast/reader.rb +1 -0
- data/lib/live_ast/replace_eval.rb +12 -29
- data/lib/live_ast/replace_load.rb +1 -1
- data/lib/live_ast/replace_raise.rb +1 -1
- data/lib/live_ast/ruby_parser.rb +3 -4
- data/lib/live_ast/ruby_parser/test.rb +4 -4
- data/lib/live_ast/to_ruby.rb +1 -1
- data/lib/live_ast/version.rb +1 -1
- data/test/alias_test.rb +0 -1
- data/test/ast_load/ast_load_test.rb +4 -4
- data/test/backtrace_test.rb +1 -1
- data/test/base/reload_test.rb +4 -4
- data/test/encoding_test.rb +17 -23
- data/test/full/ast_reload_test.rb +4 -4
- data/test/full/replace_eval_test.rb +11 -5
- data/test/irb_test.rb +25 -9
- data/test/load_path_test.rb +7 -9
- data/test/main.rb +5 -6
- data/test/rubyspec_test.rb +27 -25
- data/test/thread_test.rb +1 -1
- data/test/to_ruby/to_ruby_test.rb +96 -94
- metadata +51 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 472b7811ce8f32d847e2dc967886bc0372a933f8
|
4
|
+
data.tar.gz: 2452449770fda858623be66f038b76857b660473
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f5de1c4c34338e0ece217cea927e9fcde1ae26e6626f9d34624c98de5045456485b2fd54738bf2b2ec4d1248b12a9a458d70193015049d432644376eb1854e3
|
7
|
+
data.tar.gz: fc475c11107bc9bef4d8957cc59e82826717c2482bb4e6e7c3feb7ede7586d12e135b950d260cd74745391428e4f73263273ab8a26c9323b6f2a59e99ae7cf6c
|
data/CHANGES.rdoc
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
|
2
2
|
= live_ast Changes
|
3
3
|
|
4
|
+
== Version 1.2.0
|
5
|
+
|
6
|
+
* Drop support for Rubies below 2.1
|
7
|
+
* Handle multi-line definitions in IRB correctly
|
8
|
+
* Tighten and update dependencies
|
9
|
+
|
4
10
|
== Version 1.1.3
|
5
11
|
|
6
12
|
* Keep ASTs in the cache when they are fetched, allowing aliased methods to
|
data/README.rdoc
CHANGED
@@ -25,11 +25,11 @@ Live abstract syntax trees of methods and procs. Fork of +live_ast+
|
|
25
25
|
|
26
26
|
f = lambda { "foo" }
|
27
27
|
p f.to_ast
|
28
|
-
# => s(:iter, s(:call, nil, :lambda),
|
28
|
+
# => s(:iter, s(:call, nil, :lambda), 0, s(:str, "foo"))
|
29
29
|
|
30
30
|
def query(&block)
|
31
31
|
p block.to_ast
|
32
|
-
# => s(:iter, s(:call, nil, :query),
|
32
|
+
# => s(:iter, s(:call, nil, :query), 0, s(:str, "bar"))
|
33
33
|
end
|
34
34
|
|
35
35
|
query do
|
@@ -40,7 +40,7 @@ Live abstract syntax trees of methods and procs. Fork of +live_ast+
|
|
40
40
|
|
41
41
|
u = ast_eval "lambda { 'dynamic3' }", binding
|
42
42
|
p u.to_ast
|
43
|
-
# => s(:iter, s(:call, nil, :lambda),
|
43
|
+
# => s(:iter, s(:call, nil, :lambda), 0, s(:str, "dynamic3"))
|
44
44
|
|
45
45
|
ast_eval "def v ; 'dynamic4' ; end", binding
|
46
46
|
p method(:v).to_ast
|
@@ -52,7 +52,7 @@ Live abstract syntax trees of methods and procs. Fork of +live_ast+
|
|
52
52
|
|
53
53
|
f = eval "lambda { 'dynamic1' }"
|
54
54
|
p f.to_ast
|
55
|
-
# => s(:iter, s(:call, nil, :lambda),
|
55
|
+
# => s(:iter, s(:call, nil, :lambda), 0, s(:str, "dynamic1"))
|
56
56
|
|
57
57
|
eval "def g ; 'dynamic2' ; end"
|
58
58
|
p method(:g).to_ast
|
@@ -80,7 +80,7 @@ sexps used by tools such as <code>ruby2ruby</code>.
|
|
80
80
|
|
81
81
|
LiveAST is thread-safe.
|
82
82
|
|
83
|
-
Ruby 1.
|
83
|
+
Ruby 2.1.0 or higher is required.
|
84
84
|
|
85
85
|
== Links
|
86
86
|
|
@@ -124,7 +124,7 @@ semantics as +eval+ except that the binding argument is required.
|
|
124
124
|
|
125
125
|
u = ast_eval "lambda { 'dynamic3' }", binding
|
126
126
|
p u.to_ast
|
127
|
-
# => s(:iter, s(:call, nil, :lambda),
|
127
|
+
# => s(:iter, s(:call, nil, :lambda), 0, s(:str, "dynamic3"))
|
128
128
|
|
129
129
|
== Full Integration
|
130
130
|
|
@@ -146,7 +146,7 @@ below for details).
|
|
146
146
|
|
147
147
|
f = eval "lambda { 'dynamic1' }"
|
148
148
|
p f.to_ast
|
149
|
-
# => s(:iter, s(:call, nil, :lambda),
|
149
|
+
# => s(:iter, s(:call, nil, :lambda), 0, s(:str, "dynamic1"))
|
150
150
|
|
151
151
|
Since LiveAST itself is pure ruby, any platforms supported by
|
152
152
|
+binding_of_caller+ should work with <code>live_ast/full</code>.
|
@@ -277,12 +277,12 @@ The following alternative interface is available.
|
|
277
277
|
# => s(:defn, :f, s(:args), s(:str, "A#f"))
|
278
278
|
|
279
279
|
p LiveAST.ast(lambda { })
|
280
|
-
# => s(:iter, s(:call, nil, :lambda),
|
280
|
+
# => s(:iter, s(:call, nil, :lambda), 0)
|
281
281
|
|
282
282
|
f = LiveAST.eval("lambda { }", binding)
|
283
283
|
|
284
284
|
p LiveAST.ast(f)
|
285
|
-
# => s(:iter, s(:call, nil, :lambda),
|
285
|
+
# => s(:iter, s(:call, nil, :lambda), 0)
|
286
286
|
|
287
287
|
ast_eval # => raises NameError
|
288
288
|
|
data/lib/live_ast/base.rb
CHANGED
@@ -9,16 +9,16 @@ require 'live_ast/error'
|
|
9
9
|
require 'live_ast/irb_spy' if defined?(IRB)
|
10
10
|
|
11
11
|
module LiveAST
|
12
|
-
NATIVE_EVAL = Kernel.method(:eval)
|
12
|
+
NATIVE_EVAL = Kernel.method(:eval) #:nodoc:
|
13
13
|
|
14
14
|
class << self
|
15
|
-
attr_writer :parser
|
15
|
+
attr_writer :parser #:nodoc:
|
16
16
|
|
17
|
-
def parser
|
18
|
-
@parser ||=
|
17
|
+
def parser #:nodoc:
|
18
|
+
@parser ||= begin
|
19
19
|
require 'live_ast/ruby_parser'
|
20
20
|
LiveAST::RubyParser
|
21
|
-
|
21
|
+
end
|
22
22
|
end
|
23
23
|
|
24
24
|
#
|
@@ -26,7 +26,7 @@ module LiveAST
|
|
26
26
|
#
|
27
27
|
# Equivalent to <code>obj.to_ast</code>.
|
28
28
|
#
|
29
|
-
def ast(obj)
|
29
|
+
def ast(obj) #:nodoc:
|
30
30
|
case obj
|
31
31
|
when Method, UnboundMethod
|
32
32
|
Linker.find_method_ast(obj.owner, obj.name, *obj.source_location)
|
@@ -50,7 +50,7 @@ module LiveAST
|
|
50
50
|
#
|
51
51
|
# Equivalent to <code>Kernel#ast_eval</code>.
|
52
52
|
#
|
53
|
-
def eval(*args)
|
53
|
+
def eval(*args) #:nodoc:
|
54
54
|
Evaler.eval(args[0], *args)
|
55
55
|
end
|
56
56
|
|
@@ -59,14 +59,14 @@ module LiveAST
|
|
59
59
|
#
|
60
60
|
# Equivalent to <code>Kernel#ast_load</code>.
|
61
61
|
#
|
62
|
-
def load(file, wrap = false)
|
62
|
+
def load(file, wrap = false) #:nodoc:
|
63
63
|
Loader.load(file, wrap)
|
64
64
|
end
|
65
65
|
|
66
66
|
#
|
67
67
|
# strip the revision token from a string
|
68
68
|
#
|
69
|
-
def strip_token(file)
|
69
|
+
def strip_token(file) #:nodoc:
|
70
70
|
file.sub(/#{Regexp.quote Linker::REVISION_TOKEN}[a-z]+/, "")
|
71
71
|
end
|
72
72
|
end
|
data/lib/live_ast/common.rb
CHANGED
@@ -8,11 +8,7 @@ module LiveAST
|
|
8
8
|
rescue NameError
|
9
9
|
thing = arg.nil? ? nil : arg.class
|
10
10
|
|
11
|
-
message =
|
12
|
-
"can't convert #{thing.inspect} into String"
|
13
|
-
else
|
14
|
-
"no implicit conversion of #{thing.inspect} into String"
|
15
|
-
end
|
11
|
+
message = "no implicit conversion of #{thing.inspect} into String"
|
16
12
|
raise TypeError, message
|
17
13
|
end
|
18
14
|
|
@@ -21,17 +17,18 @@ module LiveAST
|
|
21
17
|
|
22
18
|
range = 0 if range == (0..0)
|
23
19
|
|
24
|
-
|
25
|
-
|
20
|
+
message = if RUBY_VERSION < "2.3.0"
|
21
|
+
"wrong number of arguments (#{args.size} for #{range})"
|
22
|
+
else
|
23
|
+
"wrong number of arguments (given #{args.size}, expected #{range})"
|
24
|
+
end
|
25
|
+
raise ArgumentError, message
|
26
26
|
end
|
27
27
|
|
28
28
|
def check_is_binding(obj)
|
29
29
|
return if obj.is_a? Binding
|
30
|
-
|
31
|
-
|
32
|
-
else
|
33
|
-
"wrong argument type #{obj.class} (expected binding)"
|
34
|
-
end
|
30
|
+
|
31
|
+
message = "wrong argument type #{obj.class} (expected binding)"
|
35
32
|
raise TypeError, message
|
36
33
|
end
|
37
34
|
|
data/lib/live_ast/error.rb
CHANGED
data/lib/live_ast/evaler.rb
CHANGED
@@ -9,7 +9,7 @@ module LiveAST
|
|
9
9
|
file, line = location_for_eval(bind, *rest)
|
10
10
|
file = LiveAST.strip_token(file)
|
11
11
|
|
12
|
-
key,
|
12
|
+
key, = Linker.new_cache_synced(parser_source, file, line, false)
|
13
13
|
|
14
14
|
begin
|
15
15
|
NATIVE_EVAL.call(evaler_source, bind, key, line)
|
data/lib/live_ast/irb_spy.rb
CHANGED
@@ -7,20 +7,23 @@ module LiveAST
|
|
7
7
|
attr_writer :history
|
8
8
|
|
9
9
|
def code_at(line)
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
code = ""
|
11
|
+
checked_history[line..-1].each do |code_line|
|
12
|
+
code << code_line << "\n"
|
13
|
+
return code if can_parse code
|
13
14
|
end
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
15
|
+
end
|
16
|
+
|
17
|
+
def can_parse(code)
|
18
|
+
LiveAST.parser.new.parse(code)
|
19
|
+
rescue StandardError
|
20
|
+
false
|
21
|
+
end
|
22
|
+
|
23
|
+
def checked_history
|
24
|
+
return @history if @history
|
25
|
+
raise NotImplementedError,
|
26
|
+
"LiveAST cannot access history for this IRB input method"
|
24
27
|
end
|
25
28
|
end
|
26
29
|
end
|
data/lib/live_ast/linker.rb
CHANGED
data/lib/live_ast/loader.rb
CHANGED
@@ -18,15 +18,12 @@ module LiveAST
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def header_footer(wrap)
|
21
|
-
if wrap
|
22
|
-
|
23
|
-
else
|
24
|
-
locals = NATIVE_EVAL.call("local_variables", TOPLEVEL_BINDING)
|
21
|
+
return "class << Object.new;", ";end", true if wrap
|
22
|
+
locals = NATIVE_EVAL.call("local_variables", TOPLEVEL_BINDING)
|
25
23
|
|
26
|
-
|
24
|
+
params = locals.empty? ? "" : ("|;" + locals.join(",") + "|")
|
27
25
|
|
28
|
-
|
29
|
-
end
|
26
|
+
return "lambda do #{params}", ";end.call", locals.empty?
|
30
27
|
end
|
31
28
|
|
32
29
|
def suppress_warnings
|
data/lib/live_ast/reader.rb
CHANGED
@@ -32,31 +32,10 @@ module LiveAST
|
|
32
32
|
private
|
33
33
|
|
34
34
|
def handle_args(args)
|
35
|
-
if RUBY_VERSION < '2.0.0'
|
36
|
-
handle_args_pre_20(args)
|
37
|
-
else
|
38
|
-
handle_args_20(args)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def handle_args_20(args)
|
43
35
|
LiveAST::Common.check_arity(args, 1..3)
|
44
36
|
args[0] = Common.arg_to_str(args[0])
|
45
37
|
args[1] = Common.arg_to_str(args[1]) if args.length > 1
|
46
38
|
end
|
47
|
-
|
48
|
-
def handle_args_pre_20(args)
|
49
|
-
raise ArgumentError, "block not supplied" if args.empty?
|
50
|
-
|
51
|
-
args[0] = Common.arg_to_str(args[0])
|
52
|
-
|
53
|
-
unless (1..3).include? args.size
|
54
|
-
raise ArgumentError,
|
55
|
-
"wrong number of arguments: instance_eval(src) or instance_eval{..}"
|
56
|
-
end
|
57
|
-
|
58
|
-
args[1] = Common.arg_to_str(args[1]) if args.length > 1
|
59
|
-
end
|
60
39
|
end
|
61
40
|
end
|
62
41
|
|
@@ -67,23 +46,24 @@ end
|
|
67
46
|
# Override for Kernel#eval and Kernel.eval
|
68
47
|
module Kernel
|
69
48
|
class << self
|
70
|
-
|
49
|
+
alias live_ast_original_singleton_eval eval
|
71
50
|
end
|
72
51
|
|
73
|
-
|
52
|
+
alias live_ast_original_eval eval
|
74
53
|
|
75
54
|
def eval(*args)
|
76
55
|
LiveAST::Common.check_arity(args, 1..4)
|
77
56
|
LiveAST.eval(
|
78
57
|
args[0],
|
79
58
|
args[1] || binding.of_caller(1),
|
80
|
-
*LiveAST::Common.location_for_eval(*args[1..3])
|
59
|
+
*LiveAST::Common.location_for_eval(*args[1..3])
|
60
|
+
)
|
81
61
|
end
|
82
62
|
end
|
83
63
|
|
84
64
|
# Override for Binding#eval
|
85
65
|
class Binding
|
86
|
-
|
66
|
+
alias live_ast_original_binding_eval eval
|
87
67
|
|
88
68
|
def eval(*args)
|
89
69
|
LiveAST.eval(args[0], self, *args[1..-1])
|
@@ -92,21 +72,24 @@ end
|
|
92
72
|
|
93
73
|
# Override for BasicObject#instance_eval
|
94
74
|
class BasicObject
|
95
|
-
|
75
|
+
alias live_ast_original_instance_eval instance_eval
|
96
76
|
|
97
77
|
def instance_eval(*args, &block)
|
98
78
|
if block
|
99
79
|
live_ast_original_instance_eval(*args, &block)
|
100
80
|
else
|
101
81
|
::LiveAST::ReplaceEval.
|
102
|
-
module_or_instance_eval(:instance,
|
82
|
+
module_or_instance_eval(:instance,
|
83
|
+
self,
|
84
|
+
::Kernel.binding.of_caller(1),
|
85
|
+
args)
|
103
86
|
end
|
104
87
|
end
|
105
88
|
end
|
106
89
|
|
107
90
|
# Overrides for Module#module_eval and Module#class_eval
|
108
91
|
class Module
|
109
|
-
|
92
|
+
alias live_ast_original_module_eval module_eval
|
110
93
|
|
111
94
|
def module_eval(*args, &block)
|
112
95
|
if block
|
@@ -118,5 +101,5 @@ class Module
|
|
118
101
|
end
|
119
102
|
|
120
103
|
remove_method :class_eval
|
121
|
-
|
104
|
+
alias class_eval module_eval
|
122
105
|
end
|
data/lib/live_ast/ruby_parser.rb
CHANGED
@@ -15,11 +15,10 @@ module LiveAST
|
|
15
15
|
@defs
|
16
16
|
end
|
17
17
|
|
18
|
+
STOREABLE_SEXP_TYPES = [:defn, :defs, :iter].freeze
|
19
|
+
|
18
20
|
def process(sexp)
|
19
|
-
|
20
|
-
when :defn, :defs, :iter
|
21
|
-
store_sexp(sexp, sexp.line)
|
22
|
-
end
|
21
|
+
store_sexp(sexp, sexp.line) if STOREABLE_SEXP_TYPES.include? sexp.first
|
23
22
|
|
24
23
|
sexp.each do |elem|
|
25
24
|
process(elem) if elem.is_a? Sexp
|
@@ -134,7 +134,7 @@ module LiveAST
|
|
134
134
|
# foo { "bar" }
|
135
135
|
#
|
136
136
|
def no_arg_block(name, ret)
|
137
|
-
s(:iter, s(:call, nil, name),
|
137
|
+
s(:iter, s(:call, nil, name), 0, s(:str, ret))
|
138
138
|
end
|
139
139
|
|
140
140
|
#
|
@@ -173,8 +173,8 @@ module LiveAST
|
|
173
173
|
def nested_lambdas(str)
|
174
174
|
s(:iter,
|
175
175
|
s(:call, nil, :lambda),
|
176
|
-
|
177
|
-
s(:iter, s(:call, nil, :lambda),
|
176
|
+
0,
|
177
|
+
s(:iter, s(:call, nil, :lambda), 0, s(:str, str)))
|
178
178
|
end
|
179
179
|
|
180
180
|
# nested_defs(:f, :g, "foo") returns the ast of
|
@@ -193,7 +193,7 @@ module LiveAST
|
|
193
193
|
s(:args),
|
194
194
|
s(:iter,
|
195
195
|
s(:call, s(:const, :Class), :new),
|
196
|
-
|
196
|
+
0,
|
197
197
|
s(:defn, v, s(:args), s(:str, str))))
|
198
198
|
end
|
199
199
|
end
|
data/lib/live_ast/to_ruby.rb
CHANGED
data/lib/live_ast/version.rb
CHANGED
data/test/alias_test.rb
CHANGED
@@ -14,7 +14,7 @@ class AstLoadTest < BaseTest
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def noninvasive_ast_reload
|
17
|
-
|
17
|
+
code1 = %{
|
18
18
|
class AstLoadTest::B
|
19
19
|
def f
|
20
20
|
"first B#f"
|
@@ -22,7 +22,7 @@ class AstLoadTest < BaseTest
|
|
22
22
|
end
|
23
23
|
}
|
24
24
|
|
25
|
-
|
25
|
+
code2 = %{
|
26
26
|
class AstLoadTest::B
|
27
27
|
def f
|
28
28
|
"second B#f"
|
@@ -30,12 +30,12 @@ class AstLoadTest < BaseTest
|
|
30
30
|
end
|
31
31
|
}
|
32
32
|
|
33
|
-
temp_file
|
33
|
+
temp_file code1 do |file|
|
34
34
|
load file
|
35
35
|
|
36
36
|
LiveAST.ast(B.instance_method(:f))
|
37
37
|
|
38
|
-
write_file file,
|
38
|
+
write_file file, code2
|
39
39
|
ast_load file
|
40
40
|
|
41
41
|
assert_equal no_arg_def(:f, "second B#f"),
|
data/test/backtrace_test.rb
CHANGED
@@ -150,7 +150,7 @@ define_unsorted_test_case "BacktraceTest", RegularTest do
|
|
150
150
|
|
151
151
|
def test_tokens_stripped
|
152
152
|
lines = exception_backtrace do
|
153
|
-
ast_eval %{ ast_eval
|
153
|
+
ast_eval %{ ast_eval ' ast_eval "raise", binding ', binding }, binding
|
154
154
|
end
|
155
155
|
lines.each do |line|
|
156
156
|
assert_nil line.index(LiveAST::Linker::REVISION_TOKEN)
|
data/test/base/reload_test.rb
CHANGED
@@ -8,7 +8,7 @@ class ReloadTest < BaseTest
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def raw_reload
|
11
|
-
|
11
|
+
code1 = %{
|
12
12
|
class ReloadTest::A
|
13
13
|
def f
|
14
14
|
"first A#f"
|
@@ -16,7 +16,7 @@ class ReloadTest < BaseTest
|
|
16
16
|
end
|
17
17
|
}
|
18
18
|
|
19
|
-
|
19
|
+
code2 = %{
|
20
20
|
class ReloadTest::A
|
21
21
|
def f
|
22
22
|
"second A#f"
|
@@ -24,12 +24,12 @@ class ReloadTest < BaseTest
|
|
24
24
|
end
|
25
25
|
}
|
26
26
|
|
27
|
-
temp_file
|
27
|
+
temp_file code1 do |file|
|
28
28
|
load file
|
29
29
|
|
30
30
|
LiveAST.ast(A.instance_method(:f))
|
31
31
|
|
32
|
-
write_file file,
|
32
|
+
write_file file, code2
|
33
33
|
load file
|
34
34
|
|
35
35
|
# forced a raw-reload inconsistency -- verify bogus
|
data/test/encoding_test.rb
CHANGED
@@ -1,29 +1,23 @@
|
|
1
1
|
require_relative 'main'
|
2
2
|
|
3
3
|
class AllEncodingTest < RegularTest
|
4
|
-
ENC_TESTS =
|
5
|
-
default
|
6
|
-
usascii US-ASCII
|
7
|
-
utf8 UTF-8
|
8
|
-
utf8unix UTF-8
|
9
|
-
utf8mac UTF-8
|
10
|
-
utf8mac_alt UTF8-MAC
|
11
|
-
utf8dos UTF-8
|
12
|
-
utf8bom UTF-8
|
13
|
-
utf8bom_only UTF-8
|
14
|
-
usascii_with_utf8bom US-ASCII
|
15
|
-
koi8_with_utf8bom KOI8-R
|
16
|
-
cp932 Windows-31J
|
17
|
-
eucjp EUC-JP
|
18
|
-
koi8 KOI8-R
|
19
|
-
koi8_shebang KOI8-R
|
20
|
-
|
21
|
-
|
22
|
-
if RUBY_VERSION < '2.0.0'
|
23
|
-
ENC_TESTS['default'] = 'US-ASCII'
|
24
|
-
else
|
25
|
-
ENC_TESTS['default'] = 'UTF-8'
|
26
|
-
end
|
4
|
+
ENC_TESTS = {
|
5
|
+
default: "UTF-8",
|
6
|
+
usascii: "US-ASCII",
|
7
|
+
utf8: "UTF-8",
|
8
|
+
utf8unix: "UTF-8",
|
9
|
+
utf8mac: "UTF-8",
|
10
|
+
utf8mac_alt: "UTF8-MAC",
|
11
|
+
utf8dos: "UTF-8",
|
12
|
+
utf8bom: "UTF-8",
|
13
|
+
utf8bom_only: "UTF-8",
|
14
|
+
usascii_with_utf8bom: "US-ASCII",
|
15
|
+
koi8_with_utf8bom: "KOI8-R",
|
16
|
+
cp932: "Windows-31J",
|
17
|
+
eucjp: "EUC-JP",
|
18
|
+
koi8: "KOI8-R",
|
19
|
+
koi8_shebang: "KOI8-R"
|
20
|
+
}.freeze
|
27
21
|
|
28
22
|
ENC_TESTS.each_pair do |abbr, name|
|
29
23
|
define_method "test_#{abbr}" do
|
@@ -8,7 +8,7 @@ class ASTReloadTest < ReplaceEvalTest
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def ast_reload
|
11
|
-
|
11
|
+
code1 = %{
|
12
12
|
class ASTReloadTest::C
|
13
13
|
def f
|
14
14
|
"first C#f"
|
@@ -16,7 +16,7 @@ class ASTReloadTest < ReplaceEvalTest
|
|
16
16
|
end
|
17
17
|
}
|
18
18
|
|
19
|
-
|
19
|
+
code2 = %{
|
20
20
|
class ASTReloadTest::C
|
21
21
|
def f
|
22
22
|
"second C#f"
|
@@ -24,12 +24,12 @@ class ASTReloadTest < ReplaceEvalTest
|
|
24
24
|
end
|
25
25
|
}
|
26
26
|
|
27
|
-
temp_file
|
27
|
+
temp_file code1 do |file|
|
28
28
|
load file
|
29
29
|
|
30
30
|
LiveAST.ast(C.instance_method(:f))
|
31
31
|
|
32
|
-
write_file file,
|
32
|
+
write_file file, code2
|
33
33
|
load file
|
34
34
|
|
35
35
|
assert_equal no_arg_def(:f, "second C#f"),
|
@@ -174,10 +174,16 @@ class FullReplaceEvalTest < ReplaceEvalTest
|
|
174
174
|
require 'live_ast/full'
|
175
175
|
end
|
176
176
|
|
177
|
-
let(:orig) {
|
178
|
-
|
179
|
-
|
180
|
-
|
177
|
+
let(:orig) {
|
178
|
+
assert_raises(ArgumentError, TypeError) do
|
179
|
+
Object.new.live_ast_original_instance_eval(*args)
|
180
|
+
end
|
181
|
+
}
|
182
|
+
let(:live) {
|
183
|
+
assert_raises(ArgumentError, TypeError) do
|
184
|
+
Object.new.instance_eval(*args)
|
185
|
+
end
|
186
|
+
}
|
181
187
|
|
182
188
|
describe "when the second argument is nil" do
|
183
189
|
let(:args) { ['1', nil] }
|
@@ -354,7 +360,7 @@ class FullReplaceEvalTest < ReplaceEvalTest
|
|
354
360
|
|
355
361
|
x = 5
|
356
362
|
eval %{
|
357
|
-
assert_equal(3, eval(
|
363
|
+
assert_equal(3, eval(' eval("1 + 2") '))
|
358
364
|
x = 6
|
359
365
|
}
|
360
366
|
assert_equal 6, x
|
data/test/irb_test.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative 'main'
|
2
|
+
require 'live_ast/irb_spy'
|
2
3
|
|
3
4
|
class IRBTest < RegularTest
|
4
5
|
def with_module(parent, child)
|
@@ -10,16 +11,31 @@ class IRBTest < RegularTest
|
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
13
|
-
def
|
14
|
+
def setup
|
15
|
+
LiveAST::IRBSpy.history = [
|
16
|
+
nil,
|
17
|
+
"class Foo; def bar; 'bar'; end; end",
|
18
|
+
"class Bar",
|
19
|
+
" def foo",
|
20
|
+
" 'foo'",
|
21
|
+
" end",
|
22
|
+
"end"
|
23
|
+
]
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_single_line
|
27
|
+
with_module(Object, :IRB) do
|
28
|
+
expected = no_arg_def(:bar, "bar")
|
29
|
+
result = LiveAST::Linker.fetch_from_cache("(irb)", 1)
|
30
|
+
assert_equal expected, result
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_multiple_lines
|
14
35
|
with_module(Object, :IRB) do
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
"def f ; end"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
LiveAST::Linker.fetch_from_cache("(irb)", 1)
|
22
|
-
end
|
36
|
+
expected = no_arg_def(:foo, "foo")
|
37
|
+
result = LiveAST::Linker.fetch_from_cache("(irb)", 3)
|
38
|
+
assert_equal expected, result
|
23
39
|
end
|
24
40
|
end
|
25
41
|
end
|
data/test/load_path_test.rb
CHANGED
@@ -19,7 +19,7 @@ class LoadPathTest < BaseTest
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_chdir
|
22
|
-
mkdir DATA_DIR, verbose: false
|
22
|
+
mkdir DATA_DIR, verbose: false
|
23
23
|
Dir.chdir(DATA_DIR) do
|
24
24
|
check_load
|
25
25
|
check_errors
|
@@ -27,32 +27,30 @@ class LoadPathTest < BaseTest
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def check_load
|
30
|
-
|
30
|
+
code1 = %{
|
31
31
|
def hello
|
32
32
|
"password"
|
33
33
|
end
|
34
34
|
}
|
35
35
|
|
36
|
-
|
36
|
+
code2 = %{
|
37
37
|
def goodbye
|
38
38
|
"bubbleboy"
|
39
39
|
end
|
40
40
|
}
|
41
41
|
|
42
|
-
temp_file
|
43
|
-
Object.send(:remove_method, :hello) rescue nil
|
42
|
+
temp_file code1, "foo.rb" do |path|
|
44
43
|
load "foo.rb"
|
45
44
|
assert_equal "password", hello
|
46
45
|
|
47
|
-
write_file path,
|
46
|
+
write_file path, code2
|
48
47
|
|
49
|
-
Object.send(:remove_method, :goodbye) rescue nil
|
50
48
|
LiveAST.load "foo.rb"
|
51
49
|
assert_equal "bubbleboy", goodbye
|
52
50
|
end
|
53
51
|
ensure
|
54
|
-
Object.send(:remove_method, :hello)
|
55
|
-
Object.send(:remove_method, :goodbye)
|
52
|
+
Object.send(:remove_method, :hello)
|
53
|
+
Object.send(:remove_method, :goodbye)
|
56
54
|
end
|
57
55
|
|
58
56
|
def compare_load_errors(file)
|
data/test/main.rb
CHANGED
@@ -36,8 +36,8 @@ class JLMiniTest < MiniTest::Test
|
|
36
36
|
|
37
37
|
def mu_pp(obj)
|
38
38
|
delim("_") <<
|
39
|
-
|
40
|
-
|
39
|
+
obj.pretty_inspect.chomp <<
|
40
|
+
delim("=")
|
41
41
|
end
|
42
42
|
|
43
43
|
def unfixable
|
@@ -49,7 +49,7 @@ class JLMiniTest < MiniTest::Test
|
|
49
49
|
def assert_nothing_raised
|
50
50
|
yield
|
51
51
|
assert_nil nil
|
52
|
-
rescue => ex
|
52
|
+
rescue StandardError => ex
|
53
53
|
raise MiniTest::Assertion,
|
54
54
|
exception_details(ex, "Expected nothing raised, but got:")
|
55
55
|
end
|
@@ -81,7 +81,7 @@ class BaseTest < JLMiniTest
|
|
81
81
|
yield path
|
82
82
|
ensure
|
83
83
|
FileUtils.rm_f path
|
84
|
-
FileUtils.rmdir DATA_DIR
|
84
|
+
FileUtils.rmdir DATA_DIR
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
@@ -99,8 +99,7 @@ class BaseTest < JLMiniTest
|
|
99
99
|
e.backtrace
|
100
100
|
end
|
101
101
|
|
102
|
-
def ignore(*_args)
|
103
|
-
end
|
102
|
+
def ignore(*_args); end
|
104
103
|
end
|
105
104
|
|
106
105
|
class RegularTest < BaseTest
|
data/test/rubyspec_test.rb
CHANGED
@@ -4,36 +4,38 @@ require_relative '../devel/levitate'
|
|
4
4
|
#
|
5
5
|
# Tests against rubyspec branch which discards '|ast@' tokens
|
6
6
|
#
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
if ENV["LIVE_AST_RUBYSPEC_HOME"]
|
8
|
+
class RubySpecTest < RegularTest
|
9
|
+
FILES = [
|
10
|
+
'core/basicobject/instance_eval_spec.rb',
|
11
|
+
'core/binding/eval_spec.rb',
|
12
|
+
'core/kernel/eval_spec.rb',
|
13
|
+
'core/kernel/instance_eval_spec.rb',
|
14
|
+
'core/module/class_eval_spec.rb',
|
15
|
+
'core/module/module_eval_spec.rb',
|
16
|
+
].freeze
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
def setup
|
19
|
+
super
|
20
|
+
puts "\n==== rubyspec"
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
FILES.each do |file|
|
24
|
+
mname = "test_" + file.tr("/", "_").chop!.chop!.chop!
|
25
|
+
define_method mname do
|
26
|
+
Dir.chdir ENV["LIVE_AST_RUBYSPEC_HOME"] do
|
27
|
+
cmd =
|
28
|
+
["mspec", "-t", Levitate.ruby_bin] +
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
(["-T"] * Levitate.ruby_opts.size).
|
31
|
+
zip(Levitate.ruby_opts).
|
32
|
+
flatten +
|
32
33
|
|
33
|
-
|
34
|
+
[file]
|
34
35
|
|
35
|
-
|
36
|
+
assert system(*cmd)
|
37
|
+
end
|
36
38
|
end
|
37
39
|
end
|
38
40
|
end
|
39
|
-
end
|
41
|
+
end
|
data/test/thread_test.rb
CHANGED
@@ -1,97 +1,99 @@
|
|
1
1
|
require 'main'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
if LiveAST.parser::Test.respond_to?(:unparser_matches_ruby2ruby?) &&
|
4
|
+
LiveAST.parser::Test.unparser_matches_ruby2ruby?
|
5
|
+
class ToRubyTest < RegularTest
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
require 'live_ast/to_ruby'
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_lambda_0
|
12
|
+
src = %{lambda { "moo" }}
|
13
|
+
dst = ast_eval(src, binding).to_ruby
|
14
|
+
assert_equal src, dst
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_lambda_1
|
18
|
+
src = %{lambda { |x| (x ** 2) }}
|
19
|
+
dst = ast_eval(src, binding).to_ruby
|
20
|
+
assert_equal src, dst
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_lambda_2
|
24
|
+
src = %{lambda { |x, y| (x + y) }}
|
25
|
+
dst = ast_eval(src, binding).to_ruby
|
26
|
+
assert_equal src, dst
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_proc_0
|
30
|
+
src = %{proc { "moo" }}
|
31
|
+
dst = ast_eval(src, binding).to_ruby
|
32
|
+
assert_equal src, dst
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_proc_1
|
36
|
+
src = %{proc { |x| (x ** 2) }}
|
37
|
+
dst = ast_eval(src, binding).to_ruby
|
38
|
+
assert_equal src, dst
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_proc_2
|
42
|
+
src = %{proc { |x, y| (x * y) }}
|
43
|
+
dst = ast_eval(src, binding).to_ruby
|
44
|
+
assert_equal src, dst
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_block_0
|
48
|
+
src = %{return_block { "moo" }}
|
49
|
+
dst = ast_eval(src, binding).to_ruby
|
50
|
+
assert_equal src, dst
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_block_1
|
54
|
+
src = %{return_block { |x| (x ** 2) }}
|
55
|
+
dst = ast_eval(src, binding).to_ruby
|
56
|
+
assert_equal src, dst
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_block_2
|
60
|
+
src = %{return_block { |x, y| (x - y) }}
|
61
|
+
dst = ast_eval(src, binding).to_ruby
|
62
|
+
assert_equal src, dst
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_method_0
|
66
|
+
src = %{def f\n "moo"\nend}
|
67
|
+
dst = Class.new do
|
68
|
+
ast_eval(src, binding)
|
69
|
+
end.instance_method(:f).to_ruby
|
70
|
+
assert_equal src, dst
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_method_1
|
74
|
+
src = %{def f(x)\n (x ** 2)\nend}
|
75
|
+
dst = Class.new do
|
76
|
+
ast_eval(src, binding)
|
77
|
+
end.instance_method(:f).to_ruby
|
78
|
+
assert_equal src, dst
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_method_2
|
82
|
+
src = %{def f(x, y)\n (x / y)\nend}
|
83
|
+
dst = Class.new do
|
84
|
+
ast_eval(src, binding)
|
85
|
+
end.instance_method(:f).to_ruby
|
86
|
+
assert_equal src, dst
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_to_ast_after_to_ruby
|
90
|
+
src = %{lambda { "moo" }}
|
91
|
+
expected_ast = ast_eval(src, binding).to_ast
|
92
|
+
|
93
|
+
lmb = ast_eval(src, binding)
|
94
|
+
lmb.to_ruby
|
95
|
+
|
96
|
+
assert_equal expected_ast, lmb.to_ast
|
97
|
+
end
|
7
98
|
end
|
8
|
-
|
9
|
-
def test_lambda_0
|
10
|
-
src = %{lambda { "moo" }}
|
11
|
-
dst = ast_eval(src, binding).to_ruby
|
12
|
-
assert_equal src, dst
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_lambda_1
|
16
|
-
src = %{lambda { |x| (x ** 2) }}
|
17
|
-
dst = ast_eval(src, binding).to_ruby
|
18
|
-
assert_equal src, dst
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_lambda_2
|
22
|
-
src = %{lambda { |x, y| (x + y) }}
|
23
|
-
dst = ast_eval(src, binding).to_ruby
|
24
|
-
assert_equal src, dst
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_proc_0
|
28
|
-
src = %{proc { "moo" }}
|
29
|
-
dst = ast_eval(src, binding).to_ruby
|
30
|
-
assert_equal src, dst
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_proc_1
|
34
|
-
src = %{proc { |x| (x ** 2) }}
|
35
|
-
dst = ast_eval(src, binding).to_ruby
|
36
|
-
assert_equal src, dst
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_proc_2
|
40
|
-
src = %{proc { |x, y| (x * y) }}
|
41
|
-
dst = ast_eval(src, binding).to_ruby
|
42
|
-
assert_equal src, dst
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_block_0
|
46
|
-
src = %{return_block { "moo" }}
|
47
|
-
dst = ast_eval(src, binding).to_ruby
|
48
|
-
assert_equal src, dst
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_block_1
|
52
|
-
src = %{return_block { |x| (x ** 2) }}
|
53
|
-
dst = ast_eval(src, binding).to_ruby
|
54
|
-
assert_equal src, dst
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_block_2
|
58
|
-
src = %{return_block { |x, y| (x - y) }}
|
59
|
-
dst = ast_eval(src, binding).to_ruby
|
60
|
-
assert_equal src, dst
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_method_0
|
64
|
-
src = %{def f\n "moo"\nend}
|
65
|
-
dst = Class.new do
|
66
|
-
ast_eval(src, binding)
|
67
|
-
end.instance_method(:f).to_ruby
|
68
|
-
assert_equal src, dst
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_method_1
|
72
|
-
src = %{def f(x)\n (x ** 2)\nend}
|
73
|
-
dst = Class.new do
|
74
|
-
ast_eval(src, binding)
|
75
|
-
end.instance_method(:f).to_ruby
|
76
|
-
assert_equal src, dst
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_method_2
|
80
|
-
src = %{def f(x, y)\n (x / y)\nend}
|
81
|
-
dst = Class.new do
|
82
|
-
ast_eval(src, binding)
|
83
|
-
end.instance_method(:f).to_ruby
|
84
|
-
assert_equal src, dst
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_to_ast_after_to_ruby
|
88
|
-
src = %{lambda { "moo" }}
|
89
|
-
expected_ast = ast_eval(src, binding).to_ast
|
90
|
-
|
91
|
-
lmb = ast_eval(src, binding)
|
92
|
-
lmb.to_ruby
|
93
|
-
|
94
|
-
assert_equal expected_ast, lmb.to_ast
|
95
|
-
end
|
96
|
-
end if LiveAST.parser::Test.respond_to?(:unparser_matches_ruby2ruby?) &&
|
97
|
-
LiveAST.parser::Test.unparser_matches_ruby2ruby?
|
99
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mvz-live_ast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James M. Lawrence
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-09-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby_parser
|
@@ -17,42 +17,42 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 3.10.1
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 3.10.1
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: ruby2ruby
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 2.4.0
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 2.4.0
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: binding_of_caller
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
48
|
+
version: 0.7.2
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: 0.7.2
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: bundler
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -213,7 +213,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
213
213
|
requirements:
|
214
214
|
- - ">="
|
215
215
|
- !ruby/object:Gem::Version
|
216
|
-
version: 1.
|
216
|
+
version: 2.1.0
|
217
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
218
|
requirements:
|
219
219
|
- - ">="
|
@@ -221,59 +221,58 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
221
221
|
version: '0'
|
222
222
|
requirements: []
|
223
223
|
rubyforge_project:
|
224
|
-
rubygems_version: 2.
|
224
|
+
rubygems_version: 2.6.13
|
225
225
|
signing_key:
|
226
226
|
specification_version: 4
|
227
227
|
summary: Live abstract syntax trees of methods and procs.
|
228
228
|
test_files:
|
229
|
-
- test/
|
230
|
-
- test/
|
231
|
-
- test/
|
232
|
-
- test/
|
229
|
+
- test/readme_test.rb
|
230
|
+
- test/rubyspec_test.rb
|
231
|
+
- test/lambda_test.rb
|
232
|
+
- test/redefine_method_test.rb
|
233
233
|
- test/stdlib_test.rb
|
234
|
-
- test/rubygems_test.rb
|
235
234
|
- test/full/replace_eval_test.rb
|
236
235
|
- test/full/ast_reload_test.rb
|
237
236
|
- test/to_ruby/to_ruby_test.rb
|
238
237
|
- test/to_ruby/to_ruby_feature_test.rb
|
239
|
-
- test/
|
240
|
-
- test/eval_test.rb
|
241
|
-
- test/ast_eval/ast_eval_test.rb
|
242
|
-
- test/readme_test.rb
|
243
|
-
- test/def_test.rb
|
244
|
-
- test/attr_test.rb
|
245
|
-
- test/thread_test.rb
|
246
|
-
- test/load_path_test.rb
|
247
|
-
- test/ast_load/ast_load_test.rb
|
248
|
-
- test/alias_test.rb
|
249
|
-
- test/rubyspec_test.rb
|
250
|
-
- test/redefine_method_test.rb
|
251
|
-
- test/lambda_test.rb
|
252
|
-
- test/error_test.rb
|
253
|
-
- test/recursive_eval_test.rb
|
254
|
-
- test/define_singleton_method_test.rb
|
255
|
-
- test/encoding_test/utf8bom_only.rb
|
256
|
-
- test/encoding_test/utf8unix.rb
|
257
|
-
- test/encoding_test/eucjp.rb
|
258
|
-
- test/encoding_test/usascii_with_utf8bom.rb
|
259
|
-
- test/encoding_test/utf8bom.rb
|
238
|
+
- test/to_ast/to_ast_feature_test.rb
|
260
239
|
- test/encoding_test/utf8mac_alt.rb
|
261
|
-
- test/encoding_test/default.rb
|
262
240
|
- test/encoding_test/usascii.rb
|
263
|
-
- test/encoding_test/
|
264
|
-
- test/encoding_test/
|
265
|
-
- test/encoding_test/
|
241
|
+
- test/encoding_test/default.rb
|
242
|
+
- test/encoding_test/utf8dos.rb
|
243
|
+
- test/encoding_test/eucjp.rb
|
266
244
|
- test/encoding_test/bad.rb
|
267
|
-
- test/encoding_test/utf8mac.rb
|
268
245
|
- test/encoding_test/koi8_with_utf8bom.rb
|
269
|
-
- test/encoding_test/
|
246
|
+
- test/encoding_test/utf8bom_only.rb
|
247
|
+
- test/encoding_test/koi8_shebang.rb
|
248
|
+
- test/encoding_test/utf8unix.rb
|
249
|
+
- test/encoding_test/cp932.rb
|
250
|
+
- test/encoding_test/utf8.rb
|
270
251
|
- test/encoding_test/koi8.rb
|
252
|
+
- test/encoding_test/utf8bom.rb
|
253
|
+
- test/encoding_test/usascii_with_utf8bom.rb
|
254
|
+
- test/encoding_test/utf8mac.rb
|
255
|
+
- test/encoding_test.rb
|
256
|
+
- test/alias_test.rb
|
257
|
+
- test/rubygems_test.rb
|
258
|
+
- test/define_singleton_method_test.rb
|
259
|
+
- test/covert_define_method_test.rb
|
260
|
+
- test/ast_load/ast_load_test.rb
|
261
|
+
- test/backtrace_test.rb
|
271
262
|
- test/load_test.rb
|
263
|
+
- test/singleton_test.rb
|
264
|
+
- test/recursive_eval_test.rb
|
265
|
+
- test/base/reload_test.rb
|
266
|
+
- test/base/noninvasive_test.rb
|
267
|
+
- test/define_method_test.rb
|
268
|
+
- test/eval_test.rb
|
269
|
+
- test/attr_test.rb
|
270
|
+
- test/irb_test.rb
|
271
|
+
- test/load_path_test.rb
|
272
272
|
- test/nested_test.rb
|
273
|
+
- test/def_test.rb
|
274
|
+
- test/thread_test.rb
|
275
|
+
- test/flush_cache_test.rb
|
276
|
+
- test/error_test.rb
|
277
|
+
- test/ast_eval/ast_eval_test.rb
|
273
278
|
- test/main.rb
|
274
|
-
- test/define_method_test.rb
|
275
|
-
- test/backtrace_test.rb
|
276
|
-
- test/base/noninvasive_test.rb
|
277
|
-
- test/base/reload_test.rb
|
278
|
-
- test/encoding_test.rb
|
279
|
-
has_rdoc:
|