diff --git a/README.md b/README.md index d7cf093..a2a72dc 100644 --- a/README.md +++ b/README.md @@ -136,3 +136,6 @@ class FakeAnalyticsTracker : AnalyticsTracker, LogsRecorder { By default, Loggerazzi rule compares recorded logs by ensuring these are equal and in same order than the baseline logs. In case a different comparation mechanism is needed (such as ignoring the order of the events, or ignoring certain logs), you can implement an specific [LogComparator](loggerazzi/src/main/java/com/telefonica/loggerazzi/LogComparator.kt), which can be provided to the LoggerazziRule on its creation. + +### Ignore a test +If you want to ignore a test from Loggerazzi verification, you can use the `@IgnoreLoggerazzi` annotation in your test. diff --git a/app/src/androidTest/java/com/telefonica/loggerazzi/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/telefonica/loggerazzi/ExampleInstrumentedTest.kt index efcf974..1c1d8fb 100644 --- a/app/src/androidTest/java/com/telefonica/loggerazzi/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/com/telefonica/loggerazzi/ExampleInstrumentedTest.kt @@ -39,6 +39,18 @@ class ExampleInstrumentedTest { fun testEmpty() { // Empty, just to test empty logs comparation. } + + @Test + @IgnoreLoggerazzi + fun testIgnoreLoggerazzi() { + recorder.record("My log") + } + + @Test + @IgnoreLoggerazzi + fun testIgnoreLoggerazziWithoutGoldenFile() { + recorder.record("My log") + } } class FakeTestRecorder: LogsRecorder { diff --git a/app/src/androidTestDebug/assets/loggerazzi-golden-files/com.telefonica.loggerazzi.ExampleInstrumentedTest_testIgnoreLoggerazzi.txt b/app/src/androidTestDebug/assets/loggerazzi-golden-files/com.telefonica.loggerazzi.ExampleInstrumentedTest_testIgnoreLoggerazzi.txt new file mode 100644 index 0000000..1f6b625 --- /dev/null +++ b/app/src/androidTestDebug/assets/loggerazzi-golden-files/com.telefonica.loggerazzi.ExampleInstrumentedTest_testIgnoreLoggerazzi.txt @@ -0,0 +1,2 @@ +My log +My second log \ No newline at end of file diff --git a/loggerazzi/src/main/java/com/telefonica/loggerazzi/IgnoreLoggerazzi.kt b/loggerazzi/src/main/java/com/telefonica/loggerazzi/IgnoreLoggerazzi.kt new file mode 100644 index 0000000..f8cab24 --- /dev/null +++ b/loggerazzi/src/main/java/com/telefonica/loggerazzi/IgnoreLoggerazzi.kt @@ -0,0 +1,6 @@ +package com.telefonica.loggerazzi + + +@Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.FUNCTION) +annotation class IgnoreLoggerazzi diff --git a/loggerazzi/src/main/java/com/telefonica/loggerazzi/LoggerazziRule.kt b/loggerazzi/src/main/java/com/telefonica/loggerazzi/LoggerazziRule.kt index 145a1b7..9a988d8 100644 --- a/loggerazzi/src/main/java/com/telefonica/loggerazzi/LoggerazziRule.kt +++ b/loggerazzi/src/main/java/com/telefonica/loggerazzi/LoggerazziRule.kt @@ -9,7 +9,7 @@ import java.io.File class LoggerazziRule( recorder: LogsRecorder, comparator: LogComparator = DefaultLogComparator(), -): GenericLoggerazziRule( +) : GenericLoggerazziRule( recorder = recorder, stringMapper = object : StringMapper { override fun fromLog(log: String): String = log @@ -17,6 +17,7 @@ class LoggerazziRule( }, comparator = comparator, ) + open class GenericLoggerazziRule( val recorder: LogsRecorder, private val stringMapper: StringMapper, @@ -47,6 +48,8 @@ open class GenericLoggerazziRule( override fun succeeded(description: Description?) { super.succeeded(description) + val isTestIgnored = description?.getAnnotation(IgnoreLoggerazzi::class.java) != null + val testName = "${description?.className}_${description?.methodName}" val fileName = "${testName}.${System.nanoTime()}" @@ -56,7 +59,7 @@ open class GenericLoggerazziRule( testFile.createNewFile() testFile.writeText(log) - if (InstrumentationRegistry.getArguments().getString("record") != "true") { + if (InstrumentationRegistry.getArguments().getString("record") != "true" && !isTestIgnored) { val goldenFile = InstrumentationRegistry.getInstrumentation().context.assets.open( "loggerazzi-golden-files/${testName}.txt"