inch 0.5.0.rc5 → 0.5.0.rc6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +0 -6
- data/.rubocop_todo.yml +40 -34
- data/Gemfile +3 -3
- data/Rakefile +10 -6
- data/bin/inch +5 -5
- data/config/base.rb +4 -4
- data/config/nodejs.rb +44 -1
- data/config/ruby.rb +1 -1
- data/inch.gemspec +17 -17
- data/lib/inch.rb +13 -13
- data/lib/inch/api.rb +10 -10
- data/lib/inch/api/compare.rb +2 -2
- data/lib/inch/api/compare/code_objects.rb +1 -1
- data/lib/inch/api/diff.rb +1 -1
- data/lib/inch/api/options/suggest.rb +1 -1
- data/lib/inch/api/suggest.rb +1 -1
- data/lib/inch/cli.rb +6 -6
- data/lib/inch/cli/command.rb +15 -15
- data/lib/inch/cli/command/base.rb +5 -3
- data/lib/inch/cli/command/base_list.rb +0 -1
- data/lib/inch/cli/command/console.rb +5 -5
- data/lib/inch/cli/command/diff.rb +6 -6
- data/lib/inch/cli/command/inspect.rb +5 -5
- data/lib/inch/cli/command/list.rb +4 -4
- data/lib/inch/cli/command/options/base.rb +17 -15
- data/lib/inch/cli/command/options/base_list.rb +17 -17
- data/lib/inch/cli/command/options/base_object.rb +1 -1
- data/lib/inch/cli/command/options/console.rb +13 -13
- data/lib/inch/cli/command/options/diff.rb +19 -19
- data/lib/inch/cli/command/options/inspect.rb +5 -5
- data/lib/inch/cli/command/options/list.rb +7 -7
- data/lib/inch/cli/command/options/show.rb +5 -5
- data/lib/inch/cli/command/options/stats.rb +2 -2
- data/lib/inch/cli/command/options/suggest.rb +12 -12
- data/lib/inch/cli/command/output/base.rb +1 -1
- data/lib/inch/cli/command/output/diff.rb +9 -9
- data/lib/inch/cli/command/output/inspect.rb +13 -13
- data/lib/inch/cli/command/output/list.rb +1 -1
- data/lib/inch/cli/command/output/show.rb +4 -4
- data/lib/inch/cli/command/output/stats.rb +14 -14
- data/lib/inch/cli/command/output/suggest.rb +14 -14
- data/lib/inch/cli/command/show.rb +4 -4
- data/lib/inch/cli/command/stats.rb +4 -4
- data/lib/inch/cli/command/suggest.rb +4 -4
- data/lib/inch/cli/command_parser.rb +4 -4
- data/lib/inch/cli/sparkline_helper.rb +1 -1
- data/lib/inch/cli/trace_helper.rb +1 -1
- data/lib/inch/cli/yardopts_helper.rb +1 -1
- data/lib/inch/code_object.rb +3 -3
- data/lib/inch/code_object/provider.rb +3 -3
- data/lib/inch/code_object/proxy.rb +3 -4
- data/lib/inch/codebase.rb +5 -5
- data/lib/inch/codebase/object.rb +2 -1
- data/lib/inch/codebase/serializer.rb +2 -2
- data/lib/inch/config.rb +6 -6
- data/lib/inch/config/codebase.rb +5 -5
- data/lib/inch/core_ext.rb +1 -1
- data/lib/inch/core_ext/string.rb +1 -1
- data/lib/inch/evaluation.rb +8 -8
- data/lib/inch/evaluation/proxy.rb +2 -3
- data/lib/inch/evaluation/role.rb +1 -1
- data/lib/inch/language/elixir/code_object/base.rb +6 -4
- data/lib/inch/language/elixir/evaluation/base.rb +2 -1
- data/lib/inch/language/elixir/evaluation/function_object.rb +1 -1
- data/lib/inch/language/elixir/import.rb +14 -14
- data/lib/inch/language/elixir/provider/reader.rb +1 -1
- data/lib/inch/language/elixir/provider/reader/docstring.rb +13 -0
- data/lib/inch/language/elixir/provider/reader/object.rb +5 -5
- data/lib/inch/language/elixir/provider/reader/object/base.rb +13 -5
- data/lib/inch/language/elixir/provider/reader/object/function_object.rb +1 -1
- data/lib/inch/language/elixir/provider/reader/parser.rb +21 -7
- data/lib/inch/language/elixir/roles/base.rb +3 -3
- data/lib/inch/language/elixir/roles/function.rb +2 -1
- data/lib/inch/language/elixir/roles/object.rb +1 -1
- data/lib/inch/language/nodejs/code_object/base.rb +199 -0
- data/lib/inch/language/nodejs/code_object/function_object.rb +74 -0
- data/lib/inch/language/nodejs/code_object/member_object.rb +11 -0
- data/lib/inch/language/nodejs/code_object/module_object.rb +23 -0
- data/lib/inch/language/nodejs/evaluation/base.rb +29 -0
- data/lib/inch/language/nodejs/evaluation/function_object.rb +31 -0
- data/lib/inch/language/nodejs/evaluation/member_object.rb +11 -0
- data/lib/inch/language/nodejs/evaluation/module_object.rb +27 -0
- data/lib/inch/language/nodejs/import.rb +17 -1
- data/lib/inch/language/nodejs/provider/jsdoc.rb +1 -1
- data/lib/inch/language/nodejs/provider/jsdoc/docstring.rb +13 -0
- data/lib/inch/language/nodejs/provider/jsdoc/object.rb +16 -8
- data/lib/inch/language/nodejs/provider/jsdoc/object/base.rb +82 -45
- data/lib/inch/language/nodejs/provider/jsdoc/object/function_object.rb +18 -0
- data/lib/inch/language/nodejs/provider/jsdoc/object/member_object.rb +15 -0
- data/lib/inch/language/nodejs/provider/jsdoc/object/module_object.rb +22 -0
- data/lib/inch/language/nodejs/provider/jsdoc/parser.rb +9 -10
- data/lib/inch/language/nodejs/roles/base.rb +32 -0
- data/lib/inch/language/nodejs/roles/function.rb +113 -0
- data/lib/inch/language/nodejs/roles/member.rb +13 -0
- data/lib/inch/language/nodejs/roles/module.rb +64 -0
- data/lib/inch/language/nodejs/roles/object.rb +76 -0
- data/lib/inch/language/ruby/code_object/base.rb +6 -4
- data/lib/inch/language/ruby/evaluation/base.rb +2 -1
- data/lib/inch/language/ruby/evaluation/method_object.rb +2 -1
- data/lib/inch/language/ruby/import.rb +24 -24
- data/lib/inch/language/ruby/provider/yard.rb +10 -10
- data/lib/inch/language/ruby/provider/yard/nodoc_helper.rb +2 -2
- data/lib/inch/language/ruby/provider/yard/object.rb +9 -9
- data/lib/inch/language/ruby/provider/yard/object/base.rb +25 -28
- data/lib/inch/language/ruby/provider/yard/object/method_object.rb +4 -3
- data/lib/inch/language/ruby/provider/yard/object/method_parameter_object.rb +4 -3
- data/lib/inch/language/ruby/provider/yard/object/method_signature.rb +2 -2
- data/lib/inch/language/ruby/provider/yard/object/namespace_object.rb +2 -1
- data/lib/inch/language/ruby/provider/yard/parser.rb +2 -2
- data/lib/inch/language/ruby/roles/base.rb +1 -1
- data/lib/inch/language/ruby/roles/method.rb +2 -1
- data/lib/inch/language/ruby/roles/method_parameter.rb +1 -1
- data/lib/inch/language/ruby/roles/missing.rb +2 -2
- data/lib/inch/language/ruby/roles/object.rb +6 -6
- data/lib/inch/rake.rb +2 -2
- data/lib/inch/rake/suggest.rb +5 -5
- data/lib/inch/utils/code_location.rb +12 -0
- data/lib/inch/utils/read_write_methods.rb +2 -2
- data/lib/inch/utils/ui.rb +8 -8
- data/lib/inch/version.rb +1 -1
- data/test/fixtures/elixir/simple/all.json +321 -0
- data/test/integration/api/compare/codebases.rb +6 -6
- data/test/integration/cli/command/console_test.rb +13 -13
- data/test/integration/cli/command/diff_test.rb +12 -14
- data/test/integration/cli/command/inspect_test.rb +30 -30
- data/test/integration/cli/command/list_test.rb +34 -34
- data/test/integration/cli/command/show_test.rb +26 -26
- data/test/integration/cli/command/stats_test.rb +23 -23
- data/test/integration/cli/command/suggest_test.rb +58 -49
- data/test/integration/stats_options_test.rb +9 -9
- data/test/integration/visibility_options_test.rb +49 -45
- data/test/shared/base_list.rb +41 -41
- data/test/test_helper.rb +18 -10
- data/test/unit/api/filter_test.rb +9 -9
- data/test/unit/api/get_test.rb +6 -6
- data/test/unit/api/list_test.rb +3 -3
- data/test/unit/api/options/base_test.rb +6 -6
- data/test/unit/api/stats_test.rb +3 -3
- data/test/unit/api/suggest_test.rb +4 -4
- data/test/unit/cli/arguments_test.rb +25 -25
- data/test/unit/cli/command/base_test.rb +3 -3
- data/test/unit/cli/command/options/base_list_test.rb +14 -14
- data/test/unit/cli/command/options/base_object_test.rb +6 -6
- data/test/unit/cli/command/options/base_test.rb +3 -3
- data/test/unit/cli/command_parser_test.rb +29 -29
- data/test/unit/cli/trace_helper_test.rb +2 -2
- data/test/unit/cli/yardopts_helper_test.rb +35 -35
- data/test/unit/code_object/converter_test.rb +3 -3
- data/test/unit/code_object/provider_test.rb +2 -2
- data/test/unit/code_object/proxy_test.rb +11 -11
- data/test/unit/codebase/objects_test.rb +8 -8
- data/test/unit/codebase/proxy_test.rb +5 -5
- data/test/unit/config/codebase_test.rb +3 -3
- data/test/unit/config_test.rb +4 -4
- data/test/unit/evaluation/role_test.rb +8 -8
- data/test/unit/language/elixir/code_object/function_object_test.rb +35 -0
- data/test/unit/language/ruby/code_object/method_object_test.rb +128 -126
- data/test/unit/language/ruby/provider/yard/docstring_test.rb +27 -23
- data/test/unit/language/ruby/provider/yard/nodoc_helper_test.rb +21 -20
- data/test/unit/language/ruby/provider/yard/object/method_object_test.rb +20 -17
- data/test/unit/language/ruby/provider/yard_test.rb +4 -4
- data/test/unit/utils/buffered_ui_test.rb +20 -20
- data/test/unit/utils/ui_test.rb +20 -20
- data/test/unit/utils/weighted_list_test.rb +7 -7
- metadata +25 -2
@@ -1,11 +1,11 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
2
|
|
3
3
|
class Tracer
|
4
4
|
include ::Inch::CLI::TraceHelper
|
5
5
|
end
|
6
6
|
|
7
7
|
describe ::Inch::CLI::TraceHelper do
|
8
|
-
it
|
8
|
+
it 'should be a UI instance' do
|
9
9
|
@instance = Tracer.new
|
10
10
|
assert @instance.ui.is_a?(Inch::Utils::UI)
|
11
11
|
end
|
@@ -1,85 +1,85 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
2
|
|
3
3
|
describe ::Inch::CLI::YardoptsHelper do
|
4
4
|
before do
|
5
5
|
Dir.chdir fixture_path(:ruby, :yardopts)
|
6
|
-
assert File.file?(
|
6
|
+
assert File.file?('.yardopts')
|
7
7
|
@command = ::Inch::CLI::Command::List
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
10
|
+
it 'should run without args' do
|
11
11
|
out, err = capture_io do
|
12
12
|
@command.run
|
13
13
|
end
|
14
|
-
refute out.empty?,
|
15
|
-
assert err.empty?,
|
16
|
-
assert_match
|
17
|
-
assert_match
|
18
|
-
assert_match
|
14
|
+
refute out.empty?, 'there should be some output'
|
15
|
+
assert err.empty?, 'there should be no errors'
|
16
|
+
assert_match(/\bFoo\b/, out)
|
17
|
+
assert_match(/\bFoo::Bar\b/, out)
|
18
|
+
assert_match(/\bFoo::Bar#initialize\b/, out)
|
19
19
|
end
|
20
20
|
|
21
|
-
it
|
21
|
+
it 'should run with --no-yardopts' do
|
22
22
|
out, err = capture_io do
|
23
|
-
@instance = @command.run(
|
23
|
+
@instance = @command.run('app/**/*.rb', '--no-yardopts')
|
24
24
|
end
|
25
|
-
assert out.empty?,
|
26
|
-
assert err.empty?,
|
25
|
+
assert out.empty?, 'there should be no output'
|
26
|
+
assert err.empty?, 'there should be no errors'
|
27
27
|
end
|
28
28
|
|
29
|
-
it
|
29
|
+
it 'should run with a given path and .yardopts' do
|
30
30
|
out, err = capture_io do
|
31
31
|
# lib/something*.rb doesnot exist in the fixture, it is just given as
|
32
32
|
# a command-line path to check if it appears in the parsed filelist
|
33
|
-
@instance = @command.run(
|
33
|
+
@instance = @command.run('lib/something*.rb')
|
34
34
|
end
|
35
|
-
refute out.empty?,
|
36
|
-
assert err.empty?,
|
35
|
+
refute out.empty?, 'there should be no output'
|
36
|
+
assert err.empty?, 'there should be no errors'
|
37
37
|
end
|
38
38
|
|
39
|
-
it
|
39
|
+
it 'should parse options with --no-yardopts' do
|
40
40
|
@options = ::Inch::CLI::Command::Options::List.new
|
41
|
-
@options.parse([
|
42
|
-
assert_equal [
|
41
|
+
@options.parse(['app/**/*.rb', '--no-yardopts'])
|
42
|
+
assert_equal ['app/**/*.rb'], @options.paths
|
43
43
|
end
|
44
44
|
|
45
|
-
it
|
45
|
+
it 'should parse options with a given path and .yardopts' do
|
46
46
|
# lib/something*.rb doesnot exist in the fixture, it is just given as
|
47
47
|
# a command-line path to check if it appears in the parsed filelist
|
48
48
|
@options = ::Inch::CLI::Command::Options::List.new
|
49
|
-
@options.parse([
|
50
|
-
assert_equal [
|
49
|
+
@options.parse(['lib/something*.rb'])
|
50
|
+
assert_equal ['foo/**/*.rb', 'lib/something*.rb'], @options.paths
|
51
51
|
end
|
52
52
|
|
53
|
-
it
|
53
|
+
it 'should output info when run with --help' do
|
54
54
|
out, err = capture_io do
|
55
|
-
assert_raises(SystemExit) { @command.run(
|
55
|
+
assert_raises(SystemExit) { @command.run('--help') }
|
56
56
|
end
|
57
|
-
refute out.empty?,
|
58
|
-
assert_match
|
57
|
+
refute out.empty?, 'there should be some output'
|
58
|
+
assert_match(/\bUsage\b.+list/, out)
|
59
59
|
# assert_match /\b\-\-\[no\-\]yardopts\b/, out,
|
60
60
|
# "--[no-]yardopts should be mentioned"
|
61
|
-
assert err.empty?,
|
61
|
+
assert err.empty?, 'there should be no errors'
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
65
|
describe ::Inch::CLI::YardoptsHelper do
|
66
66
|
before do
|
67
67
|
Dir.chdir fixture_path(:ruby, :simple)
|
68
|
-
refute File.file?(
|
69
|
-
refute File.file?(
|
68
|
+
refute File.file?('.yardopts')
|
69
|
+
refute File.file?('.document')
|
70
70
|
@command = ::Inch::CLI::Command::List
|
71
71
|
end
|
72
72
|
|
73
|
-
it
|
73
|
+
it 'should not interfere with paths in arguments' do
|
74
74
|
@options = ::Inch::CLI::Command::Options::List.new
|
75
|
-
@options.parse([
|
76
|
-
assert_equal [
|
75
|
+
@options.parse(['lib/**/foo*.rb'])
|
76
|
+
assert_equal ['lib/**/foo*.rb'], @options.paths
|
77
77
|
end
|
78
78
|
|
79
|
-
it
|
79
|
+
it 'should not intefer with --all at the end' do
|
80
80
|
@options = ::Inch::CLI::Command::Options::List.new
|
81
|
-
@options.parse([
|
82
|
-
assert_equal [
|
81
|
+
@options.parse(['lib/**/foo*.rb', '--all'])
|
82
|
+
assert_equal ['lib/**/foo*.rb'], @options.paths
|
83
83
|
end
|
84
84
|
|
85
85
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
2
|
|
3
3
|
describe ::Inch::CodeObject::Converter do
|
4
4
|
class MockObject
|
5
5
|
def docstring
|
6
|
-
|
6
|
+
'Foo::Bar'
|
7
7
|
end
|
8
8
|
|
9
9
|
def parameters
|
@@ -20,7 +20,7 @@ describe ::Inch::CodeObject::Converter do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
let(:object) { MockObject.new }
|
23
|
-
it
|
23
|
+
it 'should parse all objects' do
|
24
24
|
attributes = ::Inch::CodeObject::Converter.to_hash(object)
|
25
25
|
assert_equal object.docstring, attributes[:docstring]
|
26
26
|
assert_equal object.public?, attributes[:public?]
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
2
|
|
3
3
|
describe ::Inch::CodeObject::Provider do
|
4
|
-
it
|
4
|
+
it 'should parse all objects' do
|
5
5
|
Dir.chdir File.dirname(__FILE__)
|
6
6
|
@provider = ::Inch::CodeObject::Provider.parse(fixture_path(:ruby, :simple))
|
7
7
|
refute @provider.objects.empty?
|
@@ -1,49 +1,49 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
2
|
|
3
3
|
describe ::Inch::CodeObject::Proxy do
|
4
4
|
before do
|
5
|
-
@codebase = test_codebase(:code_examples)
|
5
|
+
@codebase = test_codebase(:ruby, :code_examples)
|
6
6
|
@objects = @codebase.objects
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_inspect_gives_original_name
|
10
|
-
m = @objects.find(
|
11
|
-
assert_match
|
10
|
+
m = @objects.find('Foo::Bar#method_with_code_example')
|
11
|
+
assert_match(/Foo::Bar#method_with_code_example/, m.inspect)
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_grade_is_not_nil
|
15
|
-
m = @objects.find(
|
15
|
+
m = @objects.find('Foo::Bar#method_with_code_example')
|
16
16
|
assert m.grade
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_method_with_code_example
|
20
|
-
m = @objects.find(
|
20
|
+
m = @objects.find('Foo::Bar#method_with_code_example')
|
21
21
|
assert m.has_code_example?
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_method_with_code_example2
|
25
|
-
m = @objects.find(
|
25
|
+
m = @objects.find('Foo::Bar#method_with_code_example2')
|
26
26
|
assert m.has_code_example?
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_method_with_code_examples
|
30
|
-
m = @objects.find(
|
30
|
+
m = @objects.find('Foo::Bar#method_with_one_example')
|
31
31
|
assert m.has_code_example?
|
32
32
|
refute m.has_multiple_code_examples?
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_method_with_code_examples
|
36
|
-
m = @objects.find(
|
36
|
+
m = @objects.find('Foo::Bar#method_with_examples')
|
37
37
|
assert m.has_multiple_code_examples?
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_method_with_code_examples
|
41
|
-
m = @objects.find(
|
41
|
+
m = @objects.find('Foo::Bar#method_with_tagged_example')
|
42
42
|
assert m.has_multiple_code_examples?
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_method_with_code_examples
|
46
|
-
m = @objects.find(
|
46
|
+
m = @objects.find('Foo::Bar#method_with_2tagged_examples')
|
47
47
|
assert m.has_multiple_code_examples?
|
48
48
|
end
|
49
49
|
end
|
@@ -1,22 +1,22 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
2
|
|
3
3
|
describe ::Inch::Codebase::Objects do
|
4
4
|
before do
|
5
|
-
@codebase = test_codebase(:simple)
|
5
|
+
@codebase = test_codebase(:ruby, :simple)
|
6
6
|
@objects = @codebase.objects
|
7
7
|
end
|
8
8
|
|
9
|
-
it
|
9
|
+
it 'should parse all objects' do
|
10
10
|
refute @objects.empty?
|
11
11
|
end
|
12
12
|
|
13
|
-
it
|
14
|
-
refute_nil @objects.find(
|
15
|
-
refute_nil @objects.find(
|
16
|
-
refute_nil @objects.find(
|
13
|
+
it 'should find some objects' do
|
14
|
+
refute_nil @objects.find('Foo')
|
15
|
+
refute_nil @objects.find('Foo::Bar')
|
16
|
+
refute_nil @objects.find('Foo::Bar#method_without_doc')
|
17
17
|
end
|
18
18
|
|
19
|
-
it
|
19
|
+
it 'should support iteration' do
|
20
20
|
sum = 0
|
21
21
|
@objects.each do
|
22
22
|
sum += 1
|
@@ -1,17 +1,17 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
2
|
|
3
3
|
describe ::Inch::Codebase::Proxy do
|
4
|
-
it
|
4
|
+
it 'should parse all objects' do
|
5
5
|
dir = fixture_path(:ruby, :simple)
|
6
|
-
config = Inch::Config::Codebase.new(:ruby, [
|
6
|
+
config = Inch::Config::Codebase.new(:ruby, ['lib/**/*.rb'])
|
7
7
|
config.object_provider :YARD
|
8
8
|
@codebase = Inch::Codebase::Proxy.parse dir, config
|
9
9
|
refute_nil @codebase.objects
|
10
10
|
end
|
11
11
|
|
12
|
-
it
|
12
|
+
it 'should parse given paths' do
|
13
13
|
dir = fixture_path(:ruby, :simple)
|
14
|
-
config = Inch::Config::Codebase.new(:ruby, [
|
14
|
+
config = Inch::Config::Codebase.new(:ruby, ['app/**/*.rb'])
|
15
15
|
config.object_provider :YARD
|
16
16
|
@codebase = Inch::Codebase::Proxy.parse dir, config
|
17
17
|
assert @codebase.objects.empty?
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
2
|
|
3
3
|
describe ::Inch::Config::Codebase do
|
4
|
-
it
|
4
|
+
it 'should parse .inch.yml' do
|
5
5
|
dir = fixture_path(:ruby, :simple)
|
6
6
|
config = Inch::Config::Codebase.new
|
7
7
|
config.update_via_yaml(dir)
|
@@ -9,7 +9,7 @@ describe ::Inch::Config::Codebase do
|
|
9
9
|
assert config.excluded_files.empty?
|
10
10
|
end
|
11
11
|
|
12
|
-
it
|
12
|
+
it 'should parse .inch.yml if present' do
|
13
13
|
dir = fixture_path(:ruby, :"inch-yml")
|
14
14
|
config = Inch::Config::Codebase.new
|
15
15
|
config.update_via_yaml(dir)
|
data/test/unit/config_test.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2
2
|
|
3
3
|
describe ::Inch::Config do
|
4
|
-
it
|
4
|
+
it 'should return config for :ruby' do
|
5
5
|
config = Inch::Config.for(:ruby)
|
6
6
|
refute config.codebase.included_files.empty?
|
7
7
|
assert config.codebase.excluded_files.empty?
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
10
|
+
it 'should parse .inch.yml if present' do
|
11
11
|
dir = fixture_path(:ruby, :"inch-yml")
|
12
12
|
config = Inch::Config.for(:ruby, dir)
|
13
13
|
refute config.codebase.included_files.empty?
|
@@ -20,7 +20,7 @@ describe ::Inch::Config do
|
|
20
20
|
assert config.codebase.excluded_files.empty?
|
21
21
|
end
|
22
22
|
|
23
|
-
it
|
23
|
+
it 'should return config.evaluation for :ruby' do
|
24
24
|
config = Inch::Config.for(:ruby)
|
25
25
|
refute_nil config.evaluation.criteria_for(:MethodObject)
|
26
26
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
2
|
|
3
3
|
class MockPrivateRole < ::Inch::Evaluation::Role
|
4
4
|
applicable_if :private?
|
@@ -39,31 +39,31 @@ class MockPublicObject
|
|
39
39
|
end
|
40
40
|
|
41
41
|
describe ::Inch::Evaluation::Role do
|
42
|
-
describe
|
42
|
+
describe '.applicable' do
|
43
43
|
let(:private_object) { MockPrivateObject.new }
|
44
44
|
let(:public_object) { MockPublicObject.new }
|
45
45
|
|
46
|
-
describe
|
47
|
-
it
|
46
|
+
describe '.applicable_if' do
|
47
|
+
it 'should work with a symbol' do
|
48
48
|
assert MockPrivateRole.applicable?(private_object)
|
49
49
|
assert !MockPrivateRole.applicable?(public_object)
|
50
50
|
end
|
51
51
|
|
52
|
-
it
|
52
|
+
it 'should work with a block' do
|
53
53
|
assert MockPublicRole.applicable?(public_object)
|
54
54
|
assert MockNotPrivateRole.applicable?(public_object)
|
55
55
|
assert !MockPublicRole.applicable?(private_object)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
describe
|
60
|
-
it
|
59
|
+
describe '.applicable_unless' do
|
60
|
+
it 'should work with a block' do
|
61
61
|
assert MockNotPrivateRole.applicable?(public_object)
|
62
62
|
assert !MockNotPrivateRole.applicable?(private_object)
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
it
|
66
|
+
it 'should work by implementing a class method' do
|
67
67
|
assert MockIndifferentRole.applicable?(private_object)
|
68
68
|
assert MockIndifferentRole.applicable?(public_object)
|
69
69
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../../test_helper')
|
2
|
+
|
3
|
+
describe ::Inch::Language::Elixir::CodeObject::FunctionObject do
|
4
|
+
before do
|
5
|
+
@codebase = fresh_codebase(:elixir, :simple, 'all.json')
|
6
|
+
@objects = @codebase.objects
|
7
|
+
end
|
8
|
+
|
9
|
+
describe 'Scores' do
|
10
|
+
#
|
11
|
+
it 'should not' do
|
12
|
+
m = @objects.find('InchEx.generate_docs/3')
|
13
|
+
assert m.score > 50
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should recognize the relationship between modules and functions' do
|
18
|
+
mod = @objects.find('InchEx')
|
19
|
+
assert mod.has_children?
|
20
|
+
assert mod.children.size > 1
|
21
|
+
fun = @objects.find('InchEx.generate_docs/3')
|
22
|
+
assert_equal mod, fun.parent
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should recognize the depth of methods' do
|
26
|
+
m = @objects.find('InchEx')
|
27
|
+
assert_equal 1, m.depth
|
28
|
+
m = @objects.find('InchEx.Config')
|
29
|
+
assert_equal 2, m.depth
|
30
|
+
m = @objects.find('InchEx.Docs.Formatter')
|
31
|
+
assert_equal 3, m.depth
|
32
|
+
m = @objects.find('InchEx.Docs.Formatter.run/2')
|
33
|
+
assert_equal 4, m.depth
|
34
|
+
end
|
35
|
+
end
|
@@ -1,41 +1,41 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) +
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../../test_helper')
|
2
2
|
|
3
3
|
describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
4
4
|
before do
|
5
|
-
@codebase = test_codebase(:simple)
|
5
|
+
@codebase = test_codebase(:ruby, :simple)
|
6
6
|
@objects = @codebase.objects
|
7
7
|
end
|
8
8
|
|
9
|
-
describe
|
9
|
+
describe 'Scores' do
|
10
10
|
#
|
11
|
-
it
|
12
|
-
m = @objects.find(
|
11
|
+
it 'should not count tags that are transitive' do
|
12
|
+
m = @objects.find('InchTest::Deprecated::ClassMethods')
|
13
13
|
assert_equal 0, m.score
|
14
14
|
assert m.undocumented?
|
15
15
|
end
|
16
16
|
|
17
|
-
it
|
18
|
-
m = @objects.find(
|
17
|
+
it 'counts a @raise tag' do
|
18
|
+
m = @objects.find('InchTest#raising_method_with_comment')
|
19
19
|
assert m.score > 0
|
20
20
|
refute m.undocumented?
|
21
21
|
end
|
22
22
|
|
23
|
-
it
|
24
|
-
m = @objects.find(
|
23
|
+
it 'should not count a call to `raise`' do
|
24
|
+
m = @objects.find('InchTest#raising_method')
|
25
25
|
assert_equal 0, m.score
|
26
26
|
assert m.undocumented?
|
27
27
|
end
|
28
28
|
|
29
|
-
it
|
30
|
-
m = @objects.find(
|
29
|
+
it 'should not count a call to `yield`' do
|
30
|
+
m = @objects.find('InchTest#yielding_method')
|
31
31
|
assert_equal 0, m.score
|
32
32
|
assert m.undocumented?
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
describe
|
36
|
+
describe 'Taggings' do
|
37
37
|
#
|
38
|
-
it
|
38
|
+
it 'should recognize forms of @private-tags' do
|
39
39
|
%w( InchTest#method_with_private_tag
|
40
40
|
InchTest#private_method_with_tomdoc).each do |fullname|
|
41
41
|
m = @objects.find(fullname)
|
@@ -43,7 +43,7 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
it
|
46
|
+
it 'should recognize forms of internal-tags' do
|
47
47
|
# @api private in YARD
|
48
48
|
# Internal: in TomDoc
|
49
49
|
%w( InchTest#private_api_with_yard
|
@@ -54,8 +54,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
-
it
|
58
|
-
m = @objects.find(
|
57
|
+
it 'should recognize undocumented methods without parameters' do
|
58
|
+
m = @objects.find('Foo::Bar#method_without_doc')
|
59
59
|
refute m.has_doc?
|
60
60
|
refute m.has_parameters?
|
61
61
|
refute m.return_mentioned?
|
@@ -64,8 +64,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
64
64
|
assert_equal 0, m.score
|
65
65
|
end
|
66
66
|
|
67
|
-
it
|
68
|
-
m = @objects.find(
|
67
|
+
it 'should recognize missing parameter documentation' do
|
68
|
+
m = @objects.find('Foo::Bar#method_with_missing_param_doc')
|
69
69
|
assert m.has_doc?
|
70
70
|
assert m.has_parameters?
|
71
71
|
assert m.return_mentioned?
|
@@ -83,10 +83,10 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
83
83
|
assert m.score
|
84
84
|
end
|
85
85
|
|
86
|
-
describe
|
86
|
+
describe 'Documentation Styles' do
|
87
87
|
#
|
88
|
-
it
|
89
|
-
m = @objects.find(
|
88
|
+
it 'should handle YARD when no additional docstring is given' do
|
89
|
+
m = @objects.find('Foo::Bar#method_without_docstring')
|
90
90
|
refute m.has_doc?
|
91
91
|
assert m.has_parameters?
|
92
92
|
assert m.return_mentioned?
|
@@ -94,8 +94,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
94
94
|
assert m.score
|
95
95
|
end
|
96
96
|
|
97
|
-
it
|
98
|
-
m = @objects.find(
|
97
|
+
it 'should handle YARD when only @return is given' do
|
98
|
+
m = @objects.find('Foo::Bar#method_without_params_or_docstring')
|
99
99
|
refute m.has_doc?
|
100
100
|
refute m.has_parameters?
|
101
101
|
assert m.return_mentioned?
|
@@ -104,16 +104,17 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
104
104
|
assert m.score
|
105
105
|
end
|
106
106
|
|
107
|
-
it
|
108
|
-
|
107
|
+
it 'should handle unusable return value when only @return [void]' \
|
108
|
+
' is given' do
|
109
|
+
m = @objects.find('Foo::Bar#method_without_usable_return_value')
|
109
110
|
assert m.return_mentioned?
|
110
111
|
assert m.return_described?
|
111
112
|
|
112
113
|
assert m.score
|
113
114
|
end
|
114
115
|
|
115
|
-
it
|
116
|
-
m = @objects.find(
|
116
|
+
it 'should handle RDoc' do
|
117
|
+
m = @objects.find('Foo::Bar#method_with_rdoc_doc')
|
117
118
|
assert m.has_doc?
|
118
119
|
assert m.has_parameters?
|
119
120
|
p = m.parameter(:param1)
|
@@ -123,8 +124,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
123
124
|
assert m.score
|
124
125
|
end
|
125
126
|
|
126
|
-
it
|
127
|
-
m = @objects.find(
|
127
|
+
it 'should handle other RDoc styles' do
|
128
|
+
m = @objects.find('Foo::Bar#method_with_other_rdoc_doc')
|
128
129
|
assert m.has_doc?
|
129
130
|
assert m.has_parameters?
|
130
131
|
p = m.parameter(:param1)
|
@@ -138,8 +139,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
138
139
|
assert m.score
|
139
140
|
end
|
140
141
|
|
141
|
-
it
|
142
|
-
m = @objects.find(
|
142
|
+
it 'should handle yet other RDoc styles' do
|
143
|
+
m = @objects.find('Foo::Bar#method_with_yet_another_rdoc_doc')
|
143
144
|
assert m.has_doc?
|
144
145
|
assert m.has_parameters?
|
145
146
|
p = m.parameter(:param1)
|
@@ -150,8 +151,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
150
151
|
assert m.score
|
151
152
|
end
|
152
153
|
|
153
|
-
it
|
154
|
-
m = @objects.find(
|
154
|
+
it 'should handle unstructured doc styles' do
|
155
|
+
m = @objects.find('Foo::Bar#method_with_unstructured_doc')
|
155
156
|
assert m.has_doc?
|
156
157
|
assert m.has_parameters?
|
157
158
|
p = m.parameter(:param1)
|
@@ -161,8 +162,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
161
162
|
assert m.score
|
162
163
|
end
|
163
164
|
|
164
|
-
it
|
165
|
-
m = @objects.find(
|
165
|
+
it 'should handle unstructured doc styles with an undocumented param' do
|
166
|
+
m = @objects.find('Foo::Bar#method_with_unstructured_doc_missing_params')
|
166
167
|
assert m.has_doc?
|
167
168
|
assert m.has_parameters?
|
168
169
|
p = m.parameter(:format)
|
@@ -172,9 +173,9 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
172
173
|
assert m.score
|
173
174
|
end
|
174
175
|
|
175
|
-
it
|
176
|
-
|
177
|
-
m = @objects.find(
|
176
|
+
it 'should handle methods (without parameters) that have only a docstring' \
|
177
|
+
' (text comment)' do
|
178
|
+
m = @objects.find('Foo::Bar#method_without_params_or_return_type')
|
178
179
|
assert m.has_doc?
|
179
180
|
refute m.has_parameters?
|
180
181
|
refute m.return_mentioned?
|
@@ -183,164 +184,165 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
183
184
|
end
|
184
185
|
end
|
185
186
|
|
186
|
-
describe
|
187
|
+
describe 'Getter/Setter Handling' do
|
187
188
|
|
188
|
-
it
|
189
|
-
m = @objects.find(
|
190
|
-
assert m.getter?,
|
189
|
+
it 'should recognize a getter method' do
|
190
|
+
m = @objects.find('InchTest#getter')
|
191
|
+
assert m.getter?, 'should be a getter'
|
191
192
|
refute m.setter?
|
192
193
|
refute m.has_doc?
|
193
194
|
assert_equal 0, m.score
|
194
195
|
end
|
195
196
|
|
196
|
-
it
|
197
|
-
m = @objects.find(
|
197
|
+
it 'should recognize a setter method' do
|
198
|
+
m = @objects.find('InchTest#attr_setter=')
|
198
199
|
refute m.getter?
|
199
|
-
assert m.setter?,
|
200
|
+
assert m.setter?, 'should be a setter'
|
200
201
|
refute m.has_doc?
|
201
202
|
assert_equal 0, m.score
|
202
203
|
end
|
203
204
|
|
204
|
-
it
|
205
|
-
m = @objects.find(
|
205
|
+
it 'should recognize a manually defined setter method' do
|
206
|
+
m = @objects.find('InchTest#manual_setter=')
|
206
207
|
refute m.getter?
|
207
|
-
assert m.setter?,
|
208
|
+
assert m.setter?, 'should be a setter'
|
208
209
|
refute m.has_doc?
|
209
210
|
assert_equal 0, m.score
|
210
211
|
end
|
211
212
|
|
212
|
-
it
|
213
|
-
m = @objects.find(
|
214
|
-
assert m.getter?,
|
213
|
+
it 'should recognize a getter in a manually defined getter/setter pair' do
|
214
|
+
m = @objects.find('InchTest#manual_getset')
|
215
|
+
assert m.getter?, 'should be a getter'
|
215
216
|
refute m.setter?
|
216
217
|
refute m.has_doc?
|
217
218
|
assert_equal 0, m.score
|
218
219
|
end
|
219
220
|
|
220
|
-
it
|
221
|
-
m = @objects.find(
|
221
|
+
it 'should recognize a setter in a manually defined getter/setter pair' do
|
222
|
+
m = @objects.find('InchTest#manual_getset=')
|
222
223
|
refute m.getter?
|
223
|
-
assert m.setter?,
|
224
|
+
assert m.setter?, 'should be a setter'
|
224
225
|
refute m.has_doc?
|
225
226
|
assert_equal 0, m.score
|
226
227
|
end
|
227
228
|
|
228
|
-
it
|
229
|
-
|
230
|
-
m = @objects.find(
|
231
|
-
assert m.getter?,
|
229
|
+
it 'should recognize a getter in a getter/setter pair defined via' \
|
230
|
+
' attr_accessor' do
|
231
|
+
m = @objects.find('InchTest#attr_getset')
|
232
|
+
assert m.getter?, 'should be a getter'
|
232
233
|
refute m.setter?
|
233
234
|
refute m.has_doc?
|
234
235
|
assert_equal 0, m.score
|
235
236
|
end
|
236
237
|
|
237
|
-
it
|
238
|
-
|
239
|
-
m = @objects.find(
|
238
|
+
it 'should recognize a setter in a getter/setter pair defined via' \
|
239
|
+
' attr_accessor' do
|
240
|
+
m = @objects.find('InchTest#attr_getset=')
|
240
241
|
refute m.getter?
|
241
|
-
assert m.setter?,
|
242
|
+
assert m.setter?, 'should be a setter'
|
242
243
|
refute m.has_doc?
|
243
244
|
assert_equal 0, m.score
|
244
245
|
end
|
245
246
|
|
246
|
-
it
|
247
|
-
m = @objects.find(
|
248
|
-
assert m.getter?,
|
247
|
+
it 'should recognize a getter in a getter/setter pair defined via Struct' do
|
248
|
+
m = @objects.find('InchTest::StructGetSet#struct_getset')
|
249
|
+
assert m.getter?, 'should be a getter'
|
249
250
|
refute m.setter?
|
250
251
|
refute m.has_doc?
|
251
252
|
assert_equal 0, m.score
|
252
253
|
end
|
253
254
|
|
254
|
-
it
|
255
|
-
m = @objects.find(
|
255
|
+
it 'should recognize a setter in a getter/setter pair defined via Struct' do
|
256
|
+
m = @objects.find('InchTest::StructGetSet#struct_getset=')
|
256
257
|
refute m.getter?
|
257
|
-
assert m.setter?,
|
258
|
+
assert m.setter?, 'should be a setter'
|
258
259
|
refute m.has_doc?
|
259
260
|
assert_equal 0, m.score
|
260
261
|
end
|
261
262
|
|
262
|
-
it
|
263
|
-
|
264
|
-
m = @objects.find(
|
263
|
+
it 'should recognize docs on a getter in a getter/setter pair defined via' \
|
264
|
+
' attr_accessor' do
|
265
|
+
m = @objects.find('Attributes#username')
|
265
266
|
refute_equal 0, m.score
|
266
267
|
refute m.undocumented?
|
267
268
|
end
|
268
269
|
|
269
|
-
it
|
270
|
-
|
271
|
-
m = @objects.find(
|
270
|
+
it 'should recognize docs on a setter in a getter/setter pair defined via' \
|
271
|
+
' attr_accessor' do
|
272
|
+
m = @objects.find('Attributes#username=')
|
272
273
|
refute_equal 0, m.score
|
273
274
|
refute m.undocumented?
|
274
275
|
end
|
275
276
|
|
276
|
-
it
|
277
|
+
it 'should recognize splat parameter notation' do
|
277
278
|
# it should assign the same score whether the parameter is
|
278
279
|
# described with or without the splat (*) operator
|
279
|
-
m1 = @objects.find(
|
280
|
-
m2 = @objects.find(
|
280
|
+
m1 = @objects.find('Foo#method_with_splat_parameter')
|
281
|
+
m2 = @objects.find('Foo#method_with_splat_parameter2')
|
281
282
|
assert_equal 1, m1.parameters.size
|
282
283
|
assert_equal 1, m2.parameters.size
|
283
284
|
assert_equal m1.score, m2.score
|
284
285
|
end
|
285
286
|
|
286
|
-
it
|
287
|
-
m1 = @objects.find(
|
288
|
-
m2 = @objects.find(
|
287
|
+
it 'should recognize alias methods and aliased methods' do
|
288
|
+
m1 = @objects.find('InchTest#_aliased_method')
|
289
|
+
m2 = @objects.find('InchTest#_alias_method')
|
289
290
|
assert_equal m1.score, m2.score
|
290
291
|
end
|
291
292
|
end
|
292
293
|
|
293
|
-
describe
|
294
|
+
describe 'YARDs @!attribute directive on a class' do
|
294
295
|
#
|
295
|
-
it
|
296
|
-
m = @objects.find(
|
296
|
+
it 'should work as a reader' do
|
297
|
+
m = @objects.find('Attributes#email')
|
297
298
|
refute_equal 0, m.score
|
298
299
|
refute m.undocumented?
|
299
300
|
end
|
300
301
|
|
301
|
-
it
|
302
|
-
m = @objects.find(
|
302
|
+
it 'should work as a writer' do
|
303
|
+
m = @objects.find('Attributes#email=')
|
303
304
|
refute_equal 0, m.score
|
304
305
|
# refute m.undocumented?
|
305
306
|
# NOTE: this is undocumented since there is no original_docstring
|
306
307
|
end
|
307
308
|
end
|
308
309
|
|
309
|
-
describe
|
310
|
+
describe 'YARDs @overload tag on methods' do
|
310
311
|
#
|
311
|
-
it
|
312
|
+
it 'should work with basic overloading' do
|
312
313
|
list = []
|
313
|
-
list << @objects.find(
|
314
|
-
list << @objects.find(
|
315
|
-
list << @objects.find(
|
316
|
-
list << @objects.find(
|
317
|
-
list << @objects.find(
|
318
|
-
list << @objects.find(
|
319
|
-
list << @objects.find(
|
314
|
+
list << @objects.find('Overloading#rgb')
|
315
|
+
list << @objects.find('Overloading#rgba')
|
316
|
+
list << @objects.find('Overloading#change_color')
|
317
|
+
list << @objects.find('Overloading#mix')
|
318
|
+
list << @objects.find('Overloading#hooks')
|
319
|
+
list << @objects.find('Overloading#identifiers')
|
320
|
+
list << @objects.find('Overloading#params_only_in_overloads')
|
320
321
|
list.each do |m|
|
321
322
|
assert_equal 100, m.score, "#{m.fullname} did not get 100"
|
322
323
|
end
|
323
324
|
end
|
324
325
|
|
325
|
-
it
|
326
|
-
m = @objects.find(
|
326
|
+
it 'should work with a malformed @param tag in an overload tag' do
|
327
|
+
m = @objects.find('Overloading#missing_param_names')
|
327
328
|
refute m.has_doc? # it may be mentioned in the docs, but it's malformed.
|
328
329
|
end
|
329
330
|
|
330
|
-
it
|
331
|
+
it 'should work with several overload tags on the same method' do
|
331
332
|
skip
|
332
|
-
m = @objects.find(
|
333
|
+
m = @objects.find('Overloading#many_overloads')
|
333
334
|
assert_equal 1, count_roles(
|
334
335
|
m, Inch::Language::Ruby::Evaluation::Role::Method::WithoutReturnDescription)
|
335
336
|
assert_equal 1, count_roles(
|
336
337
|
m, Inch::Language::Ruby::Evaluation::Role::Method::WithoutReturnType)
|
337
338
|
assert_equal 1, count_roles(
|
338
|
-
m, Inch::Language::Ruby::Evaluation::Role::MethodParameter::WithoutMention,
|
339
|
+
m, Inch::Language::Ruby::Evaluation::Role::MethodParameter::WithoutMention,
|
340
|
+
'block')
|
339
341
|
end
|
340
342
|
|
341
|
-
it
|
342
|
-
|
343
|
-
m = @objects.find(
|
343
|
+
it 'should work if @param tags are only present in the @overload tags,' \
|
344
|
+
' but not on the actual method' do
|
345
|
+
m = @objects.find('Overloading#params_only_in_overloads')
|
344
346
|
unexpected_roles = [
|
345
347
|
Inch::Language::Ruby::Evaluation::Role::Object::WithoutCodeExample,
|
346
348
|
Inch::Language::Ruby::Evaluation::Role::MethodParameter::WithoutMention,
|
@@ -349,8 +351,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
349
351
|
assert_roles m, [], unexpected_roles
|
350
352
|
end
|
351
353
|
|
352
|
-
it
|
353
|
-
m = @objects.find(
|
354
|
+
it 'should work with one param missing in the overload tag' do
|
355
|
+
m = @objects.find('Overloading#one_param_missing_in_overload')
|
354
356
|
unexpected_roles = [
|
355
357
|
Inch::Language::Ruby::Evaluation::Role::Object::WithoutCodeExample
|
356
358
|
]
|
@@ -362,12 +364,12 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
362
364
|
end
|
363
365
|
end
|
364
366
|
|
365
|
-
describe
|
367
|
+
describe 'MISC' do
|
366
368
|
#
|
367
|
-
it
|
369
|
+
it 'should recognize named parameters in Ruby 2.1' do
|
368
370
|
skip # unless RUBY_VERSION =~ /^2/
|
369
371
|
|
370
|
-
m = @objects.find(
|
372
|
+
m = @objects.find('Foo#method_with_named_parameter')
|
371
373
|
unexpected_roles = [
|
372
374
|
Inch::Language::Ruby::Evaluation::Role::MethodParameter::WithoutMention,
|
373
375
|
Inch::Language::Ruby::Evaluation::Role::MethodParameter::WithoutType
|
@@ -375,10 +377,10 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
375
377
|
assert_roles m, [], unexpected_roles
|
376
378
|
end
|
377
379
|
|
378
|
-
it
|
380
|
+
it 'should recognize indented parameter documentation' do
|
379
381
|
skip # YARD cannot parse this
|
380
382
|
|
381
|
-
m = @objects.find(
|
383
|
+
m = @objects.find('Foo#method_with_indented_param_tag')
|
382
384
|
unexpected_roles = [
|
383
385
|
Inch::Language::Ruby::Evaluation::Role::MethodParameter::WithoutMention,
|
384
386
|
Inch::Language::Ruby::Evaluation::Role::MethodParameter::WithoutType
|
@@ -386,8 +388,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
386
388
|
assert_roles m, [], unexpected_roles
|
387
389
|
end
|
388
390
|
|
389
|
-
it
|
390
|
-
m = @objects.find(
|
391
|
+
it 'should recognize wrong parameter documentation' do
|
392
|
+
m = @objects.find('Foo::Bar#method_with_wrong_doc')
|
391
393
|
assert m.has_doc?
|
392
394
|
assert m.has_parameters?
|
393
395
|
assert m.return_mentioned?
|
@@ -410,8 +412,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
410
412
|
assert m.score
|
411
413
|
end
|
412
414
|
|
413
|
-
it
|
414
|
-
m = @objects.find(
|
415
|
+
it 'should recognize fully-documented methods with parameters' do
|
416
|
+
m = @objects.find('Foo::Bar#method_with_full_doc')
|
415
417
|
assert m.has_doc?
|
416
418
|
assert m.has_parameters?
|
417
419
|
assert m.return_mentioned?
|
@@ -427,8 +429,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
427
429
|
assert_equal 100, m.score
|
428
430
|
end
|
429
431
|
|
430
|
-
it
|
431
|
-
m = @objects.find(
|
432
|
+
it 'should recognize question mark methods' do
|
433
|
+
m = @objects.find('InchTest#question_mark_method?')
|
432
434
|
refute m.has_doc?
|
433
435
|
refute m.has_parameters?
|
434
436
|
|
@@ -436,8 +438,8 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
436
438
|
assert_equal 0, m.score
|
437
439
|
end
|
438
440
|
|
439
|
-
it
|
440
|
-
m = @objects.find(
|
441
|
+
it 'should recognize question mark methods with description' do
|
442
|
+
m = @objects.find('InchTest#question_mark_method_with_description?')
|
441
443
|
refute m.has_doc?
|
442
444
|
refute m.has_parameters?
|
443
445
|
|
@@ -445,26 +447,26 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
445
447
|
assert m.score >= 50 # TODO: don't use magic numbers
|
446
448
|
end
|
447
449
|
|
448
|
-
it
|
449
|
-
|
450
|
-
m = @objects.find(
|
450
|
+
it 'should recognize question mark methods with description and' \
|
451
|
+
' parameters' do
|
452
|
+
m = @objects.find('InchTest#method_with_description_and_parameters?')
|
451
453
|
refute m.has_doc?
|
452
454
|
assert m.has_parameters?
|
453
455
|
|
454
456
|
assert m.score > 0
|
455
457
|
end
|
456
458
|
|
457
|
-
it
|
458
|
-
m = @objects.find(
|
459
|
+
it 'should recognize the depth of methods' do
|
460
|
+
m = @objects.find('#root_method')
|
459
461
|
assert_equal 1, m.depth
|
460
|
-
m = @objects.find(
|
462
|
+
m = @objects.find('InchTest#getter')
|
461
463
|
assert_equal 2, m.depth
|
462
|
-
m = @objects.find(
|
464
|
+
m = @objects.find('Foo::Bar#method_without_doc')
|
463
465
|
assert_equal 3, m.depth
|
464
466
|
end
|
465
467
|
|
466
|
-
it
|
467
|
-
m = @objects.find(
|
468
|
+
it 'should recognize docs on class variables' do
|
469
|
+
m = @objects.find('Foo::@@class_variable')
|
468
470
|
assert m.has_doc?
|
469
471
|
refute m.undocumented?
|
470
472
|
assert_equal 100, m.score
|