mirror of
https://github.com/revanced/jadb.git
synced 2024-11-19 10:39:23 +01:00
Filtering out 0x0d, 0x0a sequences from shell commands. Makes screenshotting work again. :-)
This commit is contained in:
parent
41872e3bb9
commit
c9a0a59ace
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
||||
Generated by tests
|
||||
/foobar.md
|
||||
/xyz
|
||||
screenshot.png
|
||||
|
||||
#################
|
||||
## Eclipse
|
||||
|
21
src/se/vidstige/jadb/AdbFilterOutputStream.java
Normal file
21
src/se/vidstige/jadb/AdbFilterOutputStream.java
Normal file
@ -0,0 +1,21 @@
|
||||
package se.vidstige.jadb;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
public class AdbFilterOutputStream extends LookBackFilteringOutputStream {
|
||||
public AdbFilterOutputStream(OutputStream inner) {
|
||||
super(inner, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(int c) throws IOException {
|
||||
if (!lookback().isEmpty()) {
|
||||
Byte last = lookback().getFirst();
|
||||
if (last != null && last == 0x0d && c == 0x0a) {
|
||||
unwrite();
|
||||
}
|
||||
}
|
||||
super.write(c);
|
||||
}
|
||||
}
|
@ -60,7 +60,7 @@ public class JadbDevice {
|
||||
}
|
||||
send(transport, "shell:" + shellLine.toString());
|
||||
if (stdout != null) {
|
||||
transport.readResponseTo(stdout);
|
||||
transport.readResponseTo(new AdbFilterOutputStream(stdout));
|
||||
}
|
||||
}
|
||||
|
||||
|
44
test/se/vidstige/jadb/test/AdbOutputStreamFixture.java
Normal file
44
test/se/vidstige/jadb/test/AdbOutputStreamFixture.java
Normal file
@ -0,0 +1,44 @@
|
||||
package se.vidstige.jadb.test;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import se.vidstige.jadb.AdbFilterOutputStream;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
public class AdbOutputStreamFixture {
|
||||
|
||||
private byte[] passthrough(byte[] input) throws IOException {
|
||||
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
||||
OutputStream sut = new AdbFilterOutputStream(output);
|
||||
sut.write(input);
|
||||
sut.flush();
|
||||
return output.toByteArray();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimple() throws Exception {
|
||||
byte[] actual = passthrough(new byte[]{ 1, 2, 3});
|
||||
Assert.assertArrayEquals(new byte[]{ 1, 2, 3}, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmpty() throws Exception {
|
||||
byte[] actual = passthrough(new byte[]{});
|
||||
Assert.assertArrayEquals(new byte[]{}, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleRemoval() throws Exception {
|
||||
byte[] actual = passthrough(new byte[]{0x0d, 0x0a});
|
||||
Assert.assertArrayEquals(new byte[]{0x0a}, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDoubleRemoval() throws Exception {
|
||||
byte[] actual = passthrough(new byte[]{0x0d, 0x0a, 0x0d, 0x0a});
|
||||
Assert.assertArrayEquals(new byte[]{0x0a, 0x0a}, actual);
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ import se.vidstige.jadb.JadbException;
|
||||
import se.vidstige.jadb.RemoteFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.util.List;
|
||||
|
||||
public class RealDeviceTestCases {
|
||||
@ -77,4 +78,12 @@ public class RealDeviceTestCases {
|
||||
any.executeShell(System.out, "ls /");
|
||||
any.executeShell(System.out, "ls", "-la", "/");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScreenshot() throws Exception {
|
||||
JadbConnection jadb = new JadbConnection();
|
||||
JadbDevice any = jadb.getAnyDevice();
|
||||
FileOutputStream outputStream = new FileOutputStream(new File("screenshot.png"));
|
||||
any.executeShell(outputStream, "screencap", "-p");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user