Skip to content

Commit

Permalink
fix win tests;
Browse files Browse the repository at this point in the history
add small diff for large strings in testst to simplify win errors resolution
xvik committed Jan 21, 2025
1 parent a51785b commit 34aa748
Showing 20 changed files with 97 additions and 27 deletions.
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -38,6 +38,7 @@ dependencies {
compileOnly 'com.android.tools.build:gradle:7.4.0'
compileOnly 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21'

testImplementation 'io.github.java-diff-utils:java-diff-utils:4.15'
testImplementation('org.spockframework:spock-core:2.3-groovy-3.0') {
exclude group: 'org.codehaus.groovy'
}
Original file line number Diff line number Diff line change
@@ -245,7 +245,7 @@ class PrintAnimalsnifferSourceInfoTask extends DefaultTask {
println title(shift, msg)
notCoveredByKotlin.each {
println String.format(buildPrefix(shift + 1) + '%-70s (%s)',
it.canonicalPath.replace(getRootPath(rootProjectDir), ''), kotlinIdx[it])
it.canonicalPath.replace(getRootPath(rootProjectDir), '').replace('\\', '/'), kotlinIdx[it])
}
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package ru.vyarus.gradle.plugin.animalsniffer

import com.github.difflib.text.DiffRow
import com.github.difflib.text.DiffRowGenerator
import org.apache.tools.ant.taskdefs.condition.Os
import org.gradle.testkit.runner.BuildResult
import org.gradle.testkit.runner.GradleRunner
import spock.lang.Specification
import spock.lang.TempDir

import java.util.function.Function

/**
* Base class for Gradle TestKit based tests.
* Useful for full-cycle and files manipulation testing.
@@ -99,6 +103,71 @@ abstract class AbstractKitTest extends Specification {
runner
}

public static final String RESET = '\u001B[0m'
public static final String RED = '\u001B[31m'
public static final String GREEN = '\u001B[32m'
public static final String YELLOW = '\u001B[33m'
public static final String BLUE = '\u001B[34m'
public static final String PURPLE = '\u001B[35m'
public static final String CYAN = '\u001B[36m'

private static final String NL = '\n'

protected boolean equalWithDiff(String expected, String actual) {
List<String> original = Arrays.asList(expected.split(NL))
List<String> revised = Arrays.asList(actual.split(NL))

final String plus = '+'
final String minus = '-'

DiffRowGenerator generator = DiffRowGenerator.create()
.showInlineDiffs(true)
.mergeOriginalRevised(true)
.ignoreWhiteSpaces(true)
.inlineDiffByWord(true)
.lineNormalizer { it } // to disable html escapes
.equalizer(DiffRowGenerator.IGNORE_WHITESPACE_EQUALIZER)
.oldTag({ it ? minus + RED : RESET + minus } as Function<Boolean, String>)
.newTag({ it ? plus + GREEN : RESET + plus } as Function<Boolean, String>)
.build()
List<DiffRow> rows = generator.generateDiffRows(original, revised)
List<Integer> showRows = []
int last = -1
for (int i = 0; i < rows.size(); i++) {
DiffRow row = rows.get(i)
if (DiffRow.Tag.EQUAL != row.tag) {
// show 2 rows before
int prev = Math.max(last + 1, i - 2)
for (int j = prev; j <= i; j++) {
showRows.add(j)
}
last = i
}
}

StringBuilder res = new StringBuilder()
int prev = -1
for (int i : showRows) {
DiffRow row = rows.get(i)
if (prev > 0 && prev != i - 1) {
// between blocks
res.append(NL)
}
res.append(String.format('%4s | ', i)).append(row.oldLine).append(NL)
prev = i
}

if (!res.empty) {
println "\n!!!!!!!!! Strings difference: \n\n" + res.toString()
}

return res.empty
}

protected String unifyStringLinSlashes(String input) {
return unifyString(input).replace('\\', '/')
}

protected String unifyString(String input) {
return input
// cleanup win line break for simpler comparisons
Original file line number Diff line number Diff line change
@@ -48,7 +48,7 @@ class UpstreamDebugOptionConfigurationCacheKitTest extends AbstractAndroidKitTes
then: "task successful"
result.task(':animalsnifferMain').outcome == TaskOutcome.SUCCESS
result.output.contains('2 AnimalSniffer violations were found in 1 files')
result.output.replace('\r', '').contains('\tsignatures:\n' +
unifyStringLinSlashes(result.output).contains('\tsignatures:\n' +
'\t\tjava16-sun-1.0.signature\n' +
'\n' +
'\tsources:\n' +
@@ -134,7 +134,7 @@ class UpstreamDebugOptionConfigurationCacheKitTest extends AbstractAndroidKitTes
result.task(':animalsnifferDebug').outcome == TaskOutcome.SUCCESS
result.task(':animalsnifferRelease').outcome == TaskOutcome.SUCCESS
result.output.contains('3 AnimalSniffer violations were found in 2 files')
result.output.replace('\r', '').contains('signatures:\n' +
unifyStringLinSlashes(result.output).contains('signatures:\n' +
'\t\tjava18-1.0.signature\n' +
'\t\tandroid-api-level-21-5.0.1_r2.signature\n' +
'\n' +
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ import ru.vyarus.gradle.plugin.animalsniffer.android.AbstractAndroidKitTest
abstract class AbstractDebugKitTest extends AbstractAndroidKitTest {

String extractReport(BuildResult result) {
String out = result.output.toString().replaceAll('\r', '')
String out = result.output
int idx = out.indexOf('== [')
if (idx > 0) {
out = out.substring(idx)
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@ class GroovySourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "report validation (no special groovy treatment)"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}
}
Original file line number Diff line number Diff line change
@@ -52,7 +52,7 @@ class JavaModifiedSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "report validation"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}
}
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@ class JavaSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "report validation"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}

@@ -74,7 +74,7 @@ class JavaSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "report validation"
extractReport(result) == readReport("lib")
equalWithDiff(extractReport(result), readReport("lib"))
!result.output.contains('WARN:')
}
}
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ class KotlinSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "report validation"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}
}
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@ class ScalaSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "report validation"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}
}
Original file line number Diff line number Diff line change
@@ -67,7 +67,7 @@ class AndroidAppJavaSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "report validation"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}
}
Original file line number Diff line number Diff line change
@@ -70,7 +70,7 @@ class AndroidAppKotlinSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "report validation"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}
}
Original file line number Diff line number Diff line change
@@ -65,7 +65,7 @@ class AndroidLibJavaSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "report validation"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}

Original file line number Diff line number Diff line change
@@ -66,7 +66,7 @@ class AndroidLibKotlinSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "report validation"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}

Original file line number Diff line number Diff line change
@@ -224,7 +224,7 @@ io.ktor.development=true
then: "validate shared report"
def report = extractReport(result)
report == readReport('shared')
equalWithDiff(report, readReport('shared'))
!result.output.contains('WARN:')
@@ -235,7 +235,7 @@ io.ktor.development=true
result.task(':server:printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS
then: "validate server report"
extractReport(result) == readReport('server')
equalWithDiff(extractReport(result), readReport('server'))
!result.output.contains('WARN:')
@@ -246,7 +246,7 @@ io.ktor.development=true
result.task(':composeApp:printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS
then: "validate compose report"
extractReport(result) == readReport('composeApp')
equalWithDiff(extractReport(result), readReport('composeApp'))
!result.output.contains('WARN:')
}
}
Original file line number Diff line number Diff line change
@@ -82,7 +82,7 @@ class MultiplatformAndroidAppSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "validate report"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}

Original file line number Diff line number Diff line change
@@ -80,7 +80,7 @@ class MultiplatformAndroidLibSourcesDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "validate report"
extractReport(result) == readReport("repo")
equalWithDiff(extractReport(result), readReport("repo"))
!result.output.contains('WARN:')
}
}
Original file line number Diff line number Diff line change
@@ -49,7 +49,7 @@ class MultiplatformDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "validate report"
extractReport(result) == readReport("nojava")
equalWithDiff(extractReport(result), readReport("nojava"))
!result.output.contains('WARN:')
}

@@ -89,7 +89,7 @@ class MultiplatformDebugKitTest extends AbstractDebugKitTest {
result.task(':printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS

then: "validate report"
extractReport(result) == readReport("java")
equalWithDiff(extractReport(result), readReport("java"))
!result.output.contains('WARN:')
}

Original file line number Diff line number Diff line change
@@ -210,7 +210,7 @@ io.ktor.development=true
then: "validate shared report"
def report = extractReport(result)
report == readReport('shared')
equalWithDiff(report, readReport('shared'))
!result.output.contains('WARN:')
@@ -221,7 +221,7 @@ io.ktor.development=true
result.task(':server:printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS
then: "validate server report"
extractReport(result) == readReport('server')
equalWithDiff(extractReport(result), readReport('server'))
!result.output.contains('WARN:')
@@ -232,7 +232,7 @@ io.ktor.development=true
result.task(':composeApp:printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS
then: "validate compose report"
extractReport(result) == readReport('composeApp')
equalWithDiff(extractReport(result), readReport('composeApp'))
!result.output.contains('WARN:')
}
}
Original file line number Diff line number Diff line change
@@ -134,7 +134,7 @@ compose.desktop {
result.task(':shared:printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS
then: "validate shared report"
extractReport(result) == readReport("shared")
equalWithDiff(extractReport(result), readReport("shared"))
!result.output.contains('WARN:')
@@ -145,7 +145,7 @@ compose.desktop {
result.task(':server:printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS
then: "validate server report"
extractReport(result) == readReport("server")
equalWithDiff(extractReport(result), readReport("server"))
!result.output.contains('WARN:')
@@ -156,7 +156,7 @@ compose.desktop {
result.task(':composeApp:printAnimalsnifferSourceInfo').outcome == TaskOutcome.SUCCESS
then: "validate compose report"
extractReport(result) == readReport("composeApp")
equalWithDiff(extractReport(result), readReport("composeApp"))
!result.output.contains('WARN:')
}

0 comments on commit 34aa748

Please sign in to comment.