Skip to content

Commit

Permalink
fix: sort testFixtures closer to test deps.
Browse files Browse the repository at this point in the history
  • Loading branch information
autonomousapps committed Oct 11, 2024
1 parent e510678 commit fb6a4c1
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 8 deletions.
16 changes: 8 additions & 8 deletions sort/src/main/kotlin/com/squareup/sort/Configuration.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,26 @@ internal class Configuration(
) {

companion object {
val values = listOf(
private val values = listOf(
"api" to { Configuration("api", 0) },
"implementation" to { Configuration("implementation", 1) },
"compileOnlyApi" to { Configuration("compileOnlyApi", 2) },
"compileOnly" to { Configuration("compileOnly", 3) },
"runtimeOnly" to { Configuration("runtimeOnly", 4) },
"annotationProcessor" to { Configuration("annotationProcessor", 5) },
"kapt" to { Configuration("kapt", 6) },
"testImplementation" to { Configuration("testImplementation", 7) },
"testCompileOnly" to { Configuration("testCompileOnly", 8) },
"testRuntimeOnly" to { Configuration("testRuntimeOnly", 9) },
"androidTestImplementation" to { Configuration("androidTestImplementation", 10) },
"testFixturesApi" to { Configuration("testFixturesApi", 7) },
"testFixturesImplementation" to { Configuration("testFixturesImplementation", 8) },
"testImplementation" to { Configuration("testImplementation", 9) },
"testCompileOnly" to { Configuration("testCompileOnly", 10) },
"testRuntimeOnly" to { Configuration("testRuntimeOnly", 11) },
"androidTestImplementation" to { Configuration("androidTestImplementation", 12) },
)

fun of(configuration: String): Configuration? {
fun findConfiguration(
predicate: (Pair<String, () -> Configuration>) -> Boolean
): Configuration? {
return values.find(predicate)?.second?.invoke()
}
): Configuration? = values.find(predicate)?.second?.invoke()

// Try to find an exact match
var matchingConfiguration = findConfiguration { it.first == configuration }
Expand Down
63 changes: 63 additions & 0 deletions sort/src/test/groovy/com/squareup/sort/GroovySorterSpec.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,69 @@ final class GroovySorterSpec extends Specification {
)).inOrder()
}

def "can sort build script with gradleApi() dep"() {
given:
def buildScript = dir.resolve('build.gradle.kts')
Files.writeString(buildScript,
'''\
dependencies {
implementation 'heart:of-gold:1.0'
api project(':marvin')
implementation 'sad:robot:1.0'
api gradleApi()
implementation testFixtures(libs.magic)
implementation platform(project(':platform'))
}'''.stripIndent())
def sorter = GroovySorter.of(buildScript)
expect:
assertThat(trimmedLinesOf(sorter.rewritten())).containsExactlyElementsIn(trimmedLinesOf(
'''\
dependencies {
api project(':marvin')
api gradleApi()
implementation platform(project(':platform'))
implementation testFixtures(libs.magic)
implementation 'heart:of-gold:1.0'
implementation 'sad:robot:1.0'
}'''.stripIndent()
)).inOrder()
}
def "can sort testFixtures correctly"() {
given:
def buildScript = dir.resolve('build.gradle.kts')
Files.writeString(buildScript,
'''\
dependencies {
testFixturesImplementation 'g:a:1'
testFixturesApi 'g:b:1'
implementation libs.c
api libs.d
testImplementation 'g:e:1'
}'''.stripIndent()
)
def sorter = GroovySorter.of(buildScript)
expect:
assertThat(sorter.rewritten()).isEqualTo(
'''\
dependencies {
api libs.d
implementation libs.c
testFixturesApi 'g:b:1'
testFixturesImplementation 'g:a:1'
testImplementation 'g:e:1'
}'''.stripIndent()
)
}
def "can sort build script with four-space tabs"() {
given:
def buildScript = dir.resolve('build.gradle')
Expand Down
32 changes: 32 additions & 0 deletions sort/src/test/groovy/com/squareup/sort/KotlinSorterSpec.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,38 @@ class KotlinSorterSpec extends Specification {
)).inOrder()
}
def "can sort testFixtures correctly"() {
given:
def buildScript = dir.resolve('build.gradle.kts')
Files.writeString(buildScript,
'''\
dependencies {
testFixturesImplementation("g:a:1")
testFixturesApi("g:b:1")
implementation(libs.c)
api(libs.d)
testImplementation("g:e:1")
}'''.stripIndent()
)
def sorter = KotlinSorter.of(buildScript)
expect:
assertThat(sorter.rewritten()).isEqualTo(
'''\
dependencies {
api(libs.d)
implementation(libs.c)
testFixturesApi("g:b:1")
testFixturesImplementation("g:a:1")
testImplementation("g:e:1")
}'''.stripIndent()
)
}
def "can sort build script with four-space tabs"() {
given:
def buildScript = dir.resolve('build.gradle.kts')
Expand Down

0 comments on commit fb6a4c1

Please sign in to comment.