rcodetools 0.4.0.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 +18 -0
- data/README +34 -0
- data/README.emacs +54 -0
- data/README.method_analysis +13 -0
- data/README.vim +84 -0
- data/README.xmpfilter +202 -0
- data/Rakefile +123 -0
- data/Rakefile.method_analysis +30 -0
- data/THANKS +6 -0
- data/bin/rct-complete +37 -0
- data/bin/rct-doc +50 -0
- data/bin/rct-meth-args +392 -0
- data/bin/xmpfilter +75 -0
- data/icicles-rcodetools.el +31 -0
- data/lib/method_analyzer.rb +107 -0
- data/lib/rcodetools/completion.rb +282 -0
- data/lib/rcodetools/doc.rb +176 -0
- data/lib/rcodetools/options.rb +83 -0
- data/lib/rcodetools/xmpfilter.rb +208 -0
- data/lib/rcodetools/xmptestunitfilter.rb +197 -0
- data/rcodetools.el +162 -0
- data/rcodetools.vim +118 -0
- data/setup.rb +1585 -0
- data/test/data/add_markers-input.rb +2 -0
- data/test/data/add_markers-output.rb +2 -0
- data/test/data/bindings-input.rb +26 -0
- data/test/data/bindings-output.rb +31 -0
- data/test/data/completion-input.rb +1 -0
- data/test/data/completion-output.rb +2 -0
- data/test/data/completion_emacs-input.rb +1 -0
- data/test/data/completion_emacs-output.rb +5 -0
- data/test/data/completion_emacs_icicles-input.rb +1 -0
- data/test/data/completion_emacs_icicles-output.rb +5 -0
- data/test/data/doc-input.rb +1 -0
- data/test/data/doc-output.rb +1 -0
- data/test/data/method_analyzer-data.rb +33 -0
- data/test/data/method_args.data.rb +106 -0
- data/test/data/no_warnings-input.rb +3 -0
- data/test/data/no_warnings-output.rb +4 -0
- data/test/data/refe-input.rb +1 -0
- data/test/data/refe-output.rb +1 -0
- data/test/data/ri-input.rb +1 -0
- data/test/data/ri-output.rb +1 -0
- data/test/data/ri_emacs-input.rb +1 -0
- data/test/data/ri_emacs-output.rb +1 -0
- data/test/data/ri_vim-input.rb +1 -0
- data/test/data/ri_vim-output.rb +1 -0
- data/test/data/rspec-input.rb +48 -0
- data/test/data/rspec-output.rb +52 -0
- data/test/data/rspec_poetry-input.rb +48 -0
- data/test/data/rspec_poetry-output.rb +52 -0
- data/test/data/simple_annotation-input.rb +8 -0
- data/test/data/simple_annotation-output.rb +8 -0
- data/test/data/unit_test-input.rb +50 -0
- data/test/data/unit_test-output.rb +52 -0
- data/test/data/unit_test_poetry-input.rb +50 -0
- data/test/data/unit_test_poetry-output.rb +52 -0
- data/test/test_completion.rb +467 -0
- data/test/test_doc.rb +403 -0
- data/test/test_functional.rb +18 -0
- data/test/test_method_analyzer.rb +99 -0
- data/test/test_method_args.rb +134 -0
- data/test/test_run.rb +41 -0
- data/test/test_xmpfilter.rb +36 -0
- data/test/test_xmptestunitfilter.rb +84 -0
- metadata +139 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestFoo < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@o = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_foo
|
10
|
+
a = 1
|
11
|
+
b = a
|
12
|
+
b # =>
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_arr
|
16
|
+
last = 1
|
17
|
+
@o << last
|
18
|
+
@o.last # =>
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_bar
|
22
|
+
a = b = c = 1
|
23
|
+
d = a
|
24
|
+
d # =>
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestFoo < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@o = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_foo
|
10
|
+
a = 1
|
11
|
+
b = a
|
12
|
+
assert_equal a, b
|
13
|
+
assert_equal 1, b
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_arr
|
17
|
+
last = 1
|
18
|
+
@o << last
|
19
|
+
assert_equal last, @o.last
|
20
|
+
assert_equal 1, @o.last
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_bar
|
24
|
+
a = b = c = 1
|
25
|
+
d = a
|
26
|
+
assert_equal a, d
|
27
|
+
assert_equal b, d
|
28
|
+
assert_equal c, d
|
29
|
+
assert_equal 1, d
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Array.new(3).uni
|
@@ -0,0 +1 @@
|
|
1
|
+
Array.new(3).uni
|
@@ -0,0 +1 @@
|
|
1
|
+
Array.new(3).uni
|
@@ -0,0 +1 @@
|
|
1
|
+
[].length
|
@@ -0,0 +1 @@
|
|
1
|
+
Array#length
|
@@ -0,0 +1,33 @@
|
|
1
|
+
|
2
|
+
class A
|
3
|
+
def A.foo
|
4
|
+
1
|
5
|
+
end
|
6
|
+
|
7
|
+
def a
|
8
|
+
1+1
|
9
|
+
end
|
10
|
+
end
|
11
|
+
class B < A
|
12
|
+
def initialize
|
13
|
+
end
|
14
|
+
attr_accessor :bb
|
15
|
+
|
16
|
+
def b
|
17
|
+
"a".length
|
18
|
+
end
|
19
|
+
end
|
20
|
+
tm = Time.now
|
21
|
+
[tm.year, tm.month, tm.day] << 0
|
22
|
+
a = A.new
|
23
|
+
a.a
|
24
|
+
b = B.new
|
25
|
+
b.a
|
26
|
+
b.b
|
27
|
+
[b.a,b.b]
|
28
|
+
z = b.a + b.b
|
29
|
+
A.foo
|
30
|
+
B.foo
|
31
|
+
b.bb=1
|
32
|
+
b.bb
|
33
|
+
|
@@ -0,0 +1,106 @@
|
|
1
|
+
# method_args.data.rb
|
2
|
+
class FixedArgsMethods
|
3
|
+
def self.singleton(a1) end
|
4
|
+
def initialize(arg) end
|
5
|
+
def f(a1) end
|
6
|
+
def b(a1,&block) end
|
7
|
+
define_method(:defmethod) {|a1|}
|
8
|
+
attr_accessor :by_attr_accessor
|
9
|
+
attr :by_attr_false
|
10
|
+
attr :by_attr_true, true
|
11
|
+
attr_reader :by_attr_reader_1, :by_attr_reader_2
|
12
|
+
attr_writer :by_attr_writer
|
13
|
+
def private_meth(x) end
|
14
|
+
private :private_meth
|
15
|
+
class << self
|
16
|
+
attr_accessor :singleton_attr_accessor
|
17
|
+
define_method(:singleton_defmethod){|a2|}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module VariableArgsMethods
|
22
|
+
def s(a1,*splat) end
|
23
|
+
def sb(a1,*splat, &block) end
|
24
|
+
def d(a1,default=nil) end
|
25
|
+
def ds(a1,default=nil,*splat) end
|
26
|
+
def dsb(a1,default=nil,*splat,&block) end
|
27
|
+
def db(a1,default=nil,&block) end
|
28
|
+
end
|
29
|
+
|
30
|
+
class Fixnum
|
31
|
+
def method_in_Fixnum(arg1, arg2) end
|
32
|
+
def self.singleton_method_in_Fixnum(arg1, arg2) end
|
33
|
+
end
|
34
|
+
class Bignum
|
35
|
+
def method_in_Bignum(arg1, arg2) end
|
36
|
+
end
|
37
|
+
class Float
|
38
|
+
def method_in_Float(arg1, arg2) end
|
39
|
+
end
|
40
|
+
class Symbol
|
41
|
+
def method_in_Symbol(arg1, arg2) end
|
42
|
+
end
|
43
|
+
class Binding
|
44
|
+
def method_in_Binding(arg1, arg2) end
|
45
|
+
end
|
46
|
+
class UnboundMethod
|
47
|
+
def method_in_UnboundMethod(arg1, arg2) end
|
48
|
+
end
|
49
|
+
class Method
|
50
|
+
def method_in_Method(arg1, arg2) end
|
51
|
+
end
|
52
|
+
class Proc
|
53
|
+
def method_in_Proc(arg1, arg2) end
|
54
|
+
end
|
55
|
+
class Continuation
|
56
|
+
def method_in_Continuation(arg1, arg2) end
|
57
|
+
end
|
58
|
+
class Thread
|
59
|
+
def method_in_Thread(arg1, arg2) end
|
60
|
+
end
|
61
|
+
# FIXME mysterious
|
62
|
+
# class FalseClass
|
63
|
+
# def method_in_FalseClass(arg1, arg2) end
|
64
|
+
# end
|
65
|
+
class TrueClass
|
66
|
+
def method_in_TrueClass(arg1, arg2) end
|
67
|
+
end
|
68
|
+
class NilClass
|
69
|
+
def method_in_NilClass(arg1, arg2) end
|
70
|
+
end
|
71
|
+
class Struct
|
72
|
+
def method_in_Struct(arg1, arg2) end
|
73
|
+
end
|
74
|
+
|
75
|
+
require 'digest'
|
76
|
+
class Digest::Base
|
77
|
+
def method_in_Digest_Base(arg1, arg2) end
|
78
|
+
end
|
79
|
+
|
80
|
+
class AnAbstractClass
|
81
|
+
$__method_args_off = true
|
82
|
+
def self.allocate
|
83
|
+
raise NotImplementedError, "#{self} is an abstract class."
|
84
|
+
end
|
85
|
+
$__method_args_off = false
|
86
|
+
|
87
|
+
def method_in_AnAbstractClass(arg1, arg2)
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
class AClass
|
93
|
+
include VariableArgsMethods
|
94
|
+
extend VariableArgsMethods
|
95
|
+
end
|
96
|
+
|
97
|
+
class ASubClass < AClass
|
98
|
+
end
|
99
|
+
|
100
|
+
StructA = Struct.new :a, :b
|
101
|
+
class SubclassOfStructA < StructA
|
102
|
+
attr :method_in_b
|
103
|
+
end
|
104
|
+
class StructSubclass < Struct.new(:c)
|
105
|
+
attr :method_in_c
|
106
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[].length
|
@@ -0,0 +1 @@
|
|
1
|
+
refe 'Array#length'
|
@@ -0,0 +1 @@
|
|
1
|
+
[].length
|
@@ -0,0 +1 @@
|
|
1
|
+
ri 'Array#length'
|
@@ -0,0 +1 @@
|
|
1
|
+
[].length
|
@@ -0,0 +1 @@
|
|
1
|
+
(rct-find-tag-or-ri "Array#length")
|
@@ -0,0 +1 @@
|
|
1
|
+
[].length
|
@@ -0,0 +1 @@
|
|
1
|
+
call RCT_find_tag_or_ri("Array#length")
|
@@ -0,0 +1,48 @@
|
|
1
|
+
|
2
|
+
class X
|
3
|
+
Y = Struct.new(:a)
|
4
|
+
def foo(b); b ? Y.new(2) : 2 end
|
5
|
+
def bar; raise "No good" end
|
6
|
+
def baz; nil end
|
7
|
+
def fubar(x); x ** 2.0 + 1 end
|
8
|
+
def babar; [1,2] end
|
9
|
+
A = 1
|
10
|
+
A = 1
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
context "Testing xmpfilter's expectation expansion" do
|
15
|
+
setup do
|
16
|
+
@o = X.new
|
17
|
+
end
|
18
|
+
|
19
|
+
specify "Should expand should_equal expectations" do
|
20
|
+
@o.foo(true) # =>
|
21
|
+
@o.foo(true).a # =>
|
22
|
+
@o.foo(false) # =>
|
23
|
+
end
|
24
|
+
|
25
|
+
specify "Should expand should_raise expectations" do
|
26
|
+
@o.bar # =>
|
27
|
+
end
|
28
|
+
|
29
|
+
specify "Should expand should_be_nil expectations" do
|
30
|
+
@o.baz # =>
|
31
|
+
end
|
32
|
+
|
33
|
+
specify "Should expand correct expectations for complex values" do
|
34
|
+
@o.babar # =>
|
35
|
+
end
|
36
|
+
|
37
|
+
specify "Should expand should_be_close expectations" do
|
38
|
+
@o.fubar(10) # =>
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "Testing binding" do
|
43
|
+
specify "Should expand should_equal expectations" do
|
44
|
+
a = b = c = 1
|
45
|
+
d = a
|
46
|
+
d # =>
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
|
2
|
+
class X
|
3
|
+
Y = Struct.new(:a)
|
4
|
+
def foo(b); b ? Y.new(2) : 2 end
|
5
|
+
def bar; raise "No good" end
|
6
|
+
def baz; nil end
|
7
|
+
def fubar(x); x ** 2.0 + 1 end
|
8
|
+
def babar; [1,2] end
|
9
|
+
A = 1
|
10
|
+
A = 1 # !> already initialized constant A
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
context "Testing xmpfilter's expectation expansion" do
|
15
|
+
setup do
|
16
|
+
@o = X.new
|
17
|
+
end
|
18
|
+
|
19
|
+
specify "Should expand should_equal expectations" do
|
20
|
+
(@o.foo(true)).should_be_a_kind_of X::Y
|
21
|
+
(@o.foo(true).inspect).should_equal "#<struct X::Y a=2>"
|
22
|
+
(@o.foo(true).a).should_equal 2
|
23
|
+
(@o.foo(false)).should_equal 2
|
24
|
+
end
|
25
|
+
|
26
|
+
specify "Should expand should_raise expectations" do
|
27
|
+
lambda{@o.bar}.should_raise RuntimeError
|
28
|
+
end
|
29
|
+
|
30
|
+
specify "Should expand should_be_nil expectations" do
|
31
|
+
(@o.baz).should_be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
specify "Should expand correct expectations for complex values" do
|
35
|
+
(@o.babar).should_equal [1, 2]
|
36
|
+
end
|
37
|
+
|
38
|
+
specify "Should expand should_be_close expectations" do
|
39
|
+
(@o.fubar(10)).should_be_close 101.0, 0.0001
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context "Testing binding" do
|
44
|
+
specify "Should expand should_equal expectations" do
|
45
|
+
a = b = c = 1
|
46
|
+
d = a
|
47
|
+
(d).should_equal a
|
48
|
+
(d).should_equal b
|
49
|
+
(d).should_equal c
|
50
|
+
(d).should_equal 1
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
|
2
|
+
class X
|
3
|
+
Y = Struct.new(:a)
|
4
|
+
def foo(b); b ? Y.new(2) : 2 end
|
5
|
+
def bar; raise "No good" end
|
6
|
+
def baz; nil end
|
7
|
+
def fubar(x); x ** 2.0 + 1 end
|
8
|
+
def babar; [1,2] end
|
9
|
+
A = 1
|
10
|
+
A = 1
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
context "Testing xmpfilter's expectation expansion" do
|
15
|
+
setup do
|
16
|
+
@o = X.new
|
17
|
+
end
|
18
|
+
|
19
|
+
specify "Should expand should_equal expectations" do
|
20
|
+
@o.foo(true) # =>
|
21
|
+
@o.foo(true).a # =>
|
22
|
+
@o.foo(false) # =>
|
23
|
+
end
|
24
|
+
|
25
|
+
specify "Should expand should_raise expectations" do
|
26
|
+
@o.bar # =>
|
27
|
+
end
|
28
|
+
|
29
|
+
specify "Should expand should_be_nil expectations" do
|
30
|
+
@o.baz # =>
|
31
|
+
end
|
32
|
+
|
33
|
+
specify "Should expand correct expectations for complex values" do
|
34
|
+
@o.babar # =>
|
35
|
+
end
|
36
|
+
|
37
|
+
specify "Should expand should_be_close expectations" do
|
38
|
+
@o.fubar(10) # =>
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "Testing binding" do
|
43
|
+
specify "Should expand should_equal expectations" do
|
44
|
+
a = b = c = 1
|
45
|
+
d = a
|
46
|
+
d # =>
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
|
2
|
+
class X
|
3
|
+
Y = Struct.new(:a)
|
4
|
+
def foo(b); b ? Y.new(2) : 2 end
|
5
|
+
def bar; raise "No good" end
|
6
|
+
def baz; nil end
|
7
|
+
def fubar(x); x ** 2.0 + 1 end
|
8
|
+
def babar; [1,2] end
|
9
|
+
A = 1
|
10
|
+
A = 1 # !> already initialized constant A
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
context "Testing xmpfilter's expectation expansion" do
|
15
|
+
setup do
|
16
|
+
@o = X.new
|
17
|
+
end
|
18
|
+
|
19
|
+
specify "Should expand should_equal expectations" do
|
20
|
+
@o.foo(true).should_be_a_kind_of X::Y
|
21
|
+
@o.foo(true).inspect.should_equal "#<struct X::Y a=2>"
|
22
|
+
@o.foo(true).a.should_equal 2
|
23
|
+
@o.foo(false).should_equal 2
|
24
|
+
end
|
25
|
+
|
26
|
+
specify "Should expand should_raise expectations" do
|
27
|
+
lambda{@o.bar}.should_raise RuntimeError
|
28
|
+
end
|
29
|
+
|
30
|
+
specify "Should expand should_be_nil expectations" do
|
31
|
+
@o.baz.should_be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
specify "Should expand correct expectations for complex values" do
|
35
|
+
@o.babar.should_equal [1, 2]
|
36
|
+
end
|
37
|
+
|
38
|
+
specify "Should expand should_be_close expectations" do
|
39
|
+
@o.fubar(10).should_be_close 101.0, 0.0001
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context "Testing binding" do
|
44
|
+
specify "Should expand should_equal expectations" do
|
45
|
+
a = b = c = 1
|
46
|
+
d = a
|
47
|
+
d.should_equal a
|
48
|
+
d.should_equal b
|
49
|
+
d.should_equal c
|
50
|
+
d.should_equal 1
|
51
|
+
end
|
52
|
+
end
|