Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Quincy379
jadx
提交
eb141ad1
J
jadx
项目概览
Quincy379
/
jadx
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jadx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
eb141ad1
编写于
3月 26, 2019
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test: add tests for #474
上级
b446bf27
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
86 addition
and
24 deletion
+86
-24
jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java
jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java
+8
-0
jadx-core/src/test/java/jadx/tests/api/SmaliTest.java
jadx-core/src/test/java/jadx/tests/api/SmaliTest.java
+12
-9
jadx-core/src/test/java/jadx/tests/integration/names/TestCaseSensitiveChecks.java
...jadx/tests/integration/names/TestCaseSensitiveChecks.java
+60
-0
jadx-core/src/test/java/jadx/tests/integration/names/TestClassNameWithInvalidChar.java
...tests/integration/names/TestClassNameWithInvalidChar.java
+2
-15
jadx-core/src/test/smali/names/TestCaseSensitiveChecks/1.smali
...core/src/test/smali/names/TestCaseSensitiveChecks/1.smali
+2
-0
jadx-core/src/test/smali/names/TestCaseSensitiveChecks/2.smali
...core/src/test/smali/names/TestCaseSensitiveChecks/2.smali
+2
-0
未找到文件。
jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java
浏览文件 @
eb141ad1
...
...
@@ -81,6 +81,14 @@ public abstract class IntegrationTest extends TestUtils {
args
.
setFsCaseSensitive
(
false
);
// use same value on all systems
}
public
String
getTestName
()
{
return
this
.
getClass
().
getSimpleName
();
}
public
String
getTestPkg
()
{
return
this
.
getClass
().
getPackage
().
getName
().
replace
(
"jadx.tests.integration."
,
""
);
}
public
ClassNode
getClassNode
(
Class
<?>
clazz
)
{
try
{
File
jar
=
getJarForClass
(
clazz
);
...
...
jadx-core/src/test/java/jadx/tests/api/SmaliTest.java
浏览文件 @
eb141ad1
...
...
@@ -11,7 +11,9 @@ import org.jf.smali.Smali;
import
org.jf.smali.SmaliOptions
;
import
jadx.api.JadxDecompiler
;
import
jadx.api.JadxInternalAccess
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.dex.nodes.RootNode
;
import
static
org
.
hamcrest
.
MatcherAssert
.
assertThat
;
import
static
org
.
hamcrest
.
Matchers
.
notNullValue
;
...
...
@@ -47,16 +49,17 @@ public abstract class SmaliTest extends IntegrationTest {
return
getClassNodeFromFile
(
outDex
,
pkg
+
'.'
+
clsName
);
}
protected
JadxDecompiler
loadSmaliFile
(
String
pkg
,
String
smaliFileName
)
{
protected
List
<
ClassNode
>
loadFromSmaliFiles
(
)
{
File
outDex
=
createTempFile
(
".dex"
);
compileSmali
(
outDex
,
Collections
.
singletonList
(
getSmaliFile
(
pkg
+
File
.
separatorChar
+
smaliFileName
)));
return
loadFiles
(
Collections
.
singletonList
(
outDex
));
}
compileSmali
(
outDex
,
collectSmaliFiles
(
getTestPkg
(),
getTestName
()));
protected
JadxDecompiler
loadSmaliFiles
(
String
pkg
,
String
testNameDir
)
{
File
outDex
=
createTempFile
(
".dex"
);
compileSmali
(
outDex
,
collectSmaliFiles
(
pkg
,
testNameDir
));
return
loadFiles
(
Collections
.
singletonList
(
outDex
));
JadxDecompiler
d
=
loadFiles
(
Collections
.
singletonList
(
outDex
));
RootNode
root
=
JadxInternalAccess
.
getRoot
(
d
);
List
<
ClassNode
>
classes
=
root
.
getClasses
(
false
);
for
(
ClassNode
cls
:
classes
)
{
decompileAndCheckCls
(
d
,
cls
);
}
return
classes
;
}
private
List
<
File
>
collectSmaliFiles
(
String
pkg
,
@Nullable
String
testDir
)
{
...
...
@@ -68,7 +71,7 @@ public abstract class SmaliTest extends IntegrationTest {
}
File
smaliDir
=
new
File
(
SMALI_TESTS_DIR
,
smaliFilesDir
);
String
[]
smaliFileNames
=
smaliDir
.
list
((
dir
,
name
)
->
name
.
endsWith
(
".smali"
));
assertThat
(
"Smali files not found
"
,
smaliFileNames
,
notNullValue
());
assertThat
(
"Smali files not found
in "
+
smaliDir
,
smaliFileNames
,
notNullValue
());
return
Arrays
.
stream
(
smaliFileNames
)
.
map
(
file
->
new
File
(
smaliDir
,
file
))
.
collect
(
Collectors
.
toList
());
...
...
jadx-core/src/test/java/jadx/tests/integration/names/TestCaseSensitiveChecks.java
0 → 100644
浏览文件 @
eb141ad1
package
jadx.tests.integration.names
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
org.hamcrest.Matchers
;
import
org.junit.jupiter.api.Test
;
import
jadx.core.Consts
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.tests.api.SmaliTest
;
import
static
org
.
hamcrest
.
MatcherAssert
.
assertThat
;
import
static
org
.
hamcrest
.
Matchers
.
emptyString
;
import
static
org
.
hamcrest
.
Matchers
.
is
;
import
static
org
.
hamcrest
.
Matchers
.
not
;
public
class
TestCaseSensitiveChecks
extends
SmaliTest
{
/*
public class A {}
public class a {}
*/
@Test
public
void
test
()
{
args
.
setFsCaseSensitive
(
false
);
List
<
ClassNode
>
classes
=
loadFromSmaliFiles
();
for
(
ClassNode
cls
:
classes
)
{
assertThat
(
cls
.
getPackage
(),
is
(
Consts
.
DEFAULT_PACKAGE_NAME
));
}
long
namesCount
=
classes
.
stream
().
map
(
cls
->
cls
.
getShortName
().
toLowerCase
()).
distinct
().
count
();
assertThat
(
namesCount
,
is
(
2L
));
}
@Test
public
void
testCaseSensitiveFS
()
{
args
.
setFsCaseSensitive
(
true
);
List
<
ClassNode
>
classes
=
loadFromSmaliFiles
();
for
(
ClassNode
cls
:
classes
)
{
assertThat
(
cls
.
getPackage
(),
is
(
Consts
.
DEFAULT_PACKAGE_NAME
));
}
List
<
String
>
names
=
classes
.
stream
().
map
(
ClassNode:
:
getShortName
).
collect
(
Collectors
.
toList
());
assertThat
(
names
,
Matchers
.
containsInAnyOrder
(
"A"
,
"a"
));
}
@Test
public
void
testWithDeobfuscation
()
{
enableDeobfuscation
();
List
<
ClassNode
>
classes
=
loadFromSmaliFiles
();
for
(
ClassNode
cls
:
classes
)
{
assertThat
(
cls
.
getPackage
(),
not
(
emptyString
()));
assertThat
(
cls
.
getPackage
(),
not
(
Consts
.
DEFAULT_PACKAGE_NAME
));
}
long
namesCount
=
classes
.
stream
().
map
(
cls
->
cls
.
getShortName
().
toLowerCase
()).
distinct
().
count
();
assertThat
(
namesCount
,
is
(
2L
));
}
}
jadx-core/src/test/java/jadx/tests/integration/names/TestClassNameWithInvalidChar.java
浏览文件 @
eb141ad1
...
...
@@ -2,10 +2,6 @@ package jadx.tests.integration.names;
import
org.junit.jupiter.api.Test
;
import
jadx.api.JadxDecompiler
;
import
jadx.api.JadxInternalAccess
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.dex.nodes.RootNode
;
import
jadx.tests.api.SmaliTest
;
public
class
TestClassNameWithInvalidChar
extends
SmaliTest
{
...
...
@@ -16,21 +12,12 @@ public class TestClassNameWithInvalidChar extends SmaliTest {
@Test
public
void
test
()
{
JadxDecompiler
d
=
loadSmaliFiles
(
"names"
,
"TestClassNameWithInvalidChar"
);
RootNode
root
=
JadxInternalAccess
.
getRoot
(
d
);
for
(
ClassNode
cls
:
root
.
getClasses
(
false
))
{
decompileAndCheckCls
(
d
,
cls
);
}
loadFromSmaliFiles
();
}
@Test
public
void
testWithDeobfuscation
()
{
enableDeobfuscation
();
JadxDecompiler
d
=
loadSmaliFiles
(
"names"
,
"TestClassNameWithInvalidChar"
);
RootNode
root
=
JadxInternalAccess
.
getRoot
(
d
);
for
(
ClassNode
cls
:
root
.
getClasses
(
false
))
{
decompileAndCheckCls
(
d
,
cls
);
}
loadFromSmaliFiles
();
}
}
jadx-core/src/test/smali/names/TestCaseSensitiveChecks/1.smali
0 → 100644
浏览文件 @
eb141ad1
.class public LA;
.super Ljava/lang/Object;
jadx-core/src/test/smali/names/TestCaseSensitiveChecks/2.smali
0 → 100644
浏览文件 @
eb141ad1
.class public La;
.super Ljava/lang/Object;
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录