mirror of
https://github.com/revanced/jadb.git
synced 2025-02-11 09:36:48 +01:00
calculate the correct length of the command to be transmitted for special characters like ä,ö...
This commit is contained in:
parent
423ccb3a89
commit
ecf5a605fb
@ -51,7 +51,7 @@ class Transport implements Closeable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getCommandLength(String command) {
|
private String getCommandLength(String command) {
|
||||||
return String.format("%04x", command.length());
|
return String.format("%04x", command.getBytes().length);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void send(String command) throws IOException {
|
public void send(String command) throws IOException {
|
||||||
|
100
test/se/vidstige/jadb/test/integration/ExecuteCmdTests.java
Normal file
100
test/se/vidstige/jadb/test/integration/ExecuteCmdTests.java
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
package se.vidstige.jadb.test.integration;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.Parameterized;
|
||||||
|
import se.vidstige.jadb.JadbConnection;
|
||||||
|
import se.vidstige.jadb.JadbDevice;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
@RunWith(Parameterized.class)
|
||||||
|
public class ExecuteCmdTests {
|
||||||
|
private static JadbConnection jadb;
|
||||||
|
private static JadbDevice jadbDevice;
|
||||||
|
|
||||||
|
@Parameterized.Parameter
|
||||||
|
public String input;
|
||||||
|
|
||||||
|
|
||||||
|
@Parameterized.Parameters(name="Test {index} input={0}")
|
||||||
|
public static Collection input() {
|
||||||
|
return Arrays.asList(new Object[]{
|
||||||
|
"öäasd",
|
||||||
|
"asf dsa",
|
||||||
|
"sdf&g",
|
||||||
|
"sd& fg",
|
||||||
|
"da~f",
|
||||||
|
"asd'as",
|
||||||
|
"a¡f",
|
||||||
|
"asüd",
|
||||||
|
"adös tz",
|
||||||
|
"⾀",
|
||||||
|
"å",
|
||||||
|
"æ",
|
||||||
|
"{}"});
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void connect() {
|
||||||
|
try {
|
||||||
|
jadb = new JadbConnection();
|
||||||
|
jadb.getHostVersion();
|
||||||
|
jadbDevice = jadb.getAnyDevice();
|
||||||
|
} catch (Exception e) {
|
||||||
|
org.junit.Assume.assumeNoException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testExecuteWithSpecialChars() throws Exception {
|
||||||
|
InputStream response = jadbDevice.execute("echo", input);
|
||||||
|
ResponseReader responseReader = new ResponseReader(response);
|
||||||
|
responseReader.start();
|
||||||
|
responseReader.join(1000L);
|
||||||
|
String ret = responseReader.output;
|
||||||
|
//remove newline
|
||||||
|
ret = ret.replaceAll("\n$", "");
|
||||||
|
Assert.assertEquals(input, ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private class ResponseReader extends Thread {
|
||||||
|
public String output;
|
||||||
|
private InputStream response;
|
||||||
|
|
||||||
|
ResponseReader(InputStream response) {
|
||||||
|
super();
|
||||||
|
this.response = response;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
StringBuilder textBuilder = new StringBuilder();
|
||||||
|
try (Reader reader = new BufferedReader(new InputStreamReader
|
||||||
|
(response, Charset.forName(StandardCharsets.UTF_8.name())))) {
|
||||||
|
int c = 0;
|
||||||
|
while ((c = reader.read()) != -1) {
|
||||||
|
textBuilder.append((char) c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
output = textBuilder.toString();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user