Package com.google.common.truth
Class StackTraceCleaner
- java.lang.Object
-
- com.google.common.truth.StackTraceCleaner
-
final class StackTraceCleaner extends java.lang.Object
Utility that cleans stack traces to remove noise from common frameworks.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
StackTraceCleaner.StackFrameType
Enum of the package or class-name based categories of stack frames that might be removed or collapsed by the cleaner.private static class
StackTraceCleaner.StackTraceElementWrapper
Wrapper around aStackTraceElement
for calculating and holding the metadata used to clean the stack trace.
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<StackTraceCleaner.StackTraceElementWrapper>
cleanedStackTrace
(package private) static java.lang.String
CLEANER_LINK
private int
currentStreakLength
private StackTraceCleaner.StackFrameType
currentStreakType
private static com.google.common.collect.ImmutableSet<java.lang.Class<?>>
JUNIT_INFRASTRUCTURE_CLASSES
private StackTraceCleaner.StackTraceElementWrapper
lastStackFrameElementWrapper
private static com.google.common.collect.ImmutableSet<java.lang.Class<?>>
STANDARD_SUBJECT_BUILDER_CLASS
private static com.google.common.collect.ImmutableSet<java.lang.Class<?>>
SUBJECT_CLASS
private java.lang.Throwable
throwable
-
Constructor Summary
Constructors Modifier Constructor Description private
StackTraceCleaner(java.lang.Throwable throwable)
A new instance is instantiated for each throwable to be cleaned.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addToStreak(StackTraceCleaner.StackTraceElementWrapper stackTraceElementWrapper)
Either adds the given frame to the running streak or closes out the running streak and starts a new one.private void
clean(java.util.Set<java.lang.Throwable> seenThrowables)
Cleans the stack trace onthrowable
, replacing the trace that was originally on it.(package private) static void
cleanStackTrace(java.lang.Throwable throwable)
CallPlatform.cleanStackTrace(java.lang.Throwable)
rather than calling this directly.private void
clearStreak()
Resets the streak counter.private static StackTraceCleaner.StackTraceElementWrapper
createStreakReplacementFrame(StackTraceCleaner.StackFrameType stackFrameType, int length)
private void
endStreak()
Ends the current streak, adding a summary frame to the result.private static boolean
isFromClassDirectly(java.lang.StackTraceElement stackTraceElement, com.google.common.collect.ImmutableSet<java.lang.Class<?>> recognizedClasses)
private static boolean
isFromClassOrClassNestedInside(java.lang.StackTraceElement stackTraceElement, com.google.common.collect.ImmutableSet<java.lang.Class<?>> recognizedClasses)
private static boolean
isJUnitIntrastructure(java.lang.StackTraceElement stackTraceElement)
private static boolean
isStackTraceCleaningDisabled()
Returns true if stack trace cleaning is explicitly disabled in a system property.private static boolean
isTruthEntrance(java.lang.StackTraceElement stackTraceElement)
private static java.lang.Class<?>
loadClass(java.lang.String name)
-
-
-
Field Detail
-
CLEANER_LINK
static final java.lang.String CLEANER_LINK
- See Also:
- Constant Field Values
-
throwable
private final java.lang.Throwable throwable
-
cleanedStackTrace
private final java.util.List<StackTraceCleaner.StackTraceElementWrapper> cleanedStackTrace
-
lastStackFrameElementWrapper
private StackTraceCleaner.StackTraceElementWrapper lastStackFrameElementWrapper
-
currentStreakType
private StackTraceCleaner.StackFrameType currentStreakType
-
currentStreakLength
private int currentStreakLength
-
SUBJECT_CLASS
private static final com.google.common.collect.ImmutableSet<java.lang.Class<?>> SUBJECT_CLASS
-
STANDARD_SUBJECT_BUILDER_CLASS
private static final com.google.common.collect.ImmutableSet<java.lang.Class<?>> STANDARD_SUBJECT_BUILDER_CLASS
-
JUNIT_INFRASTRUCTURE_CLASSES
private static final com.google.common.collect.ImmutableSet<java.lang.Class<?>> JUNIT_INFRASTRUCTURE_CLASSES
-
-
Method Detail
-
cleanStackTrace
static void cleanStackTrace(java.lang.Throwable throwable)
CallPlatform.cleanStackTrace(java.lang.Throwable)
rather than calling this directly.Cleans the stack trace on the given
Throwable
, replacing the original stack trace stored on the instance (seeThrowable.setStackTrace(StackTraceElement[])
).Removes Truth stack frames from the top and JUnit framework and reflective call frames from the bottom. Collapses the frames for various frameworks in the middle of the trace as well.
-
clean
private void clean(java.util.Set<java.lang.Throwable> seenThrowables)
Cleans the stack trace onthrowable
, replacing the trace that was originally on it.
-
addToStreak
private void addToStreak(StackTraceCleaner.StackTraceElementWrapper stackTraceElementWrapper)
Either adds the given frame to the running streak or closes out the running streak and starts a new one.
-
endStreak
private void endStreak()
Ends the current streak, adding a summary frame to the result. Resets the streak counter.
-
clearStreak
private void clearStreak()
Resets the streak counter.
-
isTruthEntrance
private static boolean isTruthEntrance(java.lang.StackTraceElement stackTraceElement)
-
isJUnitIntrastructure
private static boolean isJUnitIntrastructure(java.lang.StackTraceElement stackTraceElement)
-
isFromClassOrClassNestedInside
private static boolean isFromClassOrClassNestedInside(java.lang.StackTraceElement stackTraceElement, com.google.common.collect.ImmutableSet<java.lang.Class<?>> recognizedClasses)
-
isFromClassDirectly
private static boolean isFromClassDirectly(java.lang.StackTraceElement stackTraceElement, com.google.common.collect.ImmutableSet<java.lang.Class<?>> recognizedClasses)
-
loadClass
private static java.lang.Class<?> loadClass(java.lang.String name) throws java.lang.ClassNotFoundException
- Throws:
java.lang.ClassNotFoundException
-
createStreakReplacementFrame
private static StackTraceCleaner.StackTraceElementWrapper createStreakReplacementFrame(StackTraceCleaner.StackFrameType stackFrameType, int length)
-
isStackTraceCleaningDisabled
private static boolean isStackTraceCleaningDisabled()
Returns true if stack trace cleaning is explicitly disabled in a system property. This switch is intended to be used when attempting to debug the frameworks which are collapsed or filtered out of stack traces by the cleaner.
-
-