1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
+
5
+ package mozilla.components.tooling.lint
6
+
7
+ import com.android.tools.lint.client.api.JavaEvaluator
8
+ import com.android.tools.lint.detector.api.JavaContext
9
+ import com.intellij.psi.PsiMethod
10
+ import mozilla.components.tooling.lint.LintLogChecks.Companion.ISSUE_LOG_USAGE
11
+ import org.jetbrains.uast.UCallExpression
12
+ import org.jetbrains.uast.UClass
13
+ import org.jetbrains.uast.UIdentifier
14
+ import org.jetbrains.uast.getContainingUClass
15
+ import org.junit.Test
16
+ import org.mockito.Mockito.`when`
17
+ import org.mockito.Mockito.mock
18
+ import org.mockito.Mockito.never
19
+ import org.mockito.Mockito.times
20
+ import org.mockito.Mockito.verify
21
+
22
+ class LintLogChecksTest {
23
+
24
+ @Test
25
+ fun `report log error in components code only` () {
26
+ val evaluator = mock(JavaEvaluator ::class .java)
27
+ val context = mock(JavaContext ::class .java)
28
+ val node = mock(UCallExpression ::class .java)
29
+ val method = mock(PsiMethod ::class .java)
30
+ val methodIdentifier = mock(UIdentifier ::class .java)
31
+ val clazz = mock(UClass ::class .java)
32
+
33
+ `when `(evaluator.isMemberInClass(method, ANDROID_LOG_CLASS )).thenReturn(true )
34
+ `when `(context.evaluator).thenReturn(evaluator)
35
+
36
+ val logCheck = LintLogChecks ()
37
+ logCheck.visitMethod(context, node, method)
38
+ verify(context, never()).report(ISSUE_LOG_USAGE , node, context.getLocation(node), ERROR_MESSAGE )
39
+
40
+ `when `(node.methodIdentifier).thenReturn(methodIdentifier)
41
+ logCheck.visitMethod(context, node, method)
42
+ verify(context, never()).report(ISSUE_LOG_USAGE , node, context.getLocation(node), ERROR_MESSAGE )
43
+
44
+ `when `(methodIdentifier.getContainingUClass()).thenReturn(clazz)
45
+ logCheck.visitMethod(context, node, method)
46
+ verify(context, never()).report(ISSUE_LOG_USAGE , node, context.getLocation(node), ERROR_MESSAGE )
47
+
48
+ `when `(clazz.qualifiedName).thenReturn(" com.some.app.Class" )
49
+ logCheck.visitMethod(context, node, method)
50
+ verify(context, never()).report(ISSUE_LOG_USAGE , node, context.getLocation(node), ERROR_MESSAGE )
51
+
52
+ `when `(clazz.qualifiedName).thenReturn(" mozilla.components.some.Class" )
53
+ logCheck.visitMethod(context, node, method)
54
+ verify(context, times(1 )).report(ISSUE_LOG_USAGE , node, context.getLocation(node), ERROR_MESSAGE )
55
+ }
56
+ }
0 commit comments