feat(test): add util methods for renames in test (#1885)
This commit is contained in:
@@ -8,6 +8,7 @@ import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -41,6 +42,10 @@ import jadx.api.JadxDecompiler;
|
||||
import jadx.api.JadxInternalAccess;
|
||||
import jadx.api.JavaClass;
|
||||
import jadx.api.args.GeneratedRenamesMappingFileMode;
|
||||
import jadx.api.data.IJavaNodeRef;
|
||||
import jadx.api.data.impl.JadxCodeData;
|
||||
import jadx.api.data.impl.JadxCodeRename;
|
||||
import jadx.api.data.impl.JadxNodeRef;
|
||||
import jadx.api.metadata.ICodeMetadata;
|
||||
import jadx.api.metadata.annotations.InsnCodeOffset;
|
||||
import jadx.core.dex.attributes.AFlag;
|
||||
@@ -618,4 +623,30 @@ public abstract class IntegrationTest extends TestUtils {
|
||||
protected void saveTestJar() {
|
||||
this.saveTestJar = true;
|
||||
}
|
||||
|
||||
protected void addClsRename(String fullClsName, String newName) {
|
||||
JadxNodeRef clsRef = JadxNodeRef.forCls(fullClsName);
|
||||
getCodeData().getRenames().add(new JadxCodeRename(clsRef, newName));
|
||||
}
|
||||
|
||||
protected void addMthRename(String fullClsName, String mthSignature, String newName) {
|
||||
JadxNodeRef mthRef = new JadxNodeRef(IJavaNodeRef.RefType.METHOD, fullClsName, mthSignature);
|
||||
getCodeData().getRenames().add(new JadxCodeRename(mthRef, newName));
|
||||
}
|
||||
|
||||
protected void addFldRename(String fullClsName, String fldSignature, String newName) {
|
||||
JadxNodeRef fldRef = new JadxNodeRef(IJavaNodeRef.RefType.FIELD, fullClsName, fldSignature);
|
||||
getCodeData().getRenames().add(new JadxCodeRename(fldRef, newName));
|
||||
}
|
||||
|
||||
protected JadxCodeData getCodeData() {
|
||||
JadxCodeData codeData = (JadxCodeData) getArgs().getCodeData();
|
||||
if (codeData == null) {
|
||||
codeData = new JadxCodeData();
|
||||
codeData.setRenames(new ArrayList<>());
|
||||
codeData.setComments(new ArrayList<>());
|
||||
getArgs().setCodeData(codeData);
|
||||
}
|
||||
return codeData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package jadx.tests.integration.deobf;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jadx.tests.api.IntegrationTest;
|
||||
|
||||
import static jadx.tests.api.utils.assertj.JadxAssertions.assertThat;
|
||||
|
||||
public class TestRenameOverriddenMethod3 extends IntegrationTest {
|
||||
|
||||
public static class TestCls {
|
||||
|
||||
public abstract static class A {
|
||||
public abstract int call();
|
||||
}
|
||||
|
||||
public static class B extends A {
|
||||
@Override
|
||||
public final int call() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
addMthRename(TestCls.class.getName() + "$A", "call()I", "callRenamed");
|
||||
assertThat(getClassNode(TestCls.class))
|
||||
.code()
|
||||
.countString(1, "@Override")
|
||||
.countString(2, "int callRenamed()");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user