From 1118236075a93cd3c58f70584ca13601ffe3f37b Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 10 Oct 2015 14:26:23 +0300 Subject: [PATCH] test: added module for check recompilation of test app --- .gitmodules | 3 ++ build.gradle | 3 ++ jadx-test-app/README.md | 14 ++++++++ jadx-test-app/build.gradle | 69 ++++++++++++++++++++++++++++++++++++++ jadx-test-app/test-app | 1 + settings.gradle | 1 + 6 files changed, 91 insertions(+) create mode 100644 .gitmodules create mode 100644 jadx-test-app/README.md create mode 100644 jadx-test-app/build.gradle create mode 160000 jadx-test-app/test-app diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..cae93fa2 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "jadx-test-app/test-app"] + path = jadx-test-app/test-app + url = git://github.com/skylot/jadx-test-app.git diff --git a/build.gradle b/build.gradle index 9412d701..abc69a24 100644 --- a/build.gradle +++ b/build.gradle @@ -93,6 +93,9 @@ task dist(dependsOn: pack) { task samples(dependsOn: 'jadx-samples:samples') { } +task testAppCheck(dependsOn: 'jadx-test-app:testAppCheck') { +} + task pitest(overwrite: true, dependsOn: 'jadx-core:pitest') { } diff --git a/jadx-test-app/README.md b/jadx-test-app/README.md new file mode 100644 index 00000000..c26aef80 --- /dev/null +++ b/jadx-test-app/README.md @@ -0,0 +1,14 @@ +### Run jadx on test android application + +This module contains build scripts for test recompilation of simple android app from: +https://github.com/skylot/jadx-test-app + +For run tests type follow commands in jadx root directory: + +```java +git submodule init +git submodule update +./gradlew testAppCheck +``` + +Note: You will need connected device or emulator for success diff --git a/jadx-test-app/build.gradle b/jadx-test-app/build.gradle new file mode 100644 index 00000000..3d161df3 --- /dev/null +++ b/jadx-test-app/build.gradle @@ -0,0 +1,69 @@ +project.ext { + testAppDir = 'test-app' + testAppTmpDir = 'test-app-tmp' + + buildFile = "${testAppTmpDir}/build.gradle" + apkFile = "${testAppTmpDir}/build/outputs/apk/test-app-tmp-debug.apk" + outSrcDir = "${testAppTmpDir}/src/main/java" + outResDir = "${testAppTmpDir}/src/main" + checkTask = 'connectedCheck' +} + +dependencies { + compile(project(":jadx-cli")) +} + +sonarRunner { + skipProject = true +} + +task deleteTmp(type:Delete) { + delete testAppTmpDir +} + +task copyApp(type:Copy, dependsOn: deleteTmp) { + from testAppDir + into testAppTmpDir +} + +task buildApp(type:Exec, dependsOn: copyApp) { + workingDir testAppTmpDir + commandLine "./gradlew clean build ${checkTask}".split(' ') +} + +task removeSource(type:Delete, dependsOn: buildApp) { + delete "${outResDir}/**" +} + +task runJadxSrc(type: JavaExec, dependsOn: removeSource) { + classpath = sourceSets.main.output + configurations.compile + main = project(':jadx-cli').mainClassName + args = ['-d', outSrcDir, '-r', apkFile, '-v'] +} + +task runJadxResources(type: JavaExec, dependsOn: runJadxSrc) { + classpath = sourceSets.main.output + configurations.compile + main = project(':jadx-cli').mainClassName + args = ['-d', outResDir, '-s', apkFile, '-v'] +} + +task decompile(type:Delete, dependsOn: runJadxResources) { + delete "${outSrcDir}/com/github/skylot/jadx/testapp/BuildConfig.java" + delete "${outSrcDir}/com/github/skylot/jadx/testapp/R.java" +} + +task runChecks(type:Exec, dependsOn: decompile) { + workingDir testAppTmpDir + commandLine "./gradlew clean build ${checkTask}".split(' ') +} + +task testAppCheck(dependsOn: runChecks) { + doFirst { + def buildFile = file(buildFile) + if (!buildFile.exists() || !buildFile.isFile()) { + throw new StopExecutionException("Test app not found") + } + } +} + +clean.dependsOn deleteTmp diff --git a/jadx-test-app/test-app b/jadx-test-app/test-app new file mode 160000 index 00000000..2f34a777 --- /dev/null +++ b/jadx-test-app/test-app @@ -0,0 +1 @@ +Subproject commit 2f34a777adf9c4b303e2627c95a41d28204bdc4c diff --git a/settings.gradle b/settings.gradle index cde32274..4dee6d10 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,3 +4,4 @@ include 'jadx-core' include 'jadx-cli' include 'jadx-gui' include 'jadx-samples' +include 'jadx-test-app' -- GitLab