diff options
| author | 2014-09-05 01:15:43 -0400 | |
|---|---|---|
| committer | 2014-09-05 01:15:43 -0400 | |
| commit | e70573589c092b0d2474fa745b1346379cf8767b (patch) | |
| tree | f8af934e5ef2efad73a3ad6e74ce6d0a55caf028 | |
| parent | fixed spelling error in error message (lol) (diff) | |
| download | enigma-fork-e70573589c092b0d2474fa745b1346379cf8767b.tar.gz enigma-fork-e70573589c092b0d2474fa745b1346379cf8767b.tar.xz enigma-fork-e70573589c092b0d2474fa745b1346379cf8767b.zip | |
added proguard to the gradle config to create obfuscated jars for testing
added simple tests for the deobufscator class
| -rw-r--r-- | build.gradle | 65 | ||||
| -rw-r--r-- | test/cuchaz/enigma/TestDeobfuscator.java | 51 | ||||
| -rw-r--r-- | test/cuchaz/enigma/inputs/Keep.java | 9 | ||||
| -rw-r--r-- | test/cuchaz/enigma/inputs/LoneClass.java | 16 |
4 files changed, 113 insertions, 28 deletions
diff --git a/build.gradle b/build.gradle index 7409f93..4fd004f 100644 --- a/build.gradle +++ b/build.gradle | |||
| @@ -5,7 +5,8 @@ buildscript { | |||
| 5 | } | 5 | } |
| 6 | 6 | ||
| 7 | dependencies { | 7 | dependencies { |
| 8 | classpath 'eu.appsatori:gradle-fatjar-plugin:0.2-rc1' | 8 | classpath "eu.appsatori:gradle-fatjar-plugin:0.2-rc1" |
| 9 | classpath "net.sf.proguard:proguard-gradle:5.0" | ||
| 9 | } | 10 | } |
| 10 | } | 11 | } |
| 11 | 12 | ||
| @@ -19,41 +20,29 @@ targetCompatibility = 1.7 | |||
| 19 | 20 | ||
| 20 | group = "com.cuchazinteractive" | 21 | group = "com.cuchazinteractive" |
| 21 | archivesBaseName = "enigma" | 22 | archivesBaseName = "enigma" |
| 22 | version = "0.5b" | 23 | version = "0.5.1b" |
| 23 | 24 | ||
| 24 | sourceSets | 25 | sourceSets { |
| 25 | { | 26 | main { |
| 26 | main | 27 | java { |
| 27 | { | ||
| 28 | java | ||
| 29 | { | ||
| 30 | srcDir "src" | 28 | srcDir "src" |
| 31 | } | 29 | } |
| 32 | resources | 30 | resources { |
| 33 | { | ||
| 34 | srcDir "conf" | 31 | srcDir "conf" |
| 35 | } | 32 | } |
| 36 | } | 33 | } |
| 37 | test | 34 | test { |
| 38 | { | 35 | java { |
| 39 | java | ||
| 40 | { | ||
| 41 | srcDir "test" | 36 | srcDir "test" |
| 42 | } | 37 | } |
| 43 | resources | ||
| 44 | { | ||
| 45 | srcDir "conf" | ||
| 46 | } | ||
| 47 | } | 38 | } |
| 48 | } | 39 | } |
| 49 | 40 | ||
| 50 | repositories | 41 | repositories { |
| 51 | { | ||
| 52 | mavenCentral() | 42 | mavenCentral() |
| 53 | } | 43 | } |
| 54 | 44 | ||
| 55 | dependencies | 45 | dependencies { |
| 56 | { | ||
| 57 | compile fileTree( dir: "libs", include: "*.jar" ) | 46 | compile fileTree( dir: "libs", include: "*.jar" ) |
| 58 | compile "de.sciss:jsyntaxpane:1.0.0" | 47 | compile "de.sciss:jsyntaxpane:1.0.0" |
| 59 | compile "com.google.guava:guava:17.0" | 48 | compile "com.google.guava:guava:17.0" |
| @@ -62,13 +51,11 @@ dependencies | |||
| 62 | testCompile "junit:junit:4.11" | 51 | testCompile "junit:junit:4.11" |
| 63 | } | 52 | } |
| 64 | 53 | ||
| 65 | fatJar | 54 | fatJar { |
| 66 | { | 55 | from( "." ) { |
| 67 | from ".", { | 56 | include( "*.txt" ) |
| 68 | include "*.txt" | ||
| 69 | } | 57 | } |
| 70 | manifest | 58 | manifest { |
| 71 | { | ||
| 72 | attributes( | 59 | attributes( |
| 73 | "Title": archivesBaseName, | 60 | "Title": archivesBaseName, |
| 74 | "Manifest-Version": "1.0", | 61 | "Manifest-Version": "1.0", |
| @@ -77,3 +64,25 @@ fatJar | |||
| 77 | ) | 64 | ) |
| 78 | } | 65 | } |
| 79 | } | 66 | } |
| 67 | |||
| 68 | task jarTestCases( type: Jar ) { | ||
| 69 | from( sourceSets.test.output ) { | ||
| 70 | include( "cuchaz/enigma/inputs/**" ) | ||
| 71 | } | ||
| 72 | archiveName( "testCases.jar" ) | ||
| 73 | } | ||
| 74 | |||
| 75 | task obfTestCases( type: proguard.gradle.ProGuardTask ) { | ||
| 76 | dependsOn jarTestCases | ||
| 77 | |||
| 78 | injars( "build/libs/testCases.jar" ) | ||
| 79 | outjars( "build/libs/testCases.obf.jar" ) | ||
| 80 | |||
| 81 | libraryjars( "${System.getProperty('java.home')}/lib/rt.jar" ) | ||
| 82 | overloadaggressively | ||
| 83 | repackageclasses | ||
| 84 | allowaccessmodification | ||
| 85 | |||
| 86 | keep( "class cuchaz.enigma.inputs.Keep" ) | ||
| 87 | dontshrink | ||
| 88 | } \ No newline at end of file | ||
diff --git a/test/cuchaz/enigma/TestDeobfuscator.java b/test/cuchaz/enigma/TestDeobfuscator.java new file mode 100644 index 0000000..3310fbc --- /dev/null +++ b/test/cuchaz/enigma/TestDeobfuscator.java | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | package cuchaz.enigma; | ||
| 2 | |||
| 3 | import static org.junit.Assert.*; | ||
| 4 | |||
| 5 | import java.io.File; | ||
| 6 | import java.io.IOException; | ||
| 7 | import java.util.List; | ||
| 8 | |||
| 9 | import org.junit.Test; | ||
| 10 | |||
| 11 | import com.beust.jcommander.internal.Lists; | ||
| 12 | |||
| 13 | import cuchaz.enigma.mapping.ClassEntry; | ||
| 14 | |||
| 15 | public class TestDeobfuscator | ||
| 16 | { | ||
| 17 | private Deobfuscator getDeobfuscator( ) | ||
| 18 | throws IOException | ||
| 19 | { | ||
| 20 | return new Deobfuscator( new File( "build/libs/testCases.obf.jar" ) ); | ||
| 21 | } | ||
| 22 | |||
| 23 | @Test | ||
| 24 | public void loadJar( ) | ||
| 25 | throws Exception | ||
| 26 | { | ||
| 27 | getDeobfuscator(); | ||
| 28 | } | ||
| 29 | |||
| 30 | @Test | ||
| 31 | public void getClasses( ) | ||
| 32 | throws Exception | ||
| 33 | { | ||
| 34 | Deobfuscator deobfuscator = getDeobfuscator(); | ||
| 35 | List<ClassEntry> obfClasses = Lists.newArrayList(); | ||
| 36 | List<ClassEntry> deobfClasses = Lists.newArrayList(); | ||
| 37 | deobfuscator.getSeparatedClasses( obfClasses, deobfClasses ); | ||
| 38 | assertEquals( 1, obfClasses.size() ); | ||
| 39 | assertEquals( "none/a", obfClasses.get( 0 ).getName() ); | ||
| 40 | assertEquals( 1, deobfClasses.size() ); | ||
| 41 | assertEquals( "cuchaz/enigma/inputs/Keep", deobfClasses.get( 0 ).getName() ); | ||
| 42 | } | ||
| 43 | |||
| 44 | @Test | ||
| 45 | public void decompileClass( ) | ||
| 46 | throws Exception | ||
| 47 | { | ||
| 48 | Deobfuscator deobfuscator = getDeobfuscator(); | ||
| 49 | deobfuscator.getSource( deobfuscator.getSourceTree( "none/a" ) ); | ||
| 50 | } | ||
| 51 | } | ||
diff --git a/test/cuchaz/enigma/inputs/Keep.java b/test/cuchaz/enigma/inputs/Keep.java new file mode 100644 index 0000000..3c12bae --- /dev/null +++ b/test/cuchaz/enigma/inputs/Keep.java | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | package cuchaz.enigma.inputs; | ||
| 2 | |||
| 3 | public class Keep | ||
| 4 | { | ||
| 5 | public static void main( String[] args ) | ||
| 6 | { | ||
| 7 | System.out.println( "Keep me!" ); | ||
| 8 | } | ||
| 9 | } | ||
diff --git a/test/cuchaz/enigma/inputs/LoneClass.java b/test/cuchaz/enigma/inputs/LoneClass.java new file mode 100644 index 0000000..a3d8cde --- /dev/null +++ b/test/cuchaz/enigma/inputs/LoneClass.java | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | package cuchaz.enigma.inputs; | ||
| 2 | |||
| 3 | public class LoneClass | ||
| 4 | { | ||
| 5 | private String m_name; | ||
| 6 | |||
| 7 | public LoneClass( String name ) | ||
| 8 | { | ||
| 9 | m_name = name; | ||
| 10 | } | ||
| 11 | |||
| 12 | public String getName( ) | ||
| 13 | { | ||
| 14 | return m_name; | ||
| 15 | } | ||
| 16 | } | ||