<lambda>null1 package leakcanary
2 
3 import org.assertj.core.api.Assertions.assertThat
4 import org.junit.Rule
5 import org.junit.Test
6 import org.junit.rules.RuleChain
7 import org.junit.rules.TestRule
8 import org.junit.runner.Description
9 import org.junit.runners.model.Statement
10 
11 class DetectLeaksAfterTestSuccessTest {
12 
13   object CheckAssertNoLeaksInvoked : TestRule {
14     override fun apply(base: Statement, description: Description): Statement {
15       return object : Statement() {
16         override fun evaluate() {
17           try {
18             var assertNoLeaksInvoked = false
19             DetectLeaksAssert.update { tag ->
20               assertNoLeaksInvoked = true
21             }
22             base.evaluate()
23             assertThat(assertNoLeaksInvoked).isTrue()
24           } finally {
25             DetectLeaksAssert.update(AndroidDetectLeaksAssert())
26           }
27         }
28       }
29     }
30   }
31 
32   @get:Rule
33   val rule: RuleChain = RuleChain.outerRule(CheckAssertNoLeaksInvoked).around(DetectLeaksAfterTestSuccess())
34 
35   @Test fun emptyTest() {
36     // This test triggers the rules.
37   }
38 }
39