live_ast 0.5.2 → 0.6.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.
data/CHANGES.rdoc CHANGED
@@ -1,6 +1,12 @@
1
1
 
2
2
  = LiveAST ChangeLog
3
3
 
4
+ == Version 0.6.0
5
+
6
+ * removed FlushError and NoSourceError -- not possible to distinguish these
7
+ * added more tests
8
+ * refined testing API for plugins
9
+
4
10
  == Version 0.5.2
5
11
 
6
12
  * fix default plugin version
data/MANIFEST CHANGED
@@ -2,7 +2,7 @@ CHANGES.rdoc
2
2
  MANIFEST
3
3
  README.rdoc
4
4
  Rakefile
5
- devel/jumpstart.rb
5
+ devel/levitate.rb
6
6
  lib/live_ast.rb
7
7
  lib/live_ast/ast_eval.rb
8
8
  lib/live_ast/ast_load.rb
@@ -19,6 +19,7 @@ lib/live_ast/to_ruby.rb
19
19
  lib/live_ast/version.rb
20
20
  test/ast_eval_feature_test.rb
21
21
  test/ast_load_feature_test.rb
22
+ test/attr_test.rb
22
23
  test/backtrace_test.rb
23
24
  test/covert_define_method_test.rb
24
25
  test/def_test.rb
@@ -44,6 +45,7 @@ test/lambda_test.rb
44
45
  test/load_path_test.rb
45
46
  test/load_test.rb
46
47
  test/main.rb
48
+ test/nested_test.rb
47
49
  test/noninvasive_test.rb
48
50
  test/readme_test.rb
49
51
  test/recursive_eval_test.rb
data/README.rdoc CHANGED
@@ -182,8 +182,8 @@ To override the default parser,
182
182
  LiveAST.parser = YourParser
183
183
 
184
184
  To test it, provide some examples of what the ASTs look like in
185
- <code>YourParser::TestForms</code>. See the +live_ast_ruby_parser+ gem
186
- for reference.
185
+ <code>YourParser::Test</code>. See the +live_ast_ruby_parser+ gem for
186
+ reference.
187
187
 
188
188
  == Noninvasive Mode
189
189
 
@@ -223,12 +223,12 @@ The following alternative interface is available.
223
223
  # => s(:defn, :f, s(:args), s(:scope, s(:block, s(:str, "A#f"))))
224
224
 
225
225
  p LiveAST.ast(lambda { })
226
- # => s(:iter, s(:call, nil, :lambda, s(:arglist)), nil, nil)
226
+ # => s(:iter, s(:call, nil, :lambda, s(:arglist)), nil)
227
227
 
228
228
  f = LiveAST.eval("lambda { }", binding)
229
229
 
230
230
  p LiveAST.ast(f)
231
- # => s(:iter, s(:call, nil, :lambda, s(:arglist)), nil, nil)
231
+ # => s(:iter, s(:call, nil, :lambda, s(:arglist)), nil)
232
232
 
233
233
  ast_eval # => raises NameError
234
234
 
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require_relative 'devel/jumpstart'
1
+ require_relative 'devel/levitate'
2
2
 
3
- Jumpstart.new "live_ast" do |s|
3
+ Levitate.new "live_ast" do |s|
4
4
  s.developers << ["James M. Lawrence", "quixoticsycophant@gmail.com"]
5
5
  s.github_user = "quix"
6
6
  s.rubyforge_info = ["quix", "liveast"]
@@ -16,5 +16,5 @@ Jumpstart.new "live_ast" do |s|
16
16
  ]
17
17
  s.rdoc_options << "-a"
18
18
 
19
- s.dependencies << ["live_ast_ruby_parser", ">= 0.5.1"]
19
+ s.dependencies << ["live_ast_ruby_parser", ">= 0.6.0"]
20
20
  end
@@ -1,5 +1,5 @@
1
1
 
2
- class Jumpstart
2
+ class Levitate
3
3
  class Installer
4
4
  def initialize
5
5
  require 'fileutils'
@@ -816,8 +816,8 @@ class Jumpstart
816
816
  begin
817
817
  }
818
818
  footer = %{
819
- rescue Exception => __jumpstart_exception
820
- puts "raises \#{__jumpstart_exception.class}"
819
+ rescue Exception => __levitate_exception
820
+ puts "raises \#{__levitate_exception.class}"
821
821
  end
822
822
  }
823
823
  final_code = header + code + footer
@@ -860,15 +860,15 @@ class Jumpstart
860
860
  end
861
861
 
862
862
  def doc_to_spec(file, *sections, &block)
863
- jump = self
863
+ levitate = self
864
864
  describe file do
865
865
  sections.each { |section|
866
866
  describe "section `#{section}'" do
867
867
  it "should run as claimed" do
868
868
  if block
869
- jump.run_doc_section(file, section, self, &block)
869
+ levitate.run_doc_section(file, section, self, &block)
870
870
  else
871
- jump.run_doc_section(file, section, self) {
871
+ levitate.run_doc_section(file, section, self) {
872
872
  |expected, actual, index|
873
873
  actual.should == expected
874
874
  }
@@ -880,14 +880,14 @@ class Jumpstart
880
880
  end
881
881
 
882
882
  def doc_to_test(file, *sections, &block)
883
- jump = self
883
+ levitate = self
884
884
  klass = Class.new MiniTest::Unit::TestCase do
885
885
  sections.each { |section|
886
886
  define_method "test_#{file}_#{section}" do
887
887
  if block
888
- jump.run_doc_section(file, section, self, &block)
888
+ levitate.run_doc_section(file, section, self, &block)
889
889
  else
890
- jump.run_doc_section(file, section, self) {
890
+ levitate.run_doc_section(file, section, self) {
891
891
  |expected, actual, index|
892
892
  assert_equal expected, actual
893
893
  }
@@ -7,23 +7,14 @@ module LiveAST
7
7
  end
8
8
 
9
9
  class ASTNotFoundError < StandardError
10
- end
11
-
12
- class RawEvalError < ASTNotFoundError
13
10
  def message
14
- "Must use ast_eval instead of eval in order to obtain AST."
15
- end
16
- end
17
-
18
- class NoSourceError < ASTNotFoundError
19
- def message
20
- "No source found for the requested AST."
11
+ "The requested AST could not be found (AST flushed or compiled code)."
21
12
  end
22
13
  end
23
14
 
24
- class FlushedError < ASTNotFoundError
15
+ class RawEvalError < ASTNotFoundError
25
16
  def message
26
- "The requested AST was flushed from the cache."
17
+ "Must use ast_eval instead of eval in order to obtain AST."
27
18
  end
28
19
  end
29
20
  end
@@ -53,7 +53,7 @@ module LiveAST
53
53
  def find_proc_ast(obj)
54
54
  @mutex.synchronize do
55
55
  fetch_proc_attachment(obj) or (
56
- ast = find_ast(*obj.source_location) or raise FlushedError
56
+ ast = find_ast(*obj.source_location) or raise ASTNotFoundError
57
57
  attach_to_proc(obj, ast)
58
58
  )
59
59
  end
@@ -63,7 +63,7 @@ module LiveAST
63
63
  @mutex.synchronize do
64
64
  case ast = find_ast(*location)
65
65
  when nil
66
- fetch_method_attachment(klass, name) or raise FlushedError
66
+ fetch_method_attachment(klass, name) or raise ASTNotFoundError
67
67
  else
68
68
  attach_to_method(klass, name, ast)
69
69
  end
@@ -71,7 +71,7 @@ module LiveAST
71
71
  end
72
72
 
73
73
  def find_ast(*location)
74
- raise NoSourceError unless location.size == 2
74
+ raise ASTNotFoundError unless location.size == 2
75
75
  raise RawEvalError if location.first == "(eval)"
76
76
  ast = fetch_from_cache(*location)
77
77
  raise MultipleDefinitionsOnSameLineError if ast == :multiple
@@ -1,3 +1,3 @@
1
1
  module LiveAST
2
- VERSION = "0.5.2"
2
+ VERSION = "0.6.0"
3
3
  end
data/test/attr_test.rb ADDED
@@ -0,0 +1,24 @@
1
+ require_relative 'main'
2
+
3
+ class AttrTest < RegularTest
4
+ class A
5
+ attr_accessor :f
6
+ attr_reader :g
7
+ attr_writer :h
8
+ end
9
+
10
+ def test_attr
11
+ assert_raises LiveAST::ASTNotFoundError do
12
+ A.instance_method(:f).to_ast
13
+ end
14
+ assert_raises LiveAST::ASTNotFoundError do
15
+ A.instance_method(:f=).to_ast
16
+ end
17
+ assert_raises LiveAST::ASTNotFoundError do
18
+ A.instance_method(:g).to_ast
19
+ end
20
+ assert_raises LiveAST::ASTNotFoundError do
21
+ A.instance_method(:h=).to_ast
22
+ end
23
+ end
24
+ end
data/test/error_test.rb CHANGED
@@ -23,7 +23,7 @@ class ErrorTest < RegularTest
23
23
  end
24
24
 
25
25
  def test_ast_not_found
26
- assert_raises LiveAST::NoSourceError do
26
+ assert_raises LiveAST::ASTNotFoundError do
27
27
  File.method(:open).to_ast
28
28
  end
29
29
  end
@@ -39,7 +39,7 @@ define_unsorted_test_case "FlushCacheTest", RegularTest do
39
39
 
40
40
  LiveAST.flush_cache
41
41
 
42
- assert_raises LiveAST::FlushedError do
42
+ assert_raises LiveAST::ASTNotFoundError do
43
43
  klass.instance_method(:g).to_ast
44
44
  end
45
45
  end
@@ -59,7 +59,7 @@ define_unsorted_test_case "FlushCacheTest", RegularTest do
59
59
  assert_equal f_ast.object_id,
60
60
  klass.instance_method(:f).to_ast.object_id
61
61
 
62
- assert_raises LiveAST::FlushedError do
62
+ assert_raises LiveAST::ASTNotFoundError do
63
63
  klass.instance_method(:g).to_ast
64
64
  end
65
65
  end
@@ -91,7 +91,7 @@ define_unsorted_test_case "FlushCacheTest", RegularTest do
91
91
 
92
92
  assert_equal a_ast.object_id, a.to_ast.object_id
93
93
 
94
- assert_raises LiveAST::FlushedError do
94
+ assert_raises LiveAST::ASTNotFoundError do
95
95
  b.to_ast
96
96
  end
97
97
  end
data/test/main.rb CHANGED
@@ -30,7 +30,7 @@ class JLMiniTest < MiniTest::Unit::TestCase
30
30
  end
31
31
 
32
32
  def delim(char)
33
- ":\n" << (char*72) << "\n"
33
+ "\n" << (char*72) << "\n"
34
34
  end
35
35
 
36
36
  def mu_pp(obj)
@@ -74,7 +74,7 @@ class JLMiniTest < MiniTest::Unit::TestCase
74
74
  end
75
75
 
76
76
  class BaseTest < JLMiniTest
77
- include LiveAST.parser::TestForms
77
+ include LiveAST.parser::Test
78
78
 
79
79
  DATA_DIR = File.expand_path(File.dirname(__FILE__) + "/data")
80
80
 
@@ -0,0 +1,29 @@
1
+ require_relative 'main'
2
+
3
+ class NestedTest < RegularTest
4
+ def test_lambda
5
+ a = lambda {
6
+ lambda {
7
+ "33"
8
+ }
9
+ }
10
+
11
+ assert_equal nested_lambdas("33"), a.to_ast
12
+ assert_equal no_arg_block(:lambda, "33"), a.call.to_ast
13
+ end
14
+
15
+ class A
16
+ def f
17
+ Class.new do
18
+ def g
19
+ "44"
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ def test_defs
26
+ assert_equal nested_defs(:f, :g, "44"), A.instance_method(:f).to_ast
27
+ assert_equal no_arg_def(:g, "44"), A.new.f.instance_method(:g).to_ast
28
+ end
29
+ end
data/test/readme_test.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  require_relative 'main'
2
- require_relative '../devel/jumpstart'
2
+ require_relative '../devel/levitate'
3
3
 
4
- if LiveAST.parser.respond_to?(:unified?) and LiveAST.parser.unified?
4
+ if LiveAST.parser::Test.respond_to?(:unified_sexp?) and
5
+ LiveAST.parser::Test.unified_sexp?
5
6
  sections = [
6
7
  "Synopsis",
7
8
  "Loading Source",
@@ -9,5 +10,5 @@ if LiveAST.parser.respond_to?(:unified?) and LiveAST.parser.unified?
9
10
  "+to_ruby+",
10
11
  ]
11
12
 
12
- Jumpstart.doc_to_test("README.rdoc", *sections)
13
+ Levitate.doc_to_test("README.rdoc", *sections)
13
14
  end
data/test/to_ruby_test.rb CHANGED
@@ -83,6 +83,5 @@ class AAC_ToRubyTest < RegularTest
83
83
  end.instance_method(:f).to_ruby
84
84
  assert_equal src, dst
85
85
  end
86
- end if (un = LiveAST.parser::Unparser rescue nil) &&
87
- un.respond_to?(:ruby2ruby?) &&
88
- un.ruby2ruby?
86
+ end if LiveAST.parser::Test.respond_to?(:unparser_matches_ruby2ruby?) &&
87
+ LiveAST.parser::Test.unparser_matches_ruby2ruby?
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: live_ast
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.5.2
5
+ version: 0.6.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - James M. Lawrence
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-24 00:00:00 -05:00
13
+ date: 2011-02-26 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -21,7 +21,7 @@ dependencies:
21
21
  requirements:
22
22
  - - ">="
23
23
  - !ruby/object:Gem::Version
24
- version: 0.5.1
24
+ version: 0.6.0
25
25
  type: :runtime
26
26
  version_requirements: *id001
27
27
  description: LiveAST enables a program to find the ASTs of objects created by dynamically generated code.
@@ -37,7 +37,7 @@ files:
37
37
  - CHANGES.rdoc
38
38
  - README.rdoc
39
39
  - Rakefile
40
- - devel/jumpstart.rb
40
+ - devel/levitate.rb
41
41
  - lib/live_ast.rb
42
42
  - lib/live_ast/ast_eval.rb
43
43
  - lib/live_ast/ast_load.rb
@@ -54,6 +54,7 @@ files:
54
54
  - lib/live_ast/version.rb
55
55
  - test/ast_eval_feature_test.rb
56
56
  - test/ast_load_feature_test.rb
57
+ - test/attr_test.rb
57
58
  - test/backtrace_test.rb
58
59
  - test/covert_define_method_test.rb
59
60
  - test/def_test.rb
@@ -79,6 +80,7 @@ files:
79
80
  - test/load_path_test.rb
80
81
  - test/load_test.rb
81
82
  - test/main.rb
83
+ - test/nested_test.rb
82
84
  - test/noninvasive_test.rb
83
85
  - test/readme_test.rb
84
86
  - test/recursive_eval_test.rb