1 /* 2 * Copyright 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 @file:Suppress("UnstableApiUsage") 18 19 package androidx.build.lint 20 21 import org.junit.Test 22 import org.junit.runner.RunWith 23 import org.junit.runners.JUnit4 24 25 @RunWith(JUnit4::class) 26 class BanVisibleForTestingParamsTest : 27 AbstractLintDetectorTest( 28 useDetector = BanVisibleForTestingParams(), 29 useIssues = listOf(BanVisibleForTestingParams.ISSUE), 30 stubs = arrayOf(Stubs.VisibleForTesting), 31 ) { 32 33 @Test Detection of @VisibleForTesting usage in Java sourcesnull34 fun `Detection of @VisibleForTesting usage in Java sources`() { 35 val input = 36 arrayOf( 37 javaSample("androidx.VisibleForTestingUsageJava"), 38 ) 39 40 val expected = 41 """ 42 src/androidx/VisibleForTestingUsageJava.java:23: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 43 @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) 44 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45 src/androidx/VisibleForTestingUsageJava.java:26: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 46 @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) 47 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 48 src/androidx/VisibleForTestingUsageJava.java:29: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 49 @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED) 50 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 src/androidx/VisibleForTestingUsageJava.java:32: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 52 @VisibleForTesting(otherwise = VisibleForTesting.NONE) 53 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 4 errors, 0 warnings 55 """ 56 .trimIndent() 57 58 val fixDiffs = 59 """ 60 Fix for src/androidx/VisibleForTestingUsageJava.java line 23: Remove non-default `otherwise` value: 61 @@ -23 +23 62 - @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) 63 + @VisibleForTesting 64 Fix for src/androidx/VisibleForTestingUsageJava.java line 26: Remove @VisibleForTesting annotation: 65 @@ -26 +26 66 - @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) 67 Fix for src/androidx/VisibleForTestingUsageJava.java line 29: Remove @VisibleForTesting annotation: 68 @@ -29 +29 69 - @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED) 70 Fix for src/androidx/VisibleForTestingUsageJava.java line 32: Remove non-default `otherwise` value: 71 @@ -32 +32 72 - @VisibleForTesting(otherwise = VisibleForTesting.NONE) 73 + @VisibleForTesting 74 """ 75 .trimIndent() 76 77 check(*input).expect(expected).expectFixDiffs(fixDiffs) 78 } 79 80 @Test Detection of @VisibleForTesting usage in Kotlin sourcesnull81 fun `Detection of @VisibleForTesting usage in Kotlin sources`() { 82 val input = 83 arrayOf( 84 ktSample("androidx.VisibleForTestingUsageKotlin"), 85 ) 86 87 val expected = 88 """ 89 src/androidx/VisibleForTestingUsageKotlin.kt:26: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 90 @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) fun testMethodPrivate() {} 91 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 92 src/androidx/VisibleForTestingUsageKotlin.kt:28: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 93 @VisibleForTesting(otherwise = VisibleForTesting.Companion.PRIVATE) 94 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 95 src/androidx/VisibleForTestingUsageKotlin.kt:31: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 96 @VisibleForTesting(VisibleForTesting.PRIVATE) fun testMethodValuePrivate() {} 97 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 src/androidx/VisibleForTestingUsageKotlin.kt:33: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 99 @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) 100 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 101 src/androidx/VisibleForTestingUsageKotlin.kt:36: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 102 @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED) fun testMethodProtected() {} 103 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 104 src/androidx/VisibleForTestingUsageKotlin.kt:38: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 105 @VisibleForTesting(otherwise = VisibleForTesting.NONE) fun testMethodPackageNone() {} 106 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 107 src/androidx/VisibleForTestingUsageKotlin.kt:42: Error: Found non-default otherwise value for @VisibleForTesting [UsesNonDefaultVisibleForTesting] 108 @get:VisibleForTesting(NONE) val testPropertyGet = "test" 109 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 110 7 errors, 0 warnings 111 """ 112 .trimIndent() 113 114 val fixDiffs = 115 """ 116 Fix for src/androidx/VisibleForTestingUsageKotlin.kt line 26: Remove non-default `otherwise` value: 117 @@ -26 +26 118 - @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) fun testMethodPrivate() {} 119 + @VisibleForTesting fun testMethodPrivate() {} 120 Fix for src/androidx/VisibleForTestingUsageKotlin.kt line 28: Remove non-default `otherwise` value: 121 @@ -28 +28 122 - @VisibleForTesting(otherwise = VisibleForTesting.Companion.PRIVATE) 123 + @VisibleForTesting 124 Fix for src/androidx/VisibleForTestingUsageKotlin.kt line 31: Remove non-default `otherwise` value: 125 @@ -31 +31 126 - @VisibleForTesting(VisibleForTesting.PRIVATE) fun testMethodValuePrivate() {} 127 + @VisibleForTesting fun testMethodValuePrivate() {} 128 Fix for src/androidx/VisibleForTestingUsageKotlin.kt line 33: Remove @VisibleForTesting annotation: 129 @@ -33 +33 130 - @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) 131 Fix for src/androidx/VisibleForTestingUsageKotlin.kt line 36: Remove @VisibleForTesting annotation: 132 @@ -36 +36 133 - @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED) fun testMethodProtected() {} 134 + fun testMethodProtected() {} 135 Fix for src/androidx/VisibleForTestingUsageKotlin.kt line 38: Remove non-default `otherwise` value: 136 @@ -38 +38 137 - @VisibleForTesting(otherwise = VisibleForTesting.NONE) fun testMethodPackageNone() {} 138 + @VisibleForTesting fun testMethodPackageNone() {} 139 Fix for src/androidx/VisibleForTestingUsageKotlin.kt line 42: Remove non-default `otherwise` value: 140 @@ -42 +42 141 - @get:VisibleForTesting(NONE) val testPropertyGet = "test" 142 + @get:VisibleForTesting val testPropertyGet = "test" 143 """ 144 .trimIndent() 145 146 check(*input).expect(expected).expectFixDiffs(fixDiffs) 147 } 148 } 149