diff --git a/src/se/vidstige/jadb/managers/PropertyManager.java b/src/se/vidstige/jadb/managers/PropertyManager.java index 181cee8..6ab30d8 100644 --- a/src/se/vidstige/jadb/managers/PropertyManager.java +++ b/src/se/vidstige/jadb/managers/PropertyManager.java @@ -27,7 +27,7 @@ public class PropertyManager { } private Map parseProp(BufferedReader bufferedReader) throws IOException { - final Pattern pattern = Pattern.compile("^\\[([a-zA-Z0-9_.-]*)\\]:.\\[([a-zA-Z0-9_.-]*)\\]"); + final Pattern pattern = Pattern.compile("^\\[([a-zA-Z0-9_.-]*)\\]:.\\[([^\\[\\]]*)\\]"); HashMap result = new HashMap<>(); diff --git a/test/se/vidstige/jadb/test/unit/PropertyManagerTest.java b/test/se/vidstige/jadb/test/unit/PropertyManagerTest.java index dadf17c..1b59874 100644 --- a/test/se/vidstige/jadb/test/unit/PropertyManagerTest.java +++ b/test/se/vidstige/jadb/test/unit/PropertyManagerTest.java @@ -55,6 +55,38 @@ public class PropertyManagerTest { assertEquals(expected, actual); } + @Test + public void testGetPropsValueHasSpecialCharacters() throws Exception { + /* Some example properties from Nexus 9: + [ro.product.model]: [Nexus 9] + [ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi] + [ro.retaildemo.video_path]: [/data/preloads/demo/retail_demo.mp4] + [ro.url.legal]: [http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html] + [ro.vendor.build.date]: [Tue Nov 1 18:21:23 UTC 2016] + */ + //Arrange + Map expected = new HashMap<>(); + expected.put("ro.product.model", "Nexus 9"); + expected.put("ro.product.cpu.abilist", "arm64-v8a,armeabi-v7a,armeabi"); + expected.put("ro.retaildemo.video_path", "/data/preloads/demo/retail_demo.mp4"); + expected.put("ro.url.legal", "http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html"); + expected.put("ro.vendor.build.date", "Tue Nov 1 18:21:23 UTC 2016"); + + String response = "[ro.product.model]: [Nexus 9]\n" + + "[ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi]\n" + + "[ro.retaildemo.video_path]: [/data/preloads/demo/retail_demo.mp4]\n" + + "[ro.url.legal]: [http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html]\n" + + "[ro.vendor.build.date]: [Tue Nov 1 18:21:23 UTC 2016]"; + + server.expectShell(DEVICE_SERIAL, "getprop").returns(response); + + //Act + Map actual = new PropertyManager(device).getprop(); + + //Assert + assertEquals(expected, actual); + } + @Test public void testGetPropsMalformedIgnoredString() throws Exception { //Arrange