/** Parses an AndroidManifest.xml file using the framework PackageParser. */ public static Package callParsePackage(Path apkFile) { PackageParser packageParser = new PackageParser(); int flags = PackageParser.PARSE_IGNORE_PROCESSES; try { Package thePackage; if (RuntimeEnvironment.getApiLevel() >= Build.VERSION_CODES.LOLLIPOP) { thePackage = packageParser.parsePackage(apkFile.toFile(), flags); } else { // JB -> KK thePackage = reflector(_PackageParser_.class, packageParser) .parsePackage( apkFile.toFile(), Fs.externalize(apkFile), new DisplayMetrics(), flags); } if (thePackage == null) { List<LogItem> logItems = ShadowLog.getLogsForTag("PackageParser"); if (logItems.isEmpty()) { throw new RuntimeException( "Failed to parse package " + apkFile); } else { LogItem logItem = logItems.get(0); throw new RuntimeException( "Failed to parse package " + apkFile + ": " + logItem.msg, logItem.throwable); } } return thePackage; } catch (Exception e) { throw new RuntimeException(e); } }
private void assertUniformLogsForTag(String tag, int count) { List<LogItem> tag1Items = ShadowLog.getLogsForTag(tag); assertThat(tag1Items.size()).isEqualTo(count); int last = -1; for (LogItem item : tag1Items) { assertThat(item.tag).isEqualTo(tag); int current = Integer.parseInt(item.msg); assertThat(current > last).isTrue(); last = current; } }
@Test public void clear() { assertThat(ShadowLog.getLogsForTag("tag1")).isEmpty(); Log.d("tag1", "1"); assertThat(ShadowLog.getLogsForTag("tag1")).isNotEmpty(); ShadowLog.clear(); assertThat(ShadowLog.getLogsForTag("tag1")).isEmpty(); assertThat(ShadowLog.getLogs()).isEmpty(); } }
@Test public void getLogsForTag_empty() { assertThat(ShadowLog.getLogsForTag("non_existent")).isEmpty(); }
/** Print all log messages for given tag */ protected void printLogs(String tag) { System.out.println("\n\n============================== Start of '" + tag + "' logs =============================="); ShadowLog.getLogsForTag(tag) .forEach(log -> System.out.println(logTypeToString(log.type) + ": " + log.msg)); System.out.println("============================== End of '" + tag + "' logs ==============================\n\n"); }
/** Print all log messages for given tag */ protected void printLogs(String tag) { System.out.println("\n\n============================== Start of '" + tag + "' logs =============================="); ShadowLog.getLogsForTag(tag) .forEach(log -> System.out.println(logTypeToString(log.type) + ": " + log.msg)); System.out.println("============================== End of '" + tag + "' logs ==============================\n\n"); }
private void assertLogcatContains(int level, String errorMessage) { List<ShadowLog.LogItem> logs = ShadowLog.getLogsForTag(LOGGER_NAME); assertThat(logs, is(notNullValue())); assertThat(logcatContains(logs, level, errorMessage), is(true)); }
List<LogItem> logItems = ShadowLog.getLogsForTag("PackageParser"); if (logItems.isEmpty()) { throw new RuntimeException(
List<String> logMessages = ShadowLog.getLogsForTag("PersistentHigh").stream() .map(log -> log.msg) .collect(Collectors.toList());
List<String> logMessages = ShadowLog.getLogsForTag("PersistentHigh").stream() .map(log -> log.msg) .collect(Collectors.toList());