mvz-live_ast 1.3.0 → 2.1.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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.rdoc +21 -1
  3. data/README.rdoc +17 -3
  4. data/lib/live_ast/ast_eval.rb +3 -1
  5. data/lib/live_ast/ast_load.rb +3 -1
  6. data/lib/live_ast/base.rb +20 -19
  7. data/lib/live_ast/common.rb +11 -1
  8. data/lib/live_ast/error.rb +2 -0
  9. data/lib/live_ast/evaler.rb +5 -3
  10. data/lib/live_ast/full.rb +4 -2
  11. data/lib/live_ast/irb_spy.rb +7 -5
  12. data/lib/live_ast/linker.rb +6 -2
  13. data/lib/live_ast/loader.rb +7 -2
  14. data/lib/live_ast/reader.rb +4 -3
  15. data/lib/live_ast/replace_caller.rb +14 -0
  16. data/lib/live_ast/replace_eval.rb +15 -14
  17. data/lib/live_ast/replace_load.rb +3 -1
  18. data/lib/live_ast/replace_raise.rb +5 -3
  19. data/lib/live_ast/ruby_parser/test.rb +13 -0
  20. data/lib/live_ast/ruby_parser/unparser.rb +3 -1
  21. data/lib/live_ast/ruby_parser.rb +6 -4
  22. data/lib/live_ast/to_ast.rb +15 -18
  23. data/lib/live_ast/to_ruby.rb +10 -18
  24. data/lib/live_ast/version.rb +3 -1
  25. data/lib/live_ast.rb +6 -4
  26. metadata +106 -134
  27. data/Rakefile +0 -60
  28. data/devel/levitate.rb +0 -184
  29. data/devel/levitate_config.rb +0 -4
  30. data/test/alias_test.rb +0 -23
  31. data/test/ast_eval/ast_eval_test.rb +0 -11
  32. data/test/ast_load/ast_load_test.rb +0 -45
  33. data/test/attr_test.rb +0 -24
  34. data/test/backtrace_test.rb +0 -159
  35. data/test/base/noninvasive_test.rb +0 -53
  36. data/test/base/reload_test.rb +0 -41
  37. data/test/covert_define_method_test.rb +0 -23
  38. data/test/def_test.rb +0 -35
  39. data/test/define_method_test.rb +0 -67
  40. data/test/define_singleton_method_test.rb +0 -15
  41. data/test/encoding_test/bad.rb +0 -1
  42. data/test/encoding_test/cp932.rb +0 -6
  43. data/test/encoding_test/default.rb +0 -5
  44. data/test/encoding_test/eucjp.rb +0 -6
  45. data/test/encoding_test/koi8.rb +0 -6
  46. data/test/encoding_test/koi8_shebang.rb +0 -7
  47. data/test/encoding_test/koi8_with_utf8bom.rb +0 -6
  48. data/test/encoding_test/usascii.rb +0 -6
  49. data/test/encoding_test/usascii_with_utf8bom.rb +0 -6
  50. data/test/encoding_test/utf8.rb +0 -6
  51. data/test/encoding_test/utf8bom.rb +0 -6
  52. data/test/encoding_test/utf8bom_only.rb +0 -5
  53. data/test/encoding_test/utf8dos.rb +0 -6
  54. data/test/encoding_test/utf8mac.rb +0 -6
  55. data/test/encoding_test/utf8mac_alt.rb +0 -6
  56. data/test/encoding_test/utf8unix.rb +0 -6
  57. data/test/encoding_test.rb +0 -52
  58. data/test/error_test.rb +0 -116
  59. data/test/eval_test.rb +0 -269
  60. data/test/flush_cache_test.rb +0 -98
  61. data/test/full/ast_reload_test.rb +0 -39
  62. data/test/full/replace_eval_test.rb +0 -431
  63. data/test/irb_test.rb +0 -41
  64. data/test/lambda_test.rb +0 -63
  65. data/test/load_path_test.rb +0 -75
  66. data/test/load_test.rb +0 -123
  67. data/test/main.rb +0 -129
  68. data/test/nested_test.rb +0 -29
  69. data/test/readme_test.rb +0 -14
  70. data/test/recursive_eval_test.rb +0 -51
  71. data/test/redefine_method_test.rb +0 -83
  72. data/test/rubygems_test.rb +0 -25
  73. data/test/rubyspec_test.rb +0 -37
  74. data/test/singleton_test.rb +0 -25
  75. data/test/stdlib_test.rb +0 -13
  76. data/test/thread_test.rb +0 -43
  77. data/test/to_ast/to_ast_feature_test.rb +0 -11
  78. data/test/to_ruby/to_ruby_feature_test.rb +0 -11
  79. data/test/to_ruby/to_ruby_test.rb +0 -99
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mvz-live_ast
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James M. Lawrence
8
8
  - Matijs van Zuijlen
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-02-23 00:00:00.000000000 Z
12
+ date: 2022-02-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby2ruby
@@ -31,88 +31,159 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 3.11.0
34
+ version: '3.14'
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: 3.11.0
41
+ version: '3.14'
42
42
  - !ruby/object:Gem::Dependency
43
- name: binding_of_caller
43
+ name: bindings
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 0.8.0
48
+ version: 1.0.0
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: 0.8.0
55
+ version: 1.0.0
56
56
  - !ruby/object:Gem::Dependency
57
- name: bundler
57
+ name: minitest
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '1.3'
62
+ version: '5.0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '1.3'
69
+ version: '5.0'
70
70
  - !ruby/object:Gem::Dependency
71
- name: minitest
71
+ name: rake
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '5.0'
76
+ version: '13.0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '5.0'
83
+ version: '13.0'
84
84
  - !ruby/object:Gem::Dependency
85
- name: rake
85
+ name: rake-manifest
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '0'
90
+ version: 0.2.0
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ">="
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '0'
97
+ version: 0.2.0
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: rdoc
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ">="
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '6.2'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '6.2'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rubocop
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
103
117
  - !ruby/object:Gem::Version
104
- version: '0'
118
+ version: '1.25'
105
119
  type: :development
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
108
122
  requirements:
109
- - - ">="
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '1.25'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rubocop-minitest
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: 0.17.1
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: 0.17.1
140
+ - !ruby/object:Gem::Dependency
141
+ name: rubocop-packaging
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: 0.5.0
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: 0.5.0
154
+ - !ruby/object:Gem::Dependency
155
+ name: rubocop-performance
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '1.13'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '1.13'
168
+ - !ruby/object:Gem::Dependency
169
+ name: rubocop-rake
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: 0.6.0
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - "~>"
110
180
  - !ruby/object:Gem::Version
111
- version: '0'
181
+ version: 0.6.0
112
182
  description: |2
113
183
  LiveAST enables a program to find the ASTs of objects created by dynamically
114
184
  generated code.
115
- email: matijs@matijs.net
185
+ email:
186
+ - matijs@matijs.net
116
187
  executables: []
117
188
  extensions: []
118
189
  extra_rdoc_files:
@@ -121,9 +192,6 @@ extra_rdoc_files:
121
192
  files:
122
193
  - CHANGES.rdoc
123
194
  - README.rdoc
124
- - Rakefile
125
- - devel/levitate.rb
126
- - devel/levitate_config.rb
127
195
  - lib/live_ast.rb
128
196
  - lib/live_ast/ast_eval.rb
129
197
  - lib/live_ast/ast_load.rb
@@ -136,6 +204,7 @@ files:
136
204
  - lib/live_ast/linker.rb
137
205
  - lib/live_ast/loader.rb
138
206
  - lib/live_ast/reader.rb
207
+ - lib/live_ast/replace_caller.rb
139
208
  - lib/live_ast/replace_eval.rb
140
209
  - lib/live_ast/replace_load.rb
141
210
  - lib/live_ast/replace_raise.rb
@@ -145,61 +214,15 @@ files:
145
214
  - lib/live_ast/to_ast.rb
146
215
  - lib/live_ast/to_ruby.rb
147
216
  - lib/live_ast/version.rb
148
- - test/alias_test.rb
149
- - test/ast_eval/ast_eval_test.rb
150
- - test/ast_load/ast_load_test.rb
151
- - test/attr_test.rb
152
- - test/backtrace_test.rb
153
- - test/base/noninvasive_test.rb
154
- - test/base/reload_test.rb
155
- - test/covert_define_method_test.rb
156
- - test/def_test.rb
157
- - test/define_method_test.rb
158
- - test/define_singleton_method_test.rb
159
- - test/encoding_test.rb
160
- - test/encoding_test/bad.rb
161
- - test/encoding_test/cp932.rb
162
- - test/encoding_test/default.rb
163
- - test/encoding_test/eucjp.rb
164
- - test/encoding_test/koi8.rb
165
- - test/encoding_test/koi8_shebang.rb
166
- - test/encoding_test/koi8_with_utf8bom.rb
167
- - test/encoding_test/usascii.rb
168
- - test/encoding_test/usascii_with_utf8bom.rb
169
- - test/encoding_test/utf8.rb
170
- - test/encoding_test/utf8bom.rb
171
- - test/encoding_test/utf8bom_only.rb
172
- - test/encoding_test/utf8dos.rb
173
- - test/encoding_test/utf8mac.rb
174
- - test/encoding_test/utf8mac_alt.rb
175
- - test/encoding_test/utf8unix.rb
176
- - test/error_test.rb
177
- - test/eval_test.rb
178
- - test/flush_cache_test.rb
179
- - test/full/ast_reload_test.rb
180
- - test/full/replace_eval_test.rb
181
- - test/irb_test.rb
182
- - test/lambda_test.rb
183
- - test/load_path_test.rb
184
- - test/load_test.rb
185
- - test/main.rb
186
- - test/nested_test.rb
187
- - test/readme_test.rb
188
- - test/recursive_eval_test.rb
189
- - test/redefine_method_test.rb
190
- - test/rubygems_test.rb
191
- - test/rubyspec_test.rb
192
- - test/singleton_test.rb
193
- - test/stdlib_test.rb
194
- - test/thread_test.rb
195
- - test/to_ast/to_ast_feature_test.rb
196
- - test/to_ruby/to_ruby_feature_test.rb
197
- - test/to_ruby/to_ruby_test.rb
198
217
  homepage: https://github.com/mvz/live_ast
199
218
  licenses:
200
219
  - MIT
201
- metadata: {}
202
- post_install_message:
220
+ metadata:
221
+ homepage_uri: https://github.com/mvz/live_ast
222
+ source_code_uri: https://github.com/mvz/live_ast
223
+ changelog_uri: https://github.com/mvz/live_ast/blob/master/CHANGES.rdoc
224
+ rubygems_mfa_required: 'true'
225
+ post_install_message:
203
226
  rdoc_options:
204
227
  - "--main"
205
228
  - README.rdoc
@@ -213,66 +236,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
213
236
  requirements:
214
237
  - - ">="
215
238
  - !ruby/object:Gem::Version
216
- version: 2.3.0
239
+ version: 2.6.0
217
240
  required_rubygems_version: !ruby/object:Gem::Requirement
218
241
  requirements:
219
242
  - - ">="
220
243
  - !ruby/object:Gem::Version
221
244
  version: '0'
222
245
  requirements: []
223
- rubyforge_project:
224
- rubygems_version: 2.7.6
225
- signing_key:
246
+ rubygems_version: 3.3.3
247
+ signing_key:
226
248
  specification_version: 4
227
249
  summary: Live abstract syntax trees of methods and procs.
228
- test_files:
229
- - test/readme_test.rb
230
- - test/rubyspec_test.rb
231
- - test/lambda_test.rb
232
- - test/redefine_method_test.rb
233
- - test/stdlib_test.rb
234
- - test/full/replace_eval_test.rb
235
- - test/full/ast_reload_test.rb
236
- - test/to_ruby/to_ruby_test.rb
237
- - test/to_ruby/to_ruby_feature_test.rb
238
- - test/to_ast/to_ast_feature_test.rb
239
- - test/encoding_test/utf8mac_alt.rb
240
- - test/encoding_test/usascii.rb
241
- - test/encoding_test/default.rb
242
- - test/encoding_test/utf8dos.rb
243
- - test/encoding_test/eucjp.rb
244
- - test/encoding_test/bad.rb
245
- - test/encoding_test/koi8_with_utf8bom.rb
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
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
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
- - 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
278
- - test/main.rb
250
+ test_files: []
data/Rakefile DELETED
@@ -1,60 +0,0 @@
1
- require 'rake/clean'
2
- require 'bundler/gem_tasks'
3
- require 'rake/testtask'
4
- require 'rdoc/task'
5
-
6
- namespace :test do
7
- desc 'run tests'
8
- Rake::TestTask.new(:main) do |t|
9
- t.libs = ['lib']
10
- t.ruby_opts += ["-w -Itest"]
11
- t.test_files = FileList['test/*_test.rb']
12
- end
13
-
14
- Rake::TestTask.new(:base) do |t|
15
- t.libs = ['lib']
16
- t.ruby_opts += ["-w -Itest"]
17
- t.test_files = FileList['test/base/*_test.rb']
18
- end
19
-
20
- Rake::TestTask.new(:ast_load) do |t|
21
- t.libs = ['lib']
22
- t.ruby_opts += ["-w -Itest"]
23
- t.test_files = FileList['test/ast_load/*_test.rb']
24
- end
25
-
26
- Rake::TestTask.new(:ast_eval) do |t|
27
- t.libs = ['lib']
28
- t.ruby_opts += ["-w -Itest"]
29
- t.test_files = FileList['test/ast_eval/*_test.rb']
30
- end
31
-
32
- Rake::TestTask.new(:to_ast) do |t|
33
- t.libs = ['lib']
34
- t.ruby_opts += ["-w -Itest"]
35
- t.test_files = FileList['test/to_ast/*_test.rb']
36
- end
37
-
38
- Rake::TestTask.new(:to_ruby) do |t|
39
- t.libs = ['lib']
40
- t.ruby_opts += ["-w -Itest"]
41
- t.test_files = FileList['test/to_ruby/*_test.rb']
42
- end
43
-
44
- Rake::TestTask.new(:full) do |t|
45
- t.libs = ['lib']
46
- t.ruby_opts += ["-w -Itest"]
47
- t.test_files = FileList['test/full/*_test.rb']
48
- end
49
-
50
- task all: [:main, :base, :ast_load, :to_ast, :to_ruby, :full]
51
- end
52
-
53
- RDoc::Task.new(:rdoc) do |t|
54
- t.main = "README.rdoc"
55
- t.title = "LiveAST: Live Abstract Syntax Trees"
56
- t.options += ["--visibility", "private"]
57
- t.rdoc_files.include("README.rdoc", "CHANGES.rdoc", "lib")
58
- end
59
-
60
- task default: 'test:all'
data/devel/levitate.rb DELETED
@@ -1,184 +0,0 @@
1
- class Levitate
2
- #### utility for instance and class
3
- module Util
4
- def ruby_bin
5
- require 'rbconfig'
6
-
7
- name = File.join(
8
- RbConfig::CONFIG["bindir"],
9
- RbConfig::CONFIG["RUBY_INSTALL_NAME"]
10
- )
11
-
12
- if RbConfig::CONFIG["host"] =~ %r!(mswin|cygwin|mingw)! and
13
- File.basename(name) !~ %r!\.(exe|com|bat|cmd)\Z!i
14
- name + RbConfig::CONFIG["EXEEXT"]
15
- else
16
- name
17
- end
18
- end
19
-
20
- def ruby_command
21
- [ruby_bin] + Levitate.ruby_opts.to_a
22
- end
23
-
24
- def ruby_command_string
25
- ruby_command.join(" ")
26
- end
27
-
28
- def run(*args)
29
- cmd = ruby_command + args
30
- unless system(*cmd)
31
- cmd_str = cmd.map { |t| "'#{t}'" }.join(", ")
32
- raise "system(#{cmd_str}) failed with status #{$?.exitstatus}"
33
- end
34
- end
35
-
36
- def run_each_file(*files)
37
- files.each { |file|
38
- run("-w", file)
39
- }
40
- end
41
-
42
- def run_code_and_capture(code)
43
- IO.popen(ruby_command_string, "r+") { |pipe|
44
- pipe.print(code)
45
- pipe.flush
46
- pipe.close_write
47
- pipe.read
48
- }
49
- end
50
-
51
- def run_file_and_capture(file)
52
- unless File.file? file
53
- raise "file does not exist: `#{file}'"
54
- end
55
- IO.popen(ruby_command_string + " " + file, "r") { |pipe|
56
- pipe.read
57
- }
58
- end
59
-
60
- def with_warnings(value = true)
61
- previous = $VERBOSE
62
- $VERBOSE = value
63
- begin
64
- yield
65
- ensure
66
- $VERBOSE = previous
67
- end
68
- end
69
-
70
- def no_warnings(&block)
71
- with_warnings(nil, &block)
72
- end
73
-
74
- def to_camel_case(str)
75
- str.split('_').map { |t| t.capitalize }.join
76
- end
77
-
78
- def write_file(file)
79
- contents = yield
80
- File.open(file, "wb") { |out|
81
- out.print(contents)
82
- }
83
- contents
84
- end
85
-
86
- def instance_exec2(obj, *args, &block)
87
- method_name = ["_", obj.object_id, "_", Thread.current.object_id].join
88
- (class << obj; self; end).class_eval do
89
- define_method method_name, &block
90
- begin
91
- obj.send(method_name, *args)
92
- ensure
93
- remove_method method_name
94
- end
95
- end
96
- end
97
- end
98
- extend Util
99
- include Util
100
-
101
- #### public helpers for testing
102
-
103
- class << self
104
- def run_doc_code(code, expected, index, instance, &block)
105
- lib = File.expand_path(File.dirname(__FILE__) + "/../lib")
106
- header = %{
107
- $LOAD_PATH.unshift "#{lib}"
108
- begin
109
- }
110
- footer = %{
111
- rescue Exception => __levitate_exception
112
- puts "raises \#{__levitate_exception.class}"
113
- end
114
- }
115
- final_code = header + code + footer
116
-
117
- # Sometimes code is required to be inside a file.
118
- actual = nil
119
- require 'tempfile'
120
- Tempfile.open("run-rdoc-code") { |temp_file|
121
- temp_file.print(final_code)
122
- temp_file.close
123
- actual = run_file_and_capture(temp_file.path).chomp
124
- }
125
-
126
- instance_exec2(instance, expected, actual, index, &block)
127
- end
128
-
129
- def run_doc_section(file, section, instance, &block)
130
- contents = File.read(file)
131
- re = %r!^=+[ \t]#{Regexp.quote(section)}.*?\n(.*?)^=!m
132
- if (section_contents = contents[re, 1])
133
- index = 0
134
- section_contents.scan(%r!^( \S.*?)(?=(^\S|\Z))!m) { |indented, unused|
135
- code_sections = indented.split(%r!^ \#\#\#\# output:\s*$!)
136
- code, expected = (
137
- case code_sections.size
138
- when 1
139
- [indented, indented.scan(%r!\# => (.*?)\n!).flatten.join("\n")]
140
- when 2
141
- code_sections
142
- else
143
- raise "parse error"
144
- end
145
- )
146
- code.gsub!(/^\s*%.*$/, "") # ignore shell command examples
147
- run_doc_code(code, expected, index, instance, &block)
148
- index += 1
149
- }
150
- else
151
- raise "couldn't find section `#{section}' of `#{file}'"
152
- end
153
- end
154
-
155
- def doc_to_test(file, *sections, &block)
156
- levitate = self
157
- klass = Class.new MiniTest::Test do
158
- sections.each { |section|
159
- define_method "test_#{file}_#{section}" do
160
- if block
161
- levitate.run_doc_section(file, section, self, &block)
162
- else
163
- levitate.run_doc_section(file, section, self) {
164
- |expected, actual, index|
165
- assert_equal expected, actual
166
- }
167
- end
168
- end
169
- }
170
- end
171
- Object.const_set("Test#{file}".gsub(".", ""), klass)
172
- end
173
-
174
- def ruby_opts
175
- @ruby_opts ||= []
176
- end
177
- attr_writer :ruby_opts
178
- end
179
- end
180
-
181
- lambda do
182
- config = File.join(File.dirname(__FILE__), "levitate_config.rb")
183
- require config if File.file? config
184
- end.call
@@ -1,4 +0,0 @@
1
-
2
- if RUBY_ENGINE == "jruby"
3
- Levitate.ruby_opts = %w[--1.9]
4
- end
data/test/alias_test.rb DELETED
@@ -1,23 +0,0 @@
1
- require_relative 'main'
2
-
3
- class AliasTest < RegularTest
4
- class A
5
- def f
6
- "A#f"
7
- end
8
-
9
- alias g f
10
- end
11
-
12
- def test_alias_unbound_method
13
- expected = no_arg_def(:f, "A#f")
14
- assert_equal expected, A.instance_method(:f).to_ast
15
- assert_equal expected, A.instance_method(:g).to_ast
16
- end
17
-
18
- def test_alias_method
19
- expected = no_arg_def(:f, "A#f")
20
- assert_equal expected, A.new.method(:f).to_ast
21
- assert_equal expected, A.new.method(:g).to_ast
22
- end
23
- end
@@ -1,11 +0,0 @@
1
- require 'main'
2
-
3
- require 'live_ast/ast_eval'
4
-
5
- class ASTEvalTest < BaseTest
6
- def test_defines_ast_eval
7
- assert respond_to?(:ast_eval)
8
-
9
- assert private_methods.include?(:ast_eval)
10
- end
11
- end
@@ -1,45 +0,0 @@
1
- require 'main'
2
-
3
- require 'live_ast/ast_load'
4
-
5
- class AstLoadTest < BaseTest
6
- include FileUtils
7
-
8
- def test_defines_ast_load
9
- assert private_methods.include?(:ast_load)
10
- end
11
-
12
- def test_reloading
13
- noninvasive_ast_reload
14
- end
15
-
16
- def noninvasive_ast_reload
17
- code1 = %{
18
- class AstLoadTest::B
19
- def f
20
- "first B#f"
21
- end
22
- end
23
- }
24
-
25
- code2 = %{
26
- class AstLoadTest::B
27
- def f
28
- "second B#f"
29
- end
30
- end
31
- }
32
-
33
- temp_file code1 do |file|
34
- load file
35
-
36
- LiveAST.ast(B.instance_method(:f))
37
-
38
- write_file file, code2
39
- ast_load file
40
-
41
- assert_equal no_arg_def(:f, "second B#f"),
42
- LiveAST.ast(B.instance_method(:f))
43
- end
44
- end
45
- end