inch 0.3.1 → 0.3.2.rc1
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/Rakefile +8 -0
- data/config/defaults.rb +5 -0
- data/config/example.yml +6 -0
- data/lib/inch/cli/command/base_list.rb +2 -1
- data/lib/inch/code_object/provider.rb +2 -2
- data/lib/inch/code_object/provider/yard.rb +3 -3
- data/lib/inch/code_object/provider/yard/parser.rb +7 -6
- data/lib/inch/codebase.rb +5 -4
- data/lib/inch/codebase/proxy.rb +7 -4
- data/lib/inch/config.rb +9 -38
- data/lib/inch/config/base.rb +52 -0
- data/lib/inch/config/codebase.rb +66 -0
- data/lib/inch/version.rb +1 -1
- data/test/fixtures/inch-yml/.inch.yml +7 -0
- data/test/fixtures/inch-yml/foo/bar.rb +6 -0
- data/test/fixtures/inch-yml/foo/vendor/base.rb +6 -0
- data/test/{inch → integration}/cli/command/list_test.rb +0 -0
- data/test/{inch → integration}/cli/command/show_test.rb +0 -0
- data/test/{inch → integration}/cli/command/stats_test.rb +0 -0
- data/test/{inch → integration}/cli/command/suggest_test.rb +0 -0
- data/test/test_helper.rb +22 -0
- data/test/{inch → unit}/api/filter_test.rb +1 -2
- data/test/{inch → unit}/api/get_test.rb +1 -2
- data/test/{inch → unit}/api/list_test.rb +1 -2
- data/test/{inch → unit}/api/options/base_test.rb +0 -0
- data/test/{inch → unit}/api/stats_test.rb +1 -2
- data/test/{inch → unit}/api/suggest_test.rb +1 -2
- data/test/{inch → unit}/cli/arguments_test.rb +0 -0
- data/test/{inch → unit}/cli/command/base_test.rb +0 -0
- data/test/{inch → unit}/cli/command/options/base_list_test.rb +0 -0
- data/test/{inch → unit}/cli/command/options/base_object_test.rb +0 -0
- data/test/{inch → unit}/cli/command/options/base_test.rb +0 -0
- data/test/{inch → unit}/cli/command_parser_test.rb +0 -0
- data/test/{inch → unit}/cli/trace_helper_test.rb +0 -0
- data/test/{inch → unit}/cli/yardopts_helper_test.rb +0 -0
- data/test/{inch → unit}/code_object/converter_test.rb +0 -0
- data/test/{inch → unit}/code_object/provider/yard/docstring_test.rb +0 -0
- data/test/{inch → unit}/code_object/provider/yard/nodoc_helper_test.rb +1 -1
- data/test/{inch → unit}/code_object/provider/yard_test.rb +1 -1
- data/test/{inch → unit}/code_object/provider_test.rb +1 -1
- data/test/{inch → unit}/code_object/proxy/method_object_test.rb +33 -33
- data/test/{inch → unit}/code_object/proxy_test.rb +10 -10
- data/test/{inch → unit}/codebase/objects_test.rb +1 -3
- data/test/{inch → unit}/codebase/proxy_test.rb +5 -5
- data/test/unit/config/codebase_test.rb +19 -0
- data/test/{inch → unit}/evaluation/role/base_test.rb +0 -0
- data/test/{inch → unit}/utils/ui_test.rb +0 -0
- data/test/{inch → unit}/utils/weighted_list_test.rb +0 -0
- metadata +76 -65
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f173292eed0fa894560c5a2d899349d3e62bb55c
|
4
|
+
data.tar.gz: 2d52a21c83eccb32e43803d5b16f849700108037
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c98ae65f4e3e3cd4c2daea064da62c6580e5c4fa8b4b6fab4b5dff86dc2049a1f488e6a3d03fdb2ca5118041b5c2c76970ce7b366d44316b57d5fc5bb8872b2
|
7
|
+
data.tar.gz: b56177359ca54a305518c5cf367465a3c771afffad6ffb5f1e12c5e2ceb1c1b8972dc50097ad02bc41f2a92128b12525716d1b17e8192a211aff30d5cbd10a10
|
data/Rakefile
CHANGED
@@ -6,4 +6,12 @@ Rake::TestTask.new do |t|
|
|
6
6
|
t.pattern = "test/**/*_test.rb"
|
7
7
|
end
|
8
8
|
|
9
|
+
Rake::TestTask.new(:"test:unit") do |t|
|
10
|
+
t.pattern = "test/unit/**/*_test.rb"
|
11
|
+
end
|
12
|
+
|
13
|
+
Rake::TestTask.new(:"test:integration") do |t|
|
14
|
+
t.pattern = "test/integration/**/*_test.rb"
|
15
|
+
end
|
16
|
+
|
9
17
|
task :default => :test
|
data/config/defaults.rb
CHANGED
data/config/example.yml
ADDED
@@ -21,7 +21,8 @@ module Inch
|
|
21
21
|
@options.parse(args)
|
22
22
|
@options.verify
|
23
23
|
|
24
|
-
|
24
|
+
config = Config::Codebase.new(@options.paths, @options.excluded)
|
25
|
+
@codebase = ::Inch::Codebase.parse(Dir.pwd, config)
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
@@ -21,8 +21,8 @@ module Inch
|
|
21
21
|
#
|
22
22
|
#
|
23
23
|
module Provider
|
24
|
-
def self.parse(dir,
|
25
|
-
provider_for(type).parse(dir,
|
24
|
+
def self.parse(dir, config = Inch::Config.codebase, type = :YARD)
|
25
|
+
provider_for(type).parse(dir, config)
|
26
26
|
end
|
27
27
|
|
28
28
|
# @return [Module]
|
@@ -4,8 +4,8 @@ module Inch
|
|
4
4
|
# Parses the source tree (using YARD)
|
5
5
|
module YARD
|
6
6
|
|
7
|
-
def self.parse(dir,
|
8
|
-
Parser.parse(dir,
|
7
|
+
def self.parse(dir, config = Inch::Config.codebase)
|
8
|
+
Parser.parse(dir, config)
|
9
9
|
end
|
10
10
|
|
11
11
|
end
|
@@ -21,4 +21,4 @@ log.level = ::Logger::UNKNOWN # basically disable YARD's logging
|
|
21
21
|
require_relative 'yard/parser'
|
22
22
|
require_relative 'yard/docstring'
|
23
23
|
require_relative 'yard/nodoc_helper'
|
24
|
-
require_relative 'yard/object'
|
24
|
+
require_relative 'yard/object'
|
@@ -4,9 +4,6 @@ module Inch
|
|
4
4
|
module YARD
|
5
5
|
# Parses the source tree (using YARD)
|
6
6
|
class Parser
|
7
|
-
DEFAULT_PATHS = ["app/**/*.rb", "lib/**/*.rb"]
|
8
|
-
DEFAULT_EXCLUDED = []
|
9
|
-
|
10
7
|
IGNORE_TYPES = [:macro]
|
11
8
|
|
12
9
|
# Helper method to parse an instance with the given +args+
|
@@ -19,14 +16,18 @@ module Inch
|
|
19
16
|
parser
|
20
17
|
end
|
21
18
|
|
22
|
-
|
19
|
+
# @param dir [String] directory
|
20
|
+
# @param config [Inch::Config::Codebase] configuration for codebase
|
21
|
+
# @return [void]
|
22
|
+
def parse(dir, config)
|
23
23
|
old_dir = Dir.pwd
|
24
24
|
Dir.chdir dir
|
25
|
-
parse_yard_objects(
|
25
|
+
parse_yard_objects(config.included_files, config.excluded_files)
|
26
26
|
inject_base_dir(dir)
|
27
27
|
Dir.chdir old_dir
|
28
28
|
end
|
29
29
|
|
30
|
+
# @return [Array<YARD::Object::Base>]
|
30
31
|
def objects
|
31
32
|
@objects ||= parsed_objects.map do |o|
|
32
33
|
YARD::Object.for(o) unless IGNORE_TYPES.include?(o.type)
|
@@ -37,7 +38,7 @@ module Inch
|
|
37
38
|
|
38
39
|
def parse_yard_objects(paths, excluded)
|
39
40
|
::YARD::Registry.clear
|
40
|
-
::YARD.parse(paths
|
41
|
+
::YARD.parse(paths, excluded)
|
41
42
|
end
|
42
43
|
|
43
44
|
def inject_base_dir(dir)
|
data/lib/inch/codebase.rb
CHANGED
@@ -5,11 +5,12 @@ module Inch
|
|
5
5
|
# Parses a codebase
|
6
6
|
#
|
7
7
|
# @param dir [String]
|
8
|
-
# @param
|
9
|
-
# @param excluded [Array<String>]
|
8
|
+
# @param config [Inch::Config::Codebase,nil]
|
10
9
|
# @return [Codebase::Proxy]
|
11
|
-
def self.parse(dir,
|
12
|
-
|
10
|
+
def self.parse(dir, config = nil)
|
11
|
+
config ||= Config.codebase.clone
|
12
|
+
config.update_via_yaml(dir)
|
13
|
+
Proxy.parse(dir, config)
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
data/lib/inch/codebase/proxy.rb
CHANGED
@@ -3,9 +3,7 @@ module Inch
|
|
3
3
|
class Proxy
|
4
4
|
attr_reader :objects
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
@base_dir = dir
|
8
|
-
provider = CodeObject::Provider.parse(dir, paths, excluded)
|
6
|
+
def initialize(provider)
|
9
7
|
@objects = Codebase::Objects.new(provider.objects)
|
10
8
|
end
|
11
9
|
|
@@ -17,6 +15,11 @@ module Inch
|
|
17
15
|
end
|
18
16
|
lists
|
19
17
|
end
|
18
|
+
|
19
|
+
def self.parse(dir = Dir.pwd, config = Inch::Config.codebase)
|
20
|
+
provider = CodeObject::Provider.parse(dir, config)
|
21
|
+
new(provider)
|
22
|
+
end
|
20
23
|
end
|
21
24
|
end
|
22
|
-
end
|
25
|
+
end
|
data/lib/inch/config.rb
CHANGED
@@ -6,48 +6,19 @@ module Inch
|
|
6
6
|
class << self
|
7
7
|
attr_accessor :instance
|
8
8
|
|
9
|
+
def codebase
|
10
|
+
self.instance ||= Config::Base.new
|
11
|
+
instance.codebase
|
12
|
+
end
|
13
|
+
|
9
14
|
def run(&block)
|
10
|
-
self.instance ||= new
|
15
|
+
self.instance ||= Config::Base.new
|
11
16
|
instance.update(&block)
|
12
17
|
instance
|
13
18
|
end
|
14
19
|
end
|
15
|
-
|
16
|
-
def update(&block)
|
17
|
-
instance_eval(&block)
|
18
|
-
end
|
19
|
-
|
20
|
-
def development?
|
21
|
-
@development
|
22
|
-
end
|
23
|
-
|
24
|
-
def development!
|
25
|
-
@development = true
|
26
|
-
end
|
27
|
-
|
28
|
-
def evaluation(&block)
|
29
|
-
@evaluation ||= Evaluation.new
|
30
|
-
@evaluation.update(&block) if block
|
31
|
-
@evaluation
|
32
|
-
end
|
33
|
-
|
34
|
-
class Evaluation
|
35
|
-
def update(&block)
|
36
|
-
instance_eval(&block)
|
37
|
-
end
|
38
|
-
|
39
|
-
def grade(symbol, &block)
|
40
|
-
::Inch::Evaluation::Grade.grade(symbol, &block)
|
41
|
-
end
|
42
|
-
|
43
|
-
def priority(symbol, &block)
|
44
|
-
::Inch::Evaluation::PriorityRange.priority_range(symbol, &block)
|
45
|
-
end
|
46
|
-
|
47
|
-
def schema(constant_name, &block)
|
48
|
-
constant = ::Inch::Evaluation::Proxy.const_get(constant_name)
|
49
|
-
constant.criteria(&block)
|
50
|
-
end
|
51
|
-
end
|
52
20
|
end
|
53
21
|
end
|
22
|
+
|
23
|
+
require_relative 'config/base'
|
24
|
+
require_relative 'config/codebase'
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Inch
|
2
|
+
# Stores the configuration for Inch
|
3
|
+
#
|
4
|
+
# @see config/defaults.rb
|
5
|
+
class Config
|
6
|
+
class Base
|
7
|
+
|
8
|
+
def update(&block)
|
9
|
+
instance_eval(&block)
|
10
|
+
end
|
11
|
+
|
12
|
+
def development?
|
13
|
+
@development
|
14
|
+
end
|
15
|
+
|
16
|
+
def development!
|
17
|
+
@development = true
|
18
|
+
end
|
19
|
+
|
20
|
+
def codebase(&block)
|
21
|
+
@codebase ||= Config::Codebase.new
|
22
|
+
@codebase.update(&block) if block
|
23
|
+
@codebase
|
24
|
+
end
|
25
|
+
|
26
|
+
def evaluation(&block)
|
27
|
+
@evaluation ||= Evaluation.new
|
28
|
+
@evaluation.update(&block) if block
|
29
|
+
@evaluation
|
30
|
+
end
|
31
|
+
|
32
|
+
class Evaluation
|
33
|
+
def update(&block)
|
34
|
+
instance_eval(&block)
|
35
|
+
end
|
36
|
+
|
37
|
+
def grade(symbol, &block)
|
38
|
+
::Inch::Evaluation::Grade.grade(symbol, &block)
|
39
|
+
end
|
40
|
+
|
41
|
+
def priority(symbol, &block)
|
42
|
+
::Inch::Evaluation::PriorityRange.priority_range(symbol, &block)
|
43
|
+
end
|
44
|
+
|
45
|
+
def schema(constant_name, &block)
|
46
|
+
constant = ::Inch::Evaluation::Proxy.const_get(constant_name)
|
47
|
+
constant.criteria(&block)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Inch
|
2
|
+
class Config
|
3
|
+
# Stores the configuration for an individual single codebase
|
4
|
+
class Codebase
|
5
|
+
attr_reader :included_files
|
6
|
+
attr_reader :excluded_files
|
7
|
+
|
8
|
+
YAML_FILE = ".inch.yml"
|
9
|
+
|
10
|
+
def initialize(included = nil, excluded = nil)
|
11
|
+
@included_files = included || []
|
12
|
+
@excluded_files = excluded || []
|
13
|
+
end
|
14
|
+
|
15
|
+
# Returns the contents of +dir+/.inch.yml, if present.
|
16
|
+
# Returns nil otherwise.
|
17
|
+
#
|
18
|
+
# @param dir [String]
|
19
|
+
# @return [Hash,nil]
|
20
|
+
def self.yaml(dir)
|
21
|
+
yaml_file = File.join(dir, YAML_FILE)
|
22
|
+
YAML.load(File.read(yaml_file)) if File.exist?(yaml_file)
|
23
|
+
end
|
24
|
+
|
25
|
+
def update(&block)
|
26
|
+
instance_eval(&block)
|
27
|
+
end
|
28
|
+
|
29
|
+
def update_via_yaml(dir)
|
30
|
+
if yaml = self.class.yaml(dir)
|
31
|
+
old_dir = Dir.pwd
|
32
|
+
Dir.chdir dir
|
33
|
+
update_files yaml["files"]
|
34
|
+
Dir.chdir old_dir
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def include_files(*files)
|
39
|
+
@included_files.concat(files).flatten!
|
40
|
+
end
|
41
|
+
|
42
|
+
def exclude_files(*files)
|
43
|
+
@excluded_files.concat(files).flatten!
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def expand_files(files)
|
49
|
+
files.map do |f|
|
50
|
+
case f
|
51
|
+
when String
|
52
|
+
f =~ /[\*\{]/ ? Dir[f] : f
|
53
|
+
else
|
54
|
+
f
|
55
|
+
end
|
56
|
+
end.flatten
|
57
|
+
end
|
58
|
+
|
59
|
+
def update_files(files)
|
60
|
+
return if files.nil?
|
61
|
+
include_files expand_files(files["included"])
|
62
|
+
exclude_files expand_files(files["excluded"])
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/inch/version.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/test/test_helper.rb
CHANGED
@@ -10,3 +10,25 @@ require 'inch'
|
|
10
10
|
def fixture_path(name)
|
11
11
|
File.join(File.dirname(__FILE__), "fixtures", name.to_s)
|
12
12
|
end
|
13
|
+
|
14
|
+
module Inch
|
15
|
+
module Test
|
16
|
+
class << self
|
17
|
+
attr_accessor :object_providers
|
18
|
+
|
19
|
+
def codebase(name)
|
20
|
+
Inch::Codebase::Proxy.new object_provider(name)
|
21
|
+
end
|
22
|
+
|
23
|
+
def object_provider(name)
|
24
|
+
self.object_providers ||= {}
|
25
|
+
self.object_providers[name] ||= ::Inch::CodeObject::Provider.parse(fixture_path(name))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_codebase(name)
|
32
|
+
codebase = Inch::Test.codebase(name)
|
33
|
+
codebase
|
34
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../../../test_helper')
|
|
2
2
|
|
3
3
|
describe ::Inch::CodeObject::Provider::YARD::NodocHelper do
|
4
4
|
before do
|
5
|
-
@provider = ::Inch::CodeObject::Provider::YARD.parse(fixture_path(:simple)
|
5
|
+
@provider = ::Inch::CodeObject::Provider::YARD.parse(fixture_path(:simple))
|
6
6
|
@objects = @provider.objects
|
7
7
|
end
|
8
8
|
|
@@ -4,7 +4,7 @@ describe ::Inch::CodeObject::Provider::YARD do
|
|
4
4
|
let(:described_class) { ::Inch::CodeObject::Provider::YARD }
|
5
5
|
|
6
6
|
it "should parse" do
|
7
|
-
provider = described_class.parse(fixture_path(:simple)
|
7
|
+
provider = described_class.parse(fixture_path(:simple))
|
8
8
|
assert !provider.objects.empty?
|
9
9
|
end
|
10
10
|
|
@@ -3,7 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
|
3
3
|
describe ::Inch::CodeObject::Provider do
|
4
4
|
it "should parse all objects" do
|
5
5
|
Dir.chdir File.dirname(__FILE__)
|
6
|
-
@provider = ::Inch::CodeObject::Provider.parse(fixture_path(:simple)
|
6
|
+
@provider = ::Inch::CodeObject::Provider.parse(fixture_path(:simple))
|
7
7
|
refute @provider.objects.empty?
|
8
8
|
end
|
9
9
|
end
|
@@ -2,24 +2,24 @@ require File.expand_path(File.dirname(__FILE__) + '/../../../test_helper')
|
|
2
2
|
|
3
3
|
describe ::Inch::CodeObject::Proxy::MethodObject do
|
4
4
|
before do
|
5
|
-
|
6
|
-
@
|
5
|
+
@codebase = test_codebase(:simple)
|
6
|
+
@objects = @codebase.objects
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_transitive_tags_dont_matter
|
10
|
-
m = @
|
10
|
+
m = @objects.find("InchTest::Deprecated::ClassMethods")
|
11
11
|
assert_equal 0, m.score
|
12
12
|
assert m.undocumented?
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_raising_method_with_comment
|
16
|
-
m = @
|
16
|
+
m = @objects.find("InchTest#raising_method_with_comment")
|
17
17
|
assert m.score > 0
|
18
18
|
refute m.undocumented?
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_raising_method
|
22
|
-
m = @
|
22
|
+
m = @objects.find("InchTest#raising_method")
|
23
23
|
assert_equal 0, m.score
|
24
24
|
assert m.undocumented?
|
25
25
|
end
|
@@ -27,7 +27,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
27
27
|
def test_tagged_as_private
|
28
28
|
%w( InchTest#method_with_private_tag
|
29
29
|
InchTest#private_method_with_tomdoc).each do |fullname|
|
30
|
-
m = @
|
30
|
+
m = @objects.find(fullname)
|
31
31
|
assert m.tagged_as_private?
|
32
32
|
end
|
33
33
|
end
|
@@ -35,13 +35,13 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
35
35
|
def test_tagged_as_internal_api
|
36
36
|
%w( InchTest#private_api_with_yard
|
37
37
|
InchTest#internal_api_with_tomdoc).each do |fullname|
|
38
|
-
m = @
|
38
|
+
m = @objects.find(fullname)
|
39
39
|
assert m.tagged_as_internal_api?
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
def test_method_without_doc
|
44
|
-
m = @
|
44
|
+
m = @objects.find("Foo::Bar#method_without_doc")
|
45
45
|
refute m.has_doc?
|
46
46
|
refute m.has_parameters?
|
47
47
|
refute m.return_mentioned?
|
@@ -51,7 +51,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def test_method_with_missing_param_doc
|
54
|
-
m = @
|
54
|
+
m = @objects.find("Foo::Bar#method_with_missing_param_doc")
|
55
55
|
assert m.has_doc?
|
56
56
|
assert m.has_parameters?
|
57
57
|
assert m.return_mentioned?
|
@@ -68,7 +68,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def test_method_with_wrong_doc
|
71
|
-
m = @
|
71
|
+
m = @objects.find("Foo::Bar#method_with_wrong_doc")
|
72
72
|
assert m.has_doc?
|
73
73
|
assert m.has_parameters?
|
74
74
|
assert m.return_mentioned?
|
@@ -91,7 +91,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def test_method_with_full_doc
|
94
|
-
m = @
|
94
|
+
m = @objects.find("Foo::Bar#method_with_full_doc")
|
95
95
|
assert m.has_doc?
|
96
96
|
assert m.has_parameters?
|
97
97
|
assert m.return_mentioned?
|
@@ -108,7 +108,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
108
108
|
end
|
109
109
|
|
110
110
|
def test_method_without_params_or_return_type
|
111
|
-
m = @
|
111
|
+
m = @objects.find("Foo::Bar#method_without_params_or_return_type")
|
112
112
|
assert m.has_doc?
|
113
113
|
refute m.has_parameters?
|
114
114
|
refute m.return_mentioned?
|
@@ -117,7 +117,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
117
117
|
end
|
118
118
|
|
119
119
|
def test_method_without_docstring
|
120
|
-
m = @
|
120
|
+
m = @objects.find("Foo::Bar#method_without_docstring")
|
121
121
|
refute m.has_doc?
|
122
122
|
assert m.has_parameters?
|
123
123
|
assert m.return_mentioned?
|
@@ -126,7 +126,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
126
126
|
end
|
127
127
|
|
128
128
|
def test_method_without_params_or_docstring
|
129
|
-
m = @
|
129
|
+
m = @objects.find("Foo::Bar#method_without_params_or_docstring")
|
130
130
|
refute m.has_doc?
|
131
131
|
refute m.has_parameters?
|
132
132
|
assert m.return_mentioned?
|
@@ -135,7 +135,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def test_method_with_rdoc_doc
|
138
|
-
m = @
|
138
|
+
m = @objects.find("Foo::Bar#method_with_rdoc_doc")
|
139
139
|
assert m.has_doc?
|
140
140
|
assert m.has_parameters?
|
141
141
|
p = m.parameter(:param1)
|
@@ -146,7 +146,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
146
146
|
end
|
147
147
|
|
148
148
|
def test_method_with_other_rdoc_doc
|
149
|
-
m = @
|
149
|
+
m = @objects.find("Foo::Bar#method_with_other_rdoc_doc")
|
150
150
|
assert m.has_doc?
|
151
151
|
assert m.has_parameters?
|
152
152
|
p = m.parameter(:param1)
|
@@ -161,7 +161,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
161
161
|
end
|
162
162
|
|
163
163
|
def test_method_with_unstructured_doc
|
164
|
-
m = @
|
164
|
+
m = @objects.find("Foo::Bar#method_with_unstructured_doc")
|
165
165
|
assert m.has_doc?
|
166
166
|
assert m.has_parameters?
|
167
167
|
p = m.parameter(:param1)
|
@@ -172,7 +172,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
172
172
|
end
|
173
173
|
|
174
174
|
def test_method_with_unstructured_doc_missing_params
|
175
|
-
m = @
|
175
|
+
m = @objects.find("Foo::Bar#method_with_unstructured_doc_missing_params")
|
176
176
|
assert m.has_doc?
|
177
177
|
assert m.has_parameters?
|
178
178
|
p = m.parameter(:format)
|
@@ -183,7 +183,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
183
183
|
end
|
184
184
|
|
185
185
|
def test_question_mark_method
|
186
|
-
m = @
|
186
|
+
m = @objects.find("InchTest#question_mark_method?")
|
187
187
|
refute m.has_doc?
|
188
188
|
refute m.has_parameters?
|
189
189
|
|
@@ -191,7 +191,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
191
191
|
end
|
192
192
|
|
193
193
|
def test_question_mark_method_with_description
|
194
|
-
m = @
|
194
|
+
m = @objects.find("InchTest#question_mark_method_with_description?")
|
195
195
|
refute m.has_doc?
|
196
196
|
refute m.has_parameters?
|
197
197
|
|
@@ -200,7 +200,7 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
200
200
|
end
|
201
201
|
|
202
202
|
def test_method_with_description_and_parameters
|
203
|
-
m = @
|
203
|
+
m = @objects.find("InchTest#method_with_description_and_parameters?")
|
204
204
|
refute m.has_doc?
|
205
205
|
assert m.has_parameters?
|
206
206
|
|
@@ -208,59 +208,59 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
208
208
|
end
|
209
209
|
|
210
210
|
def test_depth
|
211
|
-
m = @
|
211
|
+
m = @objects.find("#root_method")
|
212
212
|
assert_equal 1, m.depth
|
213
|
-
m = @
|
213
|
+
m = @objects.find("InchTest#getter")
|
214
214
|
assert_equal 2, m.depth
|
215
|
-
m = @
|
215
|
+
m = @objects.find("Foo::Bar#method_without_doc")
|
216
216
|
assert_equal 3, m.depth
|
217
217
|
end
|
218
218
|
|
219
219
|
def test_getter
|
220
|
-
m = @
|
220
|
+
m = @objects.find("InchTest#getter")
|
221
221
|
assert m.getter?, "should be a getter"
|
222
222
|
refute m.setter?
|
223
223
|
end
|
224
224
|
|
225
225
|
def test_setter
|
226
|
-
m = @
|
226
|
+
m = @objects.find("InchTest#attr_setter=")
|
227
227
|
refute m.getter?
|
228
228
|
assert m.setter?, "should be a setter"
|
229
229
|
end
|
230
230
|
|
231
231
|
def test_setter2
|
232
|
-
m = @
|
232
|
+
m = @objects.find("InchTest#manual_setter=")
|
233
233
|
refute m.getter?
|
234
234
|
assert m.setter?, "should be a setter"
|
235
235
|
end
|
236
236
|
|
237
237
|
def test_manual_getset
|
238
|
-
m = @
|
238
|
+
m = @objects.find("InchTest#manual_getset")
|
239
239
|
assert m.getter?, "should be a getter"
|
240
240
|
refute m.setter?
|
241
241
|
end
|
242
242
|
|
243
243
|
def test_manual_getset2
|
244
|
-
m = @
|
244
|
+
m = @objects.find("InchTest#manual_getset=")
|
245
245
|
refute m.getter?
|
246
246
|
assert m.setter?, "should be a setter"
|
247
247
|
end
|
248
248
|
|
249
249
|
def test_attr_getset
|
250
|
-
m = @
|
250
|
+
m = @objects.find("InchTest#attr_getset")
|
251
251
|
assert m.getter?, "should be a getter"
|
252
252
|
refute m.setter?
|
253
253
|
end
|
254
254
|
|
255
255
|
def test_attr_getset2
|
256
|
-
m = @
|
256
|
+
m = @objects.find("InchTest#attr_getset=")
|
257
257
|
refute m.getter?
|
258
258
|
assert m.setter?, "should be a setter"
|
259
259
|
end
|
260
260
|
|
261
261
|
def test_splat_parameter_notation
|
262
|
-
m1 = @
|
263
|
-
m2 = @
|
262
|
+
m1 = @objects.find("Foo#method_with_splat_parameter")
|
263
|
+
m2 = @objects.find("Foo#method_with_splat_parameter2")
|
264
264
|
assert_equal m1.score, m2.score
|
265
265
|
end
|
266
266
|
end
|
@@ -2,48 +2,48 @@ require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
|
2
2
|
|
3
3
|
describe ::Inch::CodeObject::Proxy::Base do
|
4
4
|
before do
|
5
|
-
|
6
|
-
@
|
5
|
+
@codebase = test_codebase(:code_examples)
|
6
|
+
@objects = @codebase.objects
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_inspect_gives_original_name
|
10
|
-
m = @
|
10
|
+
m = @objects.find("Foo::Bar#method_with_code_example")
|
11
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 = @
|
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 = @
|
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 = @
|
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 = @
|
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 = @
|
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 = @
|
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 = @
|
46
|
+
m = @objects.find("Foo::Bar#method_with_2tagged_examples")
|
47
47
|
assert m.has_multiple_code_examples?
|
48
48
|
end
|
49
49
|
end
|
@@ -2,9 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
|
2
2
|
|
3
3
|
describe ::Inch::Codebase::Objects do
|
4
4
|
before do
|
5
|
-
|
6
|
-
paths = ["lib/**/*.rb"]
|
7
|
-
@codebase = Inch::Codebase::Proxy.new dir, paths
|
5
|
+
@codebase = test_codebase(:simple)
|
8
6
|
@objects = @codebase.objects
|
9
7
|
end
|
10
8
|
|
@@ -3,15 +3,15 @@ require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
|
3
3
|
describe ::Inch::Codebase::Proxy do
|
4
4
|
it "should parse all objects" do
|
5
5
|
dir = fixture_path(:simple)
|
6
|
-
|
7
|
-
@codebase = Inch::Codebase::Proxy.
|
6
|
+
config = Inch::Config::Codebase.new(["lib/**/*.rb"])
|
7
|
+
@codebase = Inch::Codebase::Proxy.parse dir, config
|
8
8
|
refute_nil @codebase.objects
|
9
9
|
end
|
10
10
|
|
11
|
-
it "should parse
|
11
|
+
it "should parse given paths" do
|
12
12
|
dir = fixture_path(:simple)
|
13
|
-
|
14
|
-
@codebase = Inch::Codebase::Proxy.
|
13
|
+
config = Inch::Config::Codebase.new(["app/**/*.rb"])
|
14
|
+
@codebase = Inch::Codebase::Proxy.parse dir, config
|
15
15
|
assert @codebase.objects.empty?
|
16
16
|
end
|
17
17
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
|
3
|
+
describe ::Inch::Config::Codebase do
|
4
|
+
it "should parse .inch.yml" do
|
5
|
+
dir = fixture_path(:simple)
|
6
|
+
config = Inch::Config::Codebase.new
|
7
|
+
config.update_via_yaml(dir)
|
8
|
+
assert config.included_files.empty?
|
9
|
+
assert config.excluded_files.empty?
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should parse .inch.yml" do
|
13
|
+
dir = fixture_path(:"inch-yml")
|
14
|
+
config = Inch::Config::Codebase.new
|
15
|
+
config.update_via_yaml(dir)
|
16
|
+
refute config.included_files.empty?
|
17
|
+
refute config.excluded_files.empty?
|
18
|
+
end
|
19
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- René Föhring
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- TODOS.md
|
129
129
|
- bin/inch
|
130
130
|
- config/defaults.rb
|
131
|
+
- config/example.yml
|
131
132
|
- inch.gemspec
|
132
133
|
- lib/inch.rb
|
133
134
|
- lib/inch/api.rb
|
@@ -194,6 +195,8 @@ files:
|
|
194
195
|
- lib/inch/codebase/objects_filter.rb
|
195
196
|
- lib/inch/codebase/proxy.rb
|
196
197
|
- lib/inch/config.rb
|
198
|
+
- lib/inch/config/base.rb
|
199
|
+
- lib/inch/config/codebase.rb
|
197
200
|
- lib/inch/core_ext.rb
|
198
201
|
- lib/inch/core_ext/string.rb
|
199
202
|
- lib/inch/evaluation.rb
|
@@ -223,6 +226,9 @@ files:
|
|
223
226
|
- lib/inch/utils/weighted_list.rb
|
224
227
|
- lib/inch/version.rb
|
225
228
|
- test/fixtures/code_examples/lib/foo.rb
|
229
|
+
- test/fixtures/inch-yml/.inch.yml
|
230
|
+
- test/fixtures/inch-yml/foo/bar.rb
|
231
|
+
- test/fixtures/inch-yml/foo/vendor/base.rb
|
226
232
|
- test/fixtures/parameters/lib/foo.rb
|
227
233
|
- test/fixtures/readme/lib/foo.rb
|
228
234
|
- test/fixtures/really_good/lib/foo.rb
|
@@ -236,40 +242,41 @@ files:
|
|
236
242
|
- test/fixtures/visibility/lib/foo.rb
|
237
243
|
- test/fixtures/yardopts/.yardopts
|
238
244
|
- test/fixtures/yardopts/foo/bar.rb
|
239
|
-
- test/
|
240
|
-
- test/
|
241
|
-
- test/
|
242
|
-
- test/
|
243
|
-
- test/inch/api/stats_test.rb
|
244
|
-
- test/inch/api/suggest_test.rb
|
245
|
-
- test/inch/cli/arguments_test.rb
|
246
|
-
- test/inch/cli/command/base_test.rb
|
247
|
-
- test/inch/cli/command/list_test.rb
|
248
|
-
- test/inch/cli/command/options/base_list_test.rb
|
249
|
-
- test/inch/cli/command/options/base_object_test.rb
|
250
|
-
- test/inch/cli/command/options/base_test.rb
|
251
|
-
- test/inch/cli/command/show_test.rb
|
252
|
-
- test/inch/cli/command/stats_test.rb
|
253
|
-
- test/inch/cli/command/suggest_test.rb
|
254
|
-
- test/inch/cli/command_parser_test.rb
|
255
|
-
- test/inch/cli/trace_helper_test.rb
|
256
|
-
- test/inch/cli/yardopts_helper_test.rb
|
257
|
-
- test/inch/code_object/converter_test.rb
|
258
|
-
- test/inch/code_object/provider/yard/docstring_test.rb
|
259
|
-
- test/inch/code_object/provider/yard/nodoc_helper_test.rb
|
260
|
-
- test/inch/code_object/provider/yard_test.rb
|
261
|
-
- test/inch/code_object/provider_test.rb
|
262
|
-
- test/inch/code_object/proxy/method_object_test.rb
|
263
|
-
- test/inch/code_object/proxy_test.rb
|
264
|
-
- test/inch/codebase/objects_test.rb
|
265
|
-
- test/inch/codebase/proxy_test.rb
|
266
|
-
- test/inch/evaluation/role/base_test.rb
|
267
|
-
- test/inch/utils/ui_test.rb
|
268
|
-
- test/inch/utils/weighted_list_test.rb
|
245
|
+
- test/integration/cli/command/list_test.rb
|
246
|
+
- test/integration/cli/command/show_test.rb
|
247
|
+
- test/integration/cli/command/stats_test.rb
|
248
|
+
- test/integration/cli/command/suggest_test.rb
|
269
249
|
- test/integration/stats_options_test.rb
|
270
250
|
- test/integration/visibility_options_test.rb
|
271
251
|
- test/shared/base_list.rb
|
272
252
|
- test/test_helper.rb
|
253
|
+
- test/unit/api/filter_test.rb
|
254
|
+
- test/unit/api/get_test.rb
|
255
|
+
- test/unit/api/list_test.rb
|
256
|
+
- test/unit/api/options/base_test.rb
|
257
|
+
- test/unit/api/stats_test.rb
|
258
|
+
- test/unit/api/suggest_test.rb
|
259
|
+
- test/unit/cli/arguments_test.rb
|
260
|
+
- test/unit/cli/command/base_test.rb
|
261
|
+
- test/unit/cli/command/options/base_list_test.rb
|
262
|
+
- test/unit/cli/command/options/base_object_test.rb
|
263
|
+
- test/unit/cli/command/options/base_test.rb
|
264
|
+
- test/unit/cli/command_parser_test.rb
|
265
|
+
- test/unit/cli/trace_helper_test.rb
|
266
|
+
- test/unit/cli/yardopts_helper_test.rb
|
267
|
+
- test/unit/code_object/converter_test.rb
|
268
|
+
- test/unit/code_object/provider/yard/docstring_test.rb
|
269
|
+
- test/unit/code_object/provider/yard/nodoc_helper_test.rb
|
270
|
+
- test/unit/code_object/provider/yard_test.rb
|
271
|
+
- test/unit/code_object/provider_test.rb
|
272
|
+
- test/unit/code_object/proxy/method_object_test.rb
|
273
|
+
- test/unit/code_object/proxy_test.rb
|
274
|
+
- test/unit/codebase/objects_test.rb
|
275
|
+
- test/unit/codebase/proxy_test.rb
|
276
|
+
- test/unit/config/codebase_test.rb
|
277
|
+
- test/unit/evaluation/role/base_test.rb
|
278
|
+
- test/unit/utils/ui_test.rb
|
279
|
+
- test/unit/utils/weighted_list_test.rb
|
273
280
|
homepage: http://trivelop.de/inch/
|
274
281
|
licenses:
|
275
282
|
- MIT
|
@@ -285,17 +292,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
285
292
|
version: '0'
|
286
293
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
287
294
|
requirements:
|
288
|
-
- - "
|
295
|
+
- - ">"
|
289
296
|
- !ruby/object:Gem::Version
|
290
|
-
version:
|
297
|
+
version: 1.3.1
|
291
298
|
requirements: []
|
292
299
|
rubyforge_project:
|
293
|
-
rubygems_version: 2.2.
|
300
|
+
rubygems_version: 2.2.2
|
294
301
|
signing_key:
|
295
302
|
specification_version: 4
|
296
303
|
summary: Documentation measurement tool for Ruby
|
297
304
|
test_files:
|
298
305
|
- test/fixtures/code_examples/lib/foo.rb
|
306
|
+
- test/fixtures/inch-yml/.inch.yml
|
307
|
+
- test/fixtures/inch-yml/foo/bar.rb
|
308
|
+
- test/fixtures/inch-yml/foo/vendor/base.rb
|
299
309
|
- test/fixtures/parameters/lib/foo.rb
|
300
310
|
- test/fixtures/readme/lib/foo.rb
|
301
311
|
- test/fixtures/really_good/lib/foo.rb
|
@@ -309,38 +319,39 @@ test_files:
|
|
309
319
|
- test/fixtures/visibility/lib/foo.rb
|
310
320
|
- test/fixtures/yardopts/.yardopts
|
311
321
|
- test/fixtures/yardopts/foo/bar.rb
|
312
|
-
- test/
|
313
|
-
- test/
|
314
|
-
- test/
|
315
|
-
- test/
|
316
|
-
- test/inch/api/stats_test.rb
|
317
|
-
- test/inch/api/suggest_test.rb
|
318
|
-
- test/inch/cli/arguments_test.rb
|
319
|
-
- test/inch/cli/command/base_test.rb
|
320
|
-
- test/inch/cli/command/list_test.rb
|
321
|
-
- test/inch/cli/command/options/base_list_test.rb
|
322
|
-
- test/inch/cli/command/options/base_object_test.rb
|
323
|
-
- test/inch/cli/command/options/base_test.rb
|
324
|
-
- test/inch/cli/command/show_test.rb
|
325
|
-
- test/inch/cli/command/stats_test.rb
|
326
|
-
- test/inch/cli/command/suggest_test.rb
|
327
|
-
- test/inch/cli/command_parser_test.rb
|
328
|
-
- test/inch/cli/trace_helper_test.rb
|
329
|
-
- test/inch/cli/yardopts_helper_test.rb
|
330
|
-
- test/inch/code_object/converter_test.rb
|
331
|
-
- test/inch/code_object/provider/yard/docstring_test.rb
|
332
|
-
- test/inch/code_object/provider/yard/nodoc_helper_test.rb
|
333
|
-
- test/inch/code_object/provider/yard_test.rb
|
334
|
-
- test/inch/code_object/provider_test.rb
|
335
|
-
- test/inch/code_object/proxy/method_object_test.rb
|
336
|
-
- test/inch/code_object/proxy_test.rb
|
337
|
-
- test/inch/codebase/objects_test.rb
|
338
|
-
- test/inch/codebase/proxy_test.rb
|
339
|
-
- test/inch/evaluation/role/base_test.rb
|
340
|
-
- test/inch/utils/ui_test.rb
|
341
|
-
- test/inch/utils/weighted_list_test.rb
|
322
|
+
- test/integration/cli/command/list_test.rb
|
323
|
+
- test/integration/cli/command/show_test.rb
|
324
|
+
- test/integration/cli/command/stats_test.rb
|
325
|
+
- test/integration/cli/command/suggest_test.rb
|
342
326
|
- test/integration/stats_options_test.rb
|
343
327
|
- test/integration/visibility_options_test.rb
|
344
328
|
- test/shared/base_list.rb
|
345
329
|
- test/test_helper.rb
|
330
|
+
- test/unit/api/filter_test.rb
|
331
|
+
- test/unit/api/get_test.rb
|
332
|
+
- test/unit/api/list_test.rb
|
333
|
+
- test/unit/api/options/base_test.rb
|
334
|
+
- test/unit/api/stats_test.rb
|
335
|
+
- test/unit/api/suggest_test.rb
|
336
|
+
- test/unit/cli/arguments_test.rb
|
337
|
+
- test/unit/cli/command/base_test.rb
|
338
|
+
- test/unit/cli/command/options/base_list_test.rb
|
339
|
+
- test/unit/cli/command/options/base_object_test.rb
|
340
|
+
- test/unit/cli/command/options/base_test.rb
|
341
|
+
- test/unit/cli/command_parser_test.rb
|
342
|
+
- test/unit/cli/trace_helper_test.rb
|
343
|
+
- test/unit/cli/yardopts_helper_test.rb
|
344
|
+
- test/unit/code_object/converter_test.rb
|
345
|
+
- test/unit/code_object/provider/yard/docstring_test.rb
|
346
|
+
- test/unit/code_object/provider/yard/nodoc_helper_test.rb
|
347
|
+
- test/unit/code_object/provider/yard_test.rb
|
348
|
+
- test/unit/code_object/provider_test.rb
|
349
|
+
- test/unit/code_object/proxy/method_object_test.rb
|
350
|
+
- test/unit/code_object/proxy_test.rb
|
351
|
+
- test/unit/codebase/objects_test.rb
|
352
|
+
- test/unit/codebase/proxy_test.rb
|
353
|
+
- test/unit/config/codebase_test.rb
|
354
|
+
- test/unit/evaluation/role/base_test.rb
|
355
|
+
- test/unit/utils/ui_test.rb
|
356
|
+
- test/unit/utils/weighted_list_test.rb
|
346
357
|
has_rdoc:
|