From f12af31281fc730979a0ca9888a525d25b3b788e Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 27 May 2016 16:52:35 +0200 Subject: [PATCH] Prevent DebugLog logs messages when running code under JUnit. --- .../frodo/internal/DebugLog.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/frodo-runtime/src/main/java/com/fernandocejas/frodo/internal/DebugLog.java b/frodo-runtime/src/main/java/com/fernandocejas/frodo/internal/DebugLog.java index 39f80ec..45933a2 100644 --- a/frodo-runtime/src/main/java/com/fernandocejas/frodo/internal/DebugLog.java +++ b/frodo-runtime/src/main/java/com/fernandocejas/frodo/internal/DebugLog.java @@ -1,11 +1,14 @@ package com.fernandocejas.frodo.internal; import android.util.Log; +import java.util.Arrays; +import java.util.List; /** * Wrapper around {@link android.util.Log} */ class DebugLog { + private Boolean runningJUnit; DebugLog() { } @@ -18,6 +21,28 @@ class DebugLog { * @param message The message you would like logged. */ public void log(String tag, String message) { - Log.d(tag, message); + if (!runningJUnit()) + Log.d(tag, message); } + + /** + * Find out if code is running under JUnit. + */ + private boolean runningJUnit() { + if (runningJUnit != null) return runningJUnit; + + StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); + List list = Arrays.asList(stackTrace); + + for (StackTraceElement element : list) { + if (element.getClassName().startsWith("org.junit.")) { + runningJUnit = true; + return runningJUnit; + } + } + + runningJUnit = false; + return runningJUnit; + } + }