Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Quincy379
jadx
提交
2caac21b
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,发现更多精彩内容 >>
提交
2caac21b
编写于
3月 27, 2019
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test: limit auto check execution time
上级
c5d977ba
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
45 addition
and
18 deletion
+45
-18
jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java
jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java
+45
-18
未找到文件。
jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java
浏览文件 @
2caac21b
...
...
@@ -12,6 +12,13 @@ import java.util.ArrayList;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.ExecutionException
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Future
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeoutException
;
import
java.util.jar.JarOutputStream
;
import
jadx.api.JadxArgs
;
...
...
@@ -229,16 +236,16 @@ public abstract class IntegrationTest extends TestUtils {
return
;
}
try
{
checkMth
.
invoke
(
origCls
.
getConstructor
().
newInstance
(
));
}
catch
(
InvocationTargetException
i
e
)
{
rethrow
(
"Original check failed"
,
i
e
);
limitExecTime
(()
->
checkMth
.
invoke
(
origCls
.
getConstructor
().
newInstance
()
));
}
catch
(
Exception
e
)
{
rethrow
(
"Original check failed"
,
e
);
}
// run 'check' method from decompiled class
if
(
compile
)
{
try
{
invoke
(
"check"
);
}
catch
(
InvocationTargetException
i
e
)
{
rethrow
(
"Decompiled check failed"
,
i
e
);
limitExecTime
(()
->
invoke
(
"check"
)
);
}
catch
(
Exception
e
)
{
rethrow
(
"Decompiled check failed"
,
e
);
}
System
.
out
.
println
(
"Auto check: PASSED"
);
}
...
...
@@ -248,14 +255,34 @@ public abstract class IntegrationTest extends TestUtils {
}
}
private
void
rethrow
(
String
msg
,
InvocationTargetException
ie
)
{
Throwable
cause
=
ie
.
getCause
();
if
(
cause
instanceof
AssertionError
)
{
System
.
err
.
println
(
msg
);
throw
(
AssertionError
)
cause
;
private
<
T
>
T
limitExecTime
(
Callable
<
T
>
call
)
{
ExecutorService
executor
=
Executors
.
newSingleThreadExecutor
();
Future
<
T
>
future
=
executor
.
submit
(
call
);
try
{
return
future
.
get
(
5
,
TimeUnit
.
SECONDS
);
}
catch
(
TimeoutException
ex
)
{
future
.
cancel
(
true
);
rethrow
(
"Execution timeout"
,
ex
);
}
catch
(
Exception
ex
)
{
rethrow
(
ex
.
getMessage
(),
ex
);
}
finally
{
executor
.
shutdownNow
();
}
return
null
;
}
private
void
rethrow
(
String
msg
,
Throwable
e
)
{
if
(
e
instanceof
InvocationTargetException
)
{
Throwable
cause
=
e
.
getCause
();
if
(
cause
instanceof
AssertionError
)
{
throw
(
AssertionError
)
cause
;
}
else
{
fail
(
cause
);
}
}
else
if
(
e
instanceof
ExecutionException
)
{
rethrow
(
e
.
getMessage
(),
e
.
getCause
());
}
else
{
cause
.
printStackTrace
();
fail
(
msg
+
cause
.
getMessage
());
fail
(
msg
,
e
);
}
}
...
...
@@ -279,8 +306,7 @@ public abstract class IntegrationTest extends TestUtils {
assertTrue
(
result
,
"Compilation failed"
);
System
.
out
.
println
(
"Compilation: PASSED"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
fail
(
e
.
getMessage
());
fail
(
e
);
}
}
...
...
@@ -437,13 +463,14 @@ public abstract class IntegrationTest extends TestUtils {
// Use only for debug purpose
@Deprecated
protected
void
setO
utputCFG
()
{
protected
void
o
utputCFG
()
{
this
.
args
.
setCfgOutput
(
true
);
this
.
args
.
setRawCFGOutput
(
true
);
}
// Use only for debug purpose
}
// Use only for debug purpose
@Deprecated
protected
void
setO
utputRawCFG
()
{
protected
void
o
utputRawCFG
()
{
this
.
args
.
setRawCFGOutput
(
true
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录