javaclass 0.4.1 → 0.4.2
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 +7 -0
- data/Rakefile +188 -194
- data/Readme.txt +33 -29
- data/examples/generate_class_lists.rb +16 -9
- data/history.txt +15 -4
- data/javaclass.gemspec +10 -8
- data/lib/generated/examples/chart_class_dependencies.txt +35 -0
- data/lib/generated/examples/chart_module_dependencies.txt +43 -0
- data/lib/generated/examples/check_interface_names.txt +36 -0
- data/lib/generated/examples/count_classes_in_modules.txt +31 -0
- data/lib/generated/examples/cumulative_dependencies.txt +28 -0
- data/lib/generated/examples/find_all_imported_types.txt +38 -0
- data/lib/generated/examples/find_incoming_dependency_graph.txt +73 -0
- data/lib/generated/examples/find_layers_of_modules.txt +70 -0
- data/lib/generated/examples/find_referenced_modules.txt +41 -0
- data/lib/generated/examples/find_unreferenced_classes.txt +66 -0
- data/lib/generated/examples/generate_class_lists.txt +53 -0
- data/lib/generated/examples/show_jar_api.txt +64 -0
- data/lib/generated/examples/simple_usage.txt +38 -0
- data/lib/javaclass/classfile/access_flag_constants.rb +32 -5
- data/lib/javaclass/classfile/access_flags.rb +39 -20
- data/lib/javaclass/classfile/attributes/attributes.rb +134 -0
- data/lib/javaclass/classfile/class_access_flags.rb +37 -0
- data/lib/javaclass/classfile/class_file_attributes.rb +62 -0
- data/lib/javaclass/classfile/class_version.rb +0 -1
- data/lib/javaclass/classfile/constant_pool.rb +17 -11
- data/lib/javaclass/classfile/constants/single_reference.rb +53 -0
- data/lib/javaclass/classfile/fields.rb +37 -0
- data/lib/javaclass/classfile/java_class_header.rb +22 -13
- data/lib/javaclass/classfile/java_class_header_shortcuts.rb +6 -2
- data/lib/javaclass/classfile/methods.rb +37 -0
- data/lib/javaclass/classlist/jar_searcher.rb +38 -4
- data/lib/javaclass/classpath/temporary_unpacker.rb +1 -1
- data/lib/javaclass/string_hexdump.rb +1 -1
- data/license.txt +7 -7
- data/test/data/access_flags/{AccessFlagsTestInner$1.class → AccessFlagsTestAnonym$1.class} +0 -0
- data/test/data/access_flags/{AccessFlagsTestInner.class → AccessFlagsTestAnonym.class} +0 -0
- data/test/data/access_flags/AccessFlagsTestAnonym.java +9 -0
- data/test/data/access_flags/AccessFlagsTestPublic_javap.txt +1 -0
- data/test/data/constant_pool/Java8_JavaFX_Animation$1_Tag15.class +0 -0
- data/test/data/constant_pool/Java9_Activation_module-info_Tag20.class +0 -0
- data/test/data/jar_searcher/JarClassListTest.jar +0 -0
- data/test/data/jar_searcher/PublicClass.java +44 -1
- data/test/data/jar_searcher/make.bat +1 -2
- data/test/{test_access_flags.rb → test_class_access_flags.rb} +91 -93
- data/test/test_class_file_attributes.rb +57 -0
- data/test/test_constant_pool.rb +31 -0
- data/test/test_jar_searcher.rb +40 -7
- data/test/test_javaclass_api.rb +2 -2
- data/test/test_string_hexdump.rb +4 -1
- data/test/ts_all_tests.rb +4 -2
- metadata +100 -116
- data/test/data/access_flags/AccessFlagsTestInner$2.class +0 -0
- data/test/data/access_flags/AccessFlagsTestInner.java +0 -13
@@ -37,7 +37,7 @@ module JavaClass
|
|
37
37
|
def create_temporary_folder
|
38
38
|
folder = File.join(find_temp_folder, "temp_#{File.basename(@jarfile)}_#{Time.now.to_i.to_s}")
|
39
39
|
FileUtils.mkdir_p(folder)
|
40
|
-
at_exit { FileUtils.rm_r(folder) }
|
40
|
+
at_exit { FileUtils.rm_r(folder) if File.exist? folder }
|
41
41
|
@folder = folder
|
42
42
|
end
|
43
43
|
|
data/license.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
=== BSD License
|
1
|
+
=== BSD 2-Clause "Simplified" License
|
2
2
|
|
3
3
|
Copyright (c) 2009, Peter Kofler.
|
4
4
|
All rights reserved.
|
@@ -15,14 +15,14 @@ modification, are permitted provided that the following conditions are met:
|
|
15
15
|
|
16
16
|
<b>
|
17
17
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
18
|
-
AND ANY EXPRESS OR
|
18
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
19
19
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR APARTICULAR PURPOSE
|
20
20
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
21
|
-
LIABLE FOR
|
22
|
-
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF
|
21
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
22
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
23
23
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
24
|
-
INTERRUPTION)
|
25
|
-
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
24
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
25
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
26
26
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27
|
-
POSSIBILITY OF
|
27
|
+
POSSIBILITY OF SUCH DAMAGE.
|
28
28
|
</b>
|
File without changes
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
@@ -2,11 +2,54 @@ package packagename;
|
|
2
2
|
|
3
3
|
public class PublicClass {
|
4
4
|
|
5
|
-
class
|
5
|
+
private class PublicClass_PrivateInnerClass {
|
6
6
|
}
|
7
7
|
|
8
|
+
private static class PublicClass_StaticPrivateInnerClass {
|
9
|
+
}
|
10
|
+
|
11
|
+
class PublicClass_PackageInnerClass {
|
12
|
+
}
|
13
|
+
|
14
|
+
static class PublicClass_StaticPackageInnerClass {
|
15
|
+
}
|
16
|
+
|
17
|
+
public class PublicClass_PublicInnerClass {
|
18
|
+
}
|
19
|
+
|
20
|
+
public static class PublicClass_StaticPublicInnerClass {
|
21
|
+
}
|
22
|
+
|
23
|
+
void named() {
|
24
|
+
class Method_PackageInnerClass {
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
void anonymous() {
|
29
|
+
new Runnable() {
|
30
|
+
public void run() {
|
31
|
+
}
|
32
|
+
};
|
33
|
+
}
|
8
34
|
}
|
9
35
|
|
10
36
|
class PackageClass {
|
11
37
|
|
38
|
+
private class PackageClass_PrivateInnerClass {
|
39
|
+
}
|
40
|
+
|
41
|
+
private static class PackageClass_StaticPrivateInnerClass {
|
42
|
+
}
|
43
|
+
|
44
|
+
class PackageClass_PackageInnerClass {
|
45
|
+
}
|
46
|
+
|
47
|
+
static class PackageClass_StaticPackageInnerClass {
|
48
|
+
}
|
49
|
+
|
50
|
+
public class PackageClass_PublicInnerClass {
|
51
|
+
}
|
52
|
+
|
53
|
+
public static class PackageClass_StaticPublicInnerClass {
|
54
|
+
}
|
12
55
|
}
|
@@ -1,94 +1,92 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/setup'
|
2
|
-
require 'javaclass/classfile/java_class_header'
|
3
|
-
|
4
|
-
module TestJavaClass
|
5
|
-
module TestClassFile
|
6
|
-
|
7
|
-
class
|
8
|
-
|
9
|
-
def setup
|
10
|
-
%w[Public Package Abstract Interface Final Enum Annotation
|
11
|
-
Public$
|
12
|
-
binary_data = load_class("access_flags/AccessFlagsTest#{t}")
|
13
|
-
clazz = JavaClass::ClassFile::JavaClassHeader.new(binary_data)
|
14
|
-
variable_name = t.sub(/Public\$/, 'public_').
|
15
|
-
sub(/
|
16
|
-
sub(/
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
assert_equal('
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
assert(
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
assert(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
assert(!@
|
40
|
-
assert(
|
41
|
-
assert(@
|
42
|
-
assert(@public_innerinterface.
|
43
|
-
assert(@annotation.interface?)
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
assert(
|
49
|
-
assert(@
|
50
|
-
assert(@
|
51
|
-
assert(@
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
assert(!@
|
57
|
-
assert(!@
|
58
|
-
assert(
|
59
|
-
assert(
|
60
|
-
assert(
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
assert(
|
66
|
-
assert(@
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
assert(
|
80
|
-
assert(
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
flags
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
end
|
1
|
+
require File.dirname(__FILE__) + '/setup'
|
2
|
+
require 'javaclass/classfile/java_class_header'
|
3
|
+
|
4
|
+
module TestJavaClass
|
5
|
+
module TestClassFile
|
6
|
+
|
7
|
+
class TestClassAccessFlags < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
%w[Public Package Abstract Interface Final Enum Annotation
|
11
|
+
Public$InnerInterface Enum$1 Anonym$1].each do |t|
|
12
|
+
binary_data = load_class("access_flags/AccessFlagsTest#{t}")
|
13
|
+
clazz = JavaClass::ClassFile::JavaClassHeader.new(binary_data)
|
14
|
+
variable_name = t.sub(/Public\$/, 'public_').
|
15
|
+
sub(/Anonym\$1/, 'anonymous').
|
16
|
+
sub(/Enum\$1/, 'enum_inner').
|
17
|
+
downcase
|
18
|
+
eval("@#{variable_name} = clazz.access_flags")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_flags_hex
|
23
|
+
assert_equal('0021', @public.flags_hex)
|
24
|
+
assert_equal('0020', @package.flags_hex)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_accessible_eh
|
28
|
+
assert(@public.accessible?)
|
29
|
+
assert(!@package.accessible?)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_public_eh
|
33
|
+
assert(@public.public?)
|
34
|
+
assert(!@package.public?)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_interface_eh
|
38
|
+
assert(!@public.interface?)
|
39
|
+
assert(!@abstract.interface?)
|
40
|
+
assert(@interface.interface?)
|
41
|
+
assert(@public_innerinterface.interface?)
|
42
|
+
assert(@public_innerinterface.interface_class?)
|
43
|
+
assert(@annotation.interface?)
|
44
|
+
assert(!@annotation.interface_class?)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_abstract_eh
|
48
|
+
assert(!@public.abstract?)
|
49
|
+
assert(@abstract.abstract?)
|
50
|
+
assert(@interface.abstract?)
|
51
|
+
assert(@public_innerinterface.abstract?)
|
52
|
+
assert(@annotation.abstract?)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_final_eh
|
56
|
+
assert(!@public.final?)
|
57
|
+
assert(!@abstract.final?)
|
58
|
+
assert(!@interface.final?)
|
59
|
+
assert(@final.final?)
|
60
|
+
assert(!@enum.final?) # because we have a inner class
|
61
|
+
assert(@enum_inner.final?)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_enum_eh
|
65
|
+
assert(!@public.enum?)
|
66
|
+
assert(@enum.enum?)
|
67
|
+
assert(@enum_inner.enum?)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_annotation_eh
|
71
|
+
assert(!@public.annotation?)
|
72
|
+
assert(!@public_innerinterface.annotation?)
|
73
|
+
assert(!@interface.annotation?)
|
74
|
+
assert(@annotation.annotation?)
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_synthetic_eh
|
78
|
+
assert(!@public.synthetic?)
|
79
|
+
# assert(@anonymous.synthetic?) # should be but is not, hmm
|
80
|
+
# assert(@enum_inner.synthetic?)
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_class_new_jdk10_fix
|
84
|
+
flags = JavaClass::ClassFile::JavaClassHeader.new(load_class('Runnable_102')).access_flags
|
85
|
+
assert(flags.abstract?)
|
86
|
+
assert(flags.interface?)
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
94
92
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/setup'
|
2
|
+
require 'javaclass/classfile/java_class_header'
|
3
|
+
|
4
|
+
module TestJavaClass
|
5
|
+
module TestClassFile
|
6
|
+
|
7
|
+
class TestClassFileAttributes < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
%w[Public Public$Inner Public$StaticInner Public$InnerInterface Enum$1 Anonym$1].each do |t|
|
11
|
+
binary_data = load_class("access_flags/AccessFlagsTest#{t}")
|
12
|
+
clazz = JavaClass::ClassFile::JavaClassHeader.new(binary_data)
|
13
|
+
variable_name = t.sub(/Public\$/, 'public_').
|
14
|
+
sub(/Anonym\$1/, 'anonymous').
|
15
|
+
sub(/Enum\$1/, 'enum_inner').
|
16
|
+
downcase
|
17
|
+
eval("@#{variable_name} = clazz.attributes")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_inner_eh
|
22
|
+
assert(!@public.inner_class?)
|
23
|
+
assert(@public_inner.inner_class?)
|
24
|
+
assert(@public_staticinner.inner_class?)
|
25
|
+
assert(@public_innerinterface.inner_class?)
|
26
|
+
assert(@anonymous.inner_class?)
|
27
|
+
assert(@enum_inner.inner_class?)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_static_inner_eh
|
31
|
+
assert(!@public_inner.static_inner_class?)
|
32
|
+
assert(@public_staticinner.static_inner_class?)
|
33
|
+
assert(@public_innerinterface.static_inner_class?)
|
34
|
+
assert(!@anonymous.static_inner_class?)
|
35
|
+
assert(@enum_inner.static_inner_class?)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_anonymous_eh
|
39
|
+
assert(!@public.anonymous?)
|
40
|
+
assert(!@public_inner.anonymous?)
|
41
|
+
assert(@anonymous.anonymous?)
|
42
|
+
assert(@enum_inner.anonymous?)
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_source_file
|
46
|
+
assert_equal('AccessFlagsTestPublic.java', @public.source_file)
|
47
|
+
assert_equal('AccessFlagsTestPublic.java', @public_inner.source_file)
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_outer_class
|
51
|
+
assert_equal('packagename/AccessFlagsTestPublic', @public.outer_class)
|
52
|
+
assert_equal('packagename/AccessFlagsTestPublic', @public_inner.outer_class)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
data/test/test_constant_pool.rb
CHANGED
@@ -116,6 +116,37 @@ const #43 = Asciz java/lang/Runnable;'
|
|
116
116
|
JavaClass::ClassFile::ConstantPool.new(data)
|
117
117
|
}
|
118
118
|
end
|
119
|
+
|
120
|
+
def test_java_8_tag_15
|
121
|
+
@cp = JavaClass::ClassFile::ConstantPool.new(load_class('constant_pool/Java8_JavaFX_Animation$1_Tag15'))
|
122
|
+
found = @cp.find(JavaClass::ClassFile::ConstantPool::METHOD_HANDLE_TAG)
|
123
|
+
assert_equal(2, found.size)
|
124
|
+
assert_equal('MethodHandle', found[0].name)
|
125
|
+
|
126
|
+
found = @cp.find(JavaClass::ClassFile::ConstantPool::METHOD_TYPE_TAG)
|
127
|
+
assert_equal(2, found.size)
|
128
|
+
assert_equal('MethodType', found[0].name)
|
129
|
+
assert_equal('()Ljava/lang/Object;', found[0].method_type_value)
|
130
|
+
|
131
|
+
found = @cp.find(JavaClass::ClassFile::ConstantPool::INVOKE_DYNAMIC_TAG)
|
132
|
+
assert_equal(1, found.size)
|
133
|
+
assert_equal('InvokeDynamic', found[0].name)
|
134
|
+
assert_equal('run:(Ljavafx/animation/Animation$1;J)Ljava/security/PrivilegedAction;', found[0].name_and_type_value)
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_java_9_tag_20
|
138
|
+
@cp = JavaClass::ClassFile::ConstantPool.new(load_class('constant_pool/Java9_Activation_module-info_Tag20'))
|
139
|
+
found = @cp.find(JavaClass::ClassFile::ConstantPool::MODULE_TAG)
|
140
|
+
assert_equal(4, found.size)
|
141
|
+
assert_equal('Module', found[0].name)
|
142
|
+
assert_equal('java.activation', found[0].name_value)
|
143
|
+
|
144
|
+
found = @cp.find(JavaClass::ClassFile::ConstantPool::PACKAGE_TAG)
|
145
|
+
assert_equal(2, found.size)
|
146
|
+
assert_equal('Package', found[1].name)
|
147
|
+
assert_equal('javax/activation', found[1].name_value)
|
148
|
+
end
|
149
|
+
|
119
150
|
end
|
120
151
|
|
121
152
|
end
|
data/test/test_jar_searcher.rb
CHANGED
@@ -9,7 +9,8 @@ module TestJavaClass
|
|
9
9
|
class TestJarSearcher < Test::Unit::TestCase
|
10
10
|
|
11
11
|
PACKAGE_CLASS = "packagename/PackageClass.class"
|
12
|
-
INNER_CLASS = "packagename/PublicClass$
|
12
|
+
INNER_CLASS = "packagename/PublicClass$PublicClass_PackageInnerClass.class"
|
13
|
+
PUBLIC_INNER_CLASS = "packagename/PackageClass$PackageClass_PublicInnerClass.class"
|
13
14
|
PUBLIC_CLASS = "packagename/PublicClass.class"
|
14
15
|
PUBLIC_INTERFACE = "packagename/PublicInterface.class"
|
15
16
|
CLASSES = [INNER_CLASS, PUBLIC_CLASS, PUBLIC_INTERFACE, PACKAGE_CLASS]
|
@@ -44,14 +45,15 @@ module TestJavaClass
|
|
44
45
|
end
|
45
46
|
|
46
47
|
def test_public_eh
|
47
|
-
@cpe =
|
48
|
+
@cpe = create_jar_searcher
|
48
49
|
assert(!@cs.public?(@cpe, PACKAGE_CLASS))
|
49
50
|
assert(!@cs.public?(@cpe, INNER_CLASS))
|
50
51
|
assert(@cs.public?(@cpe, PUBLIC_CLASS))
|
52
|
+
assert(@cs.public?(@cpe, PUBLIC_INNER_CLASS))
|
51
53
|
end
|
52
|
-
|
54
|
+
|
53
55
|
def test_public_eh_fails
|
54
|
-
@cpe =
|
56
|
+
@cpe = create_jar_searcher
|
55
57
|
assert_raise(JavaClass::Classpath::ClassNotFoundError){ @cs.public?(@cpe, 'NonExistingClass') }
|
56
58
|
|
57
59
|
@cpe = JavaClass::Classpath::FolderClasspath.new(File.expand_path("#{TEST_DATA_PATH}/jar_searcher"))
|
@@ -59,7 +61,11 @@ module TestJavaClass
|
|
59
61
|
@cs.public?(@cpe, 'BrokenRunnable_102')
|
60
62
|
}
|
61
63
|
end
|
62
|
-
|
64
|
+
|
65
|
+
def create_jar_searcher
|
66
|
+
JavaClass::Classpath::JarClasspath.new(File.expand_path("#{TEST_DATA_PATH}/jar_searcher/JarClassListTest.jar"))
|
67
|
+
end
|
68
|
+
|
63
69
|
class MockList # ZenTest SKIP mock class
|
64
70
|
attr_reader :versions
|
65
71
|
attr_reader :modifiers
|
@@ -81,9 +87,16 @@ module TestJavaClass
|
|
81
87
|
def size
|
82
88
|
@entries.size
|
83
89
|
end
|
90
|
+
|
91
|
+
def to_s
|
92
|
+
@entries.join("\n")
|
93
|
+
end
|
84
94
|
end
|
85
95
|
|
86
|
-
def
|
96
|
+
def test_compile_list_no_inner_classes
|
97
|
+
# @cs.skip_inner_classes = true # default
|
98
|
+
# @cs.skip_package_classes = false # default
|
99
|
+
|
87
100
|
list = @cs.compile_list(2, "#{TEST_DATA_PATH}/jar_searcher", MockList.new )
|
88
101
|
|
89
102
|
assert_equal(3, list.size)
|
@@ -92,14 +105,34 @@ module TestJavaClass
|
|
92
105
|
assert_equal([2, 2, 2], list.versions)
|
93
106
|
end
|
94
107
|
|
95
|
-
def
|
108
|
+
def test_compile_list_no_inner_no_package_classes
|
109
|
+
# @cs.skip_inner_classes = true # default
|
96
110
|
@cs.skip_package_classes = true
|
111
|
+
|
97
112
|
list = @cs.compile_list(3, "#{TEST_DATA_PATH}/jar_searcher", MockList.new )
|
98
113
|
|
99
114
|
assert_equal(2, list.size)
|
100
115
|
assert_equal([PUBLIC_CLASS, PUBLIC_INTERFACE], list.entries)
|
101
116
|
end
|
102
117
|
|
118
|
+
def test_compile_list_all_public_and_package_classes
|
119
|
+
@cs.skip_inner_classes = false
|
120
|
+
# @cs.skip_package_classes = false # default
|
121
|
+
|
122
|
+
list = @cs.compile_list(3, "#{TEST_DATA_PATH}/jar_searcher", MockList.new )
|
123
|
+
|
124
|
+
assert_equal(3 + 2 + 2, list.size) # 3 files, 2 static inner in public, 2 static inner in package
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_compile_list_all_public_and_no_package_classes
|
128
|
+
@cs.skip_inner_classes = false
|
129
|
+
@cs.skip_package_classes = true
|
130
|
+
|
131
|
+
list = @cs.compile_list(3, "#{TEST_DATA_PATH}/jar_searcher", MockList.new )
|
132
|
+
|
133
|
+
assert_equal(2 + 1, list.size) # 2 files, 1 public static inner in public
|
134
|
+
end
|
135
|
+
|
103
136
|
end
|
104
137
|
|
105
138
|
end
|