blob: 4c80155e6f9215a56a1117397ff1fdc0e1e04683 [file] [log] [blame]
/*
* Copyright 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import androidx.build.BuildOnServerKt
import androidx.build.uptodatedness.EnableCachingKt
import org.apache.tools.ant.filters.ReplaceTokens
plugins {
id("AndroidXPlugin")
id("com.android.library")
}
dependencies {
implementation("androidx.annotation:annotation:1.0.0")
}
androidx {
name = "Lint Checks Integration Tests"
description = "This is a sample library for confirming that lint checks execute correctly, b/177437928"
}
android {
lintOptions {
// lint is supposed to detect errors in this project
// We don't need to see the errors in stdout
textOutput("${buildDir}/lint-output.txt")
// We don't want errors to cause lint to fail
abortOnError false
}
}
class CompareFilesTask extends DefaultTask {
@InputFile
File actualFile
@InputFile
File expectedFile
@TaskAction
def compare() {
def actualResults = actualFile.text
def expectedResults = expectedFile.text
if (actualResults != expectedResults) {
throw new GradleException("Incorrect lint results.\n" +
"\n" +
"Actual text: '" + actualResults + "'\n" +
"\n" +
"Expected text: '" + expectedResults + "'\n" +
"\n" +
"Are all lint checks running?\n" +
"\n" +
"Actual output at: " + actualFile + "\n" +
"Expected output at: " + expectedFile + "\n")
}
}
}
def lintOutputFile = project.file("${buildDir}/reports/lint-results-debug.xml")
def lintOutputFileNormalized = project.file("${buildDir}/lint-results-normalized/lint-results-debug.xml.normalized")
def normalizeLintOutput = tasks.register("normalizeLintOutput", Copy) {
from(lintOutputFile) {
filter { line ->
return line.replace("${project.rootProject.projectDir}", "\$SUPPORT")
}
}
into(lintOutputFileNormalized.parentFile)
rename(".*", lintOutputFileNormalized.name)
dependsOn("lintDebug")
}
def validateLint = tasks.register("validateLint", CompareFilesTask) { task ->
task.actualFile = lintOutputFileNormalized
task.expectedFile = project.file("expected-lint-results.xml")
EnableCachingKt.cacheEvenIfNoOutputs(task)
dependsOn(normalizeLintOutput)
}
BuildOnServerKt.addToBuildOnServer(project, validateLint)