Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 1 | /* |
| 2 | * Copyright 2018 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 | |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 17 | @file:Suppress("UnstableApiUsage") |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 18 | |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 19 | package androidx.build.lint |
Jeff Gaston | 8fd9fc8 | 2019-07-26 14:26:10 -0400 | [diff] [blame] | 20 | |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 21 | import org.junit.Ignore |
| 22 | import org.junit.Test |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 23 | import org.junit.runner.RunWith |
| 24 | import org.junit.runners.JUnit4 |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 25 | |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 26 | @RunWith(JUnit4::class) |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 27 | class ObsoleteBuildCompatUsageDetectorTest : |
| 28 | AbstractLintDetectorTest( |
| 29 | useDetector = ObsoleteBuildCompatUsageDetector(), |
| 30 | useIssues = listOf(ObsoleteBuildCompatUsageDetector.ISSUE), |
| 31 | stubs = arrayOf(BuildCompat), |
| 32 | ) { |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 33 | |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 34 | @Test |
Julia McClellan | f2f07aa | 2022-06-09 10:08:09 -0400 | [diff] [blame] | 35 | @Ignore("ANDROID_HOME not available on CI") |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 36 | fun isAtLeastN() { |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 37 | val input = |
| 38 | java( |
| 39 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 40 | package foo; |
| 41 | import androidx.core.os.BuildCompat; |
| 42 | public class Example { |
| 43 | public static void main(String... args) { |
| 44 | if (BuildCompat.isAtLeastN()) { |
| 45 | System.out.println("Hey"); |
| 46 | } |
| 47 | } |
| 48 | } |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 49 | """ |
| 50 | .trimIndent() |
| 51 | ) |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 52 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 53 | val expected = |
| 54 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 55 | src/foo/Example.java:5: Error: Using deprecated BuildCompat methods [ObsoleteBuildCompat] |
| 56 | if (BuildCompat.isAtLeastN()) { |
| 57 | ~~~~~~~~~~~~~~~~~~~~~~~~ |
| 58 | 1 errors, 0 warnings |
| 59 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 60 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 61 | val expectedDiff = |
| 62 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 63 | Fix for src/foo/Example.java line 5: Use SDK_INT >= 24: |
| 64 | @@ -5 +5 |
| 65 | - if (BuildCompat.isAtLeastN()) { |
| 66 | + if (Build.VERSION.SDK_INT >= 24) { |
| 67 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 68 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 69 | check(input).expect(expected.trimIndent()).expectFixDiffs(expectedDiff.trimIndent()) |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 70 | } |
| 71 | |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 72 | @Test |
Julia McClellan | f2f07aa | 2022-06-09 10:08:09 -0400 | [diff] [blame] | 73 | @Ignore("ANDROID_HOME not available on CI") |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 74 | fun isAtLeastNStaticImport() { |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 75 | val input = |
| 76 | java( |
| 77 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 78 | package foo; |
| 79 | import static androidx.core.os.BuildCompat.isAtLeastN; |
| 80 | public class Example { |
| 81 | public static void main(String... args) { |
| 82 | if (isAtLeastN()) { |
| 83 | System.out.println("Hey"); |
| 84 | } |
| 85 | } |
| 86 | } |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 87 | """ |
| 88 | .trimIndent() |
| 89 | ) |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 90 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 91 | val expected = |
| 92 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 93 | src/foo/Example.java:5: Error: Using deprecated BuildCompat methods [ObsoleteBuildCompat] |
| 94 | if (isAtLeastN()) { |
| 95 | ~~~~~~~~~~~~ |
| 96 | 1 errors, 0 warnings |
| 97 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 98 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 99 | val expectedDiff = |
| 100 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 101 | Fix for src/foo/Example.java line 5: Use SDK_INT >= 24: |
| 102 | @@ -5 +5 |
| 103 | - if (isAtLeastN()) { |
| 104 | + if (Build.VERSION.SDK_INT >= 24) { |
| 105 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 106 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 107 | check(input).expect(expected.trimIndent()).expectFixDiffs(expectedDiff.trimIndent()) |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 108 | } |
| 109 | |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 110 | @Test |
Julia McClellan | f2f07aa | 2022-06-09 10:08:09 -0400 | [diff] [blame] | 111 | @Ignore("ANDROID_HOME not available on CI") |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 112 | fun isAtLeastNMR1() { |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 113 | val input = |
| 114 | java( |
| 115 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 116 | package foo; |
| 117 | import androidx.core.os.BuildCompat; |
| 118 | public class Example { |
| 119 | public static void main(String... args) { |
| 120 | if (BuildCompat.isAtLeastNMR1()) { |
| 121 | System.out.println("Hey"); |
| 122 | } |
| 123 | } |
| 124 | } |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 125 | """ |
| 126 | .trimIndent() |
| 127 | ) |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 128 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 129 | val expected = |
| 130 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 131 | src/foo/Example.java:5: Error: Using deprecated BuildCompat methods [ObsoleteBuildCompat] |
| 132 | if (BuildCompat.isAtLeastNMR1()) { |
| 133 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 134 | 1 errors, 0 warnings |
| 135 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 136 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 137 | val expectedDiff = |
| 138 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 139 | Fix for src/foo/Example.java line 5: Use SDK_INT >= 25: |
| 140 | @@ -5 +5 |
| 141 | - if (BuildCompat.isAtLeastNMR1()) { |
| 142 | + if (Build.VERSION.SDK_INT >= 25) { |
| 143 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 144 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 145 | check(input).expect(expected.trimIndent()).expectFixDiffs(expectedDiff.trimIndent()) |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 146 | } |
| 147 | |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 148 | @Test |
Julia McClellan | f2f07aa | 2022-06-09 10:08:09 -0400 | [diff] [blame] | 149 | @Ignore("ANDROID_HOME not available on CI") |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 150 | fun isAtLeastO() { |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 151 | val input = |
| 152 | java( |
| 153 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 154 | package foo; |
| 155 | import androidx.core.os.BuildCompat; |
| 156 | public class Example { |
| 157 | public static void main(String... args) { |
| 158 | if (BuildCompat.isAtLeastO()) { |
| 159 | System.out.println("Hey"); |
| 160 | } |
| 161 | } |
| 162 | } |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 163 | """ |
| 164 | .trimIndent() |
| 165 | ) |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 166 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 167 | val expected = |
| 168 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 169 | src/foo/Example.java:5: Error: Using deprecated BuildCompat methods [ObsoleteBuildCompat] |
| 170 | if (BuildCompat.isAtLeastO()) { |
| 171 | ~~~~~~~~~~~~~~~~~~~~~~~~ |
| 172 | 1 errors, 0 warnings |
| 173 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 174 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 175 | val expectedDiff = |
| 176 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 177 | Fix for src/foo/Example.java line 5: Use SDK_INT >= 26: |
| 178 | @@ -5 +5 |
| 179 | - if (BuildCompat.isAtLeastO()) { |
| 180 | + if (Build.VERSION.SDK_INT >= 26) { |
| 181 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 182 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 183 | check(input).expect(expected.trimIndent()).expectFixDiffs(expectedDiff.trimIndent()) |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 184 | } |
| 185 | |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 186 | @Test |
Julia McClellan | f2f07aa | 2022-06-09 10:08:09 -0400 | [diff] [blame] | 187 | @Ignore("ANDROID_HOME not available on CI") |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 188 | fun isAtLeastOMR1() { |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 189 | val input = |
| 190 | java( |
| 191 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 192 | package foo; |
| 193 | import androidx.core.os.BuildCompat; |
| 194 | public class Example { |
| 195 | public static void main(String... args) { |
| 196 | if (BuildCompat.isAtLeastOMR1()) { |
| 197 | System.out.println("Hey"); |
| 198 | } |
| 199 | } |
| 200 | } |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 201 | """ |
| 202 | .trimIndent() |
| 203 | ) |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 204 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 205 | val expected = |
| 206 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 207 | src/foo/Example.java:5: Error: Using deprecated BuildCompat methods [ObsoleteBuildCompat] |
| 208 | if (BuildCompat.isAtLeastOMR1()) { |
| 209 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 210 | 1 errors, 0 warnings |
| 211 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 212 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 213 | val expectedDiff = |
| 214 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 215 | Fix for src/foo/Example.java line 5: Use SDK_INT >= 27: |
| 216 | @@ -5 +5 |
| 217 | - if (BuildCompat.isAtLeastOMR1()) { |
| 218 | + if (Build.VERSION.SDK_INT >= 27) { |
| 219 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 220 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 221 | check(input).expect(expected.trimIndent()).expectFixDiffs(expectedDiff.trimIndent()) |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 222 | } |
| 223 | |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 224 | @Test |
Julia McClellan | f2f07aa | 2022-06-09 10:08:09 -0400 | [diff] [blame] | 225 | @Ignore("ANDROID_HOME not available on CI") |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 226 | fun isAtLeastP() { |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 227 | val input = |
| 228 | java( |
| 229 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 230 | package foo; |
| 231 | import androidx.core.os.BuildCompat; |
| 232 | public class Example { |
| 233 | public static void main(String... args) { |
| 234 | if (BuildCompat.isAtLeastP()) { |
| 235 | System.out.println("Hey"); |
| 236 | } |
| 237 | } |
| 238 | } |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 239 | """ |
| 240 | .trimIndent() |
| 241 | ) |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 242 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 243 | val expected = |
| 244 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 245 | src/foo/Example.java:5: Error: Using deprecated BuildCompat methods [ObsoleteBuildCompat] |
| 246 | if (BuildCompat.isAtLeastP()) { |
| 247 | ~~~~~~~~~~~~~~~~~~~~~~~~ |
| 248 | 1 errors, 0 warnings |
| 249 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 250 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 251 | val expectedDiff = |
| 252 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 253 | Fix for src/foo/Example.java line 5: Use SDK_INT >= 28: |
| 254 | @@ -5 +5 |
| 255 | - if (BuildCompat.isAtLeastP()) { |
| 256 | + if (Build.VERSION.SDK_INT >= 28) { |
| 257 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 258 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 259 | check(input).expect(expected.trimIndent()).expectFixDiffs(expectedDiff.trimIndent()) |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 260 | } |
| 261 | |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 262 | @Test |
Julia McClellan | f2f07aa | 2022-06-09 10:08:09 -0400 | [diff] [blame] | 263 | @Ignore("ANDROID_HOME not available on CI") |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 264 | fun isAtLeastQ() { |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 265 | val input = |
| 266 | java( |
| 267 | """ |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 268 | package foo; |
| 269 | import androidx.core.os.BuildCompat; |
| 270 | public class Example { |
| 271 | public static void main(String... args) { |
| 272 | if (BuildCompat.isAtLeastQ()) { |
| 273 | System.out.println("Hey"); |
| 274 | } |
| 275 | } |
| 276 | } |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 277 | """ |
| 278 | .trimIndent() |
| 279 | ) |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 280 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 281 | val expected = |
| 282 | """ |
Clara Bayarri | d20f2c1 | 2019-04-29 15:04:04 +0100 | [diff] [blame] | 283 | src/foo/Example.java:5: Error: Using deprecated BuildCompat methods [ObsoleteBuildCompat] |
| 284 | if (BuildCompat.isAtLeastQ()) { |
| 285 | ~~~~~~~~~~~~~~~~~~~~~~~~ |
| 286 | 1 errors, 0 warnings |
| 287 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 288 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 289 | val expectedDiff = |
| 290 | """ |
Clara Bayarri | d20f2c1 | 2019-04-29 15:04:04 +0100 | [diff] [blame] | 291 | Fix for src/foo/Example.java line 5: Use SDK_INT >= 29: |
| 292 | @@ -5 +5 |
| 293 | - if (BuildCompat.isAtLeastQ()) { |
| 294 | + if (Build.VERSION.SDK_INT >= 29) { |
| 295 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 296 | |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 297 | check(input).expect(expected.trimIndent()).expectFixDiffs(expectedDiff.trimIndent()) |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 298 | } |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 299 | |
| 300 | companion object { |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 301 | private val BuildCompat = |
| 302 | java( |
| 303 | """ |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 304 | package androidx.core.os; |
| 305 | public class BuildCompat { |
| 306 | public static boolean isAtLeastN() { return false; } |
| 307 | public static boolean isAtLeastNMR1() { return false; } |
| 308 | public static boolean isAtLeastO() { return false; } |
| 309 | public static boolean isAtLeastOMR1() { return false; } |
| 310 | public static boolean isAtLeastP() { return false; } |
| 311 | public static boolean isAtLeastQ() { return false; } |
| 312 | } |
Omar Ismail | edf734f | 2024-05-28 12:34:57 +0100 | [diff] [blame] | 313 | """ |
| 314 | .trimIndent() |
| 315 | ) |
Alan Viverette | b71ec7b | 2021-05-13 17:37:57 -0400 | [diff] [blame] | 316 | } |
Jake Wharton | a0576c3 | 2018-07-27 13:09:42 -0400 | [diff] [blame] | 317 | } |