From 4fe52c0218d951db4a2d698f50725b45c5929487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20Latorre?= Date: Thu, 27 Feb 2025 15:05:30 +0100 Subject: [PATCH 1/2] ANDROID-15807 Add @IgnoreLoggerazzi annotation to ignore a test --- README.md | 3 +++ .../com/telefonica/loggerazzi/ExampleInstrumentedTest.kt | 6 ++++++ ...erazzi.ExampleInstrumentedTest_testIgnoreLoggerazzi.txt | 2 ++ .../java/com/telefonica/loggerazzi/IgnoreLoggerazzi.kt | 6 ++++++ .../main/java/com/telefonica/loggerazzi/LoggerazziRule.kt | 7 +++++-- 5 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 app/src/androidTestDebug/assets/loggerazzi-golden-files/com.telefonica.loggerazzi.ExampleInstrumentedTest_testIgnoreLoggerazzi.txt create mode 100644 loggerazzi/src/main/java/com/telefonica/loggerazzi/IgnoreLoggerazzi.kt 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..650b684 100644 --- a/app/src/androidTest/java/com/telefonica/loggerazzi/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/com/telefonica/loggerazzi/ExampleInstrumentedTest.kt @@ -39,6 +39,12 @@ class ExampleInstrumentedTest { fun testEmpty() { // Empty, just to test empty logs comparation. } + + @Test + @IgnoreLoggerazzi + fun testIgnoreLoggerazzi() { + 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" From 43393e8509cced0af58b0b8bd8665bd20cc5cbef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20Latorre?= Date: Thu, 27 Feb 2025 15:32:29 +0100 Subject: [PATCH 2/2] Add new test to check no golden file --- .../com/telefonica/loggerazzi/ExampleInstrumentedTest.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/androidTest/java/com/telefonica/loggerazzi/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/telefonica/loggerazzi/ExampleInstrumentedTest.kt index 650b684..1c1d8fb 100644 --- a/app/src/androidTest/java/com/telefonica/loggerazzi/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/com/telefonica/loggerazzi/ExampleInstrumentedTest.kt @@ -45,6 +45,12 @@ class ExampleInstrumentedTest { fun testIgnoreLoggerazzi() { recorder.record("My log") } + + @Test + @IgnoreLoggerazzi + fun testIgnoreLoggerazziWithoutGoldenFile() { + recorder.record("My log") + } } class FakeTestRecorder: LogsRecorder {