Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class SpotlightLintTasksFunctionalTest {
val project = SpiritboxProject().build()
project.setGradleProperties("org.gradle.unsafe.isolated-projects" to "true")
val allProjects = project.rootDir.resolve(SpotlightProjectList.ALL_PROJECTS_LOCATION)
allProjects.writeText(allProjects.readLines().sorted().reversed().joinToString("\n"))
allProjects.writeText(allProjects.readLines().sorted().reversed().joinToString(separator = "\n", postfix = "\n"))

// When
val result = project.buildAndFail(":${CheckSpotlightProjectListTask.NAME}")
Expand All @@ -31,13 +31,28 @@ class SpotlightLintTasksFunctionalTest {
}

@Test
fun `check all-projects list succeeds when sorted`() {
fun `check all-projects list fails when sorted but not formatted`() {
// Given
val project = SpiritboxProject().build()
project.setGradleProperties("org.gradle.unsafe.isolated-projects" to "true")
val allProjects = project.rootDir.resolve(SpotlightProjectList.ALL_PROJECTS_LOCATION)
allProjects.writeText(allProjects.readLines().sorted().joinToString("\n"))

// When
val result = project.buildAndFail(":${CheckSpotlightProjectListTask.NAME}")

// Then
assertThat(result).task(":${CheckSpotlightProjectListTask.NAME}").failed()
}

@Test
fun `check all-projects list succeeds when sorted and formatted`() {
// Given
val project = SpiritboxProject().build()
project.setGradleProperties("org.gradle.unsafe.isolated-projects" to "true")
val allProjects = project.rootDir.resolve(SpotlightProjectList.ALL_PROJECTS_LOCATION)
allProjects.writeText(allProjects.readLines().sorted().joinToString(separator = "\n", postfix = "\n"))

// When
val result = project.build(":${CheckSpotlightProjectListTask.NAME}")

Expand All @@ -52,7 +67,7 @@ class SpotlightLintTasksFunctionalTest {
project.setGradleProperties("org.gradle.unsafe.isolated-projects" to "true")
val allProjects = project.rootDir.resolve(SpotlightProjectList.ALL_PROJECTS_LOCATION)
val allProjectsList = allProjects.readLines().sorted().reversed()
allProjects.writeText(allProjectsList.joinToString("\n"))
allProjects.writeText(allProjectsList.joinToString(separator = "\n", postfix = "\n"))

// When
val result = project.build(":${FixSpotlightProjectListTask.NAME}")
Expand All @@ -69,7 +84,7 @@ class SpotlightLintTasksFunctionalTest {
val project = SpiritboxProject().build()
project.setGradleProperties("org.gradle.unsafe.isolated-projects" to "true")
val allProjects = project.rootDir.resolve(SpotlightProjectList.ALL_PROJECTS_LOCATION)
allProjects.writeText(allProjects.readLines().sorted().joinToString("\n"))
allProjects.writeText(allProjects.readLines().sorted().joinToString(separator = "\n", postfix = "\n"))

// When
val result = project.build(":check")
Expand All @@ -87,7 +102,7 @@ class SpotlightLintTasksFunctionalTest {

// Ensure all-projects list is sorted first
val allProjects = project.rootDir.resolve(SpotlightProjectList.ALL_PROJECTS_LOCATION)
allProjects.writeText(allProjects.readLines().sorted().joinToString("\n"))
allProjects.writeText(allProjects.readLines().sorted().joinToString(separator = "\n", postfix = "\n"))

// Create a build file for a project that would be included
val someProject = project.rootDir.resolve("some-project")
Expand Down Expand Up @@ -118,7 +133,7 @@ class SpotlightLintTasksFunctionalTest {
val project = SpiritboxProject().build(dslKind = dslKind)
project.setGradleProperties("org.gradle.unsafe.isolated-projects" to "true")
val allProjects = project.rootDir.resolve(SpotlightProjectList.ALL_PROJECTS_LOCATION)
allProjects.writeText(allProjects.readLines().sorted().joinToString("\n"))
allProjects.writeText(allProjects.readLines().sorted().joinToString(separator = "\n", postfix = "\n"))

// When
val result = project.build(":${CheckSpotlightProjectListTask.NAME}")
Expand All @@ -137,7 +152,7 @@ class SpotlightLintTasksFunctionalTest {
// Add a project path that doesn't have a build file
val projectsList = allProjects.readLines().toMutableList()
projectsList.add(":missing-build-file")
allProjects.writeText(projectsList.sorted().joinToString("\n"))
allProjects.writeText(projectsList.sorted().joinToString(separator = "\n", postfix = "\n"))

// Create the directory but no build file
project.rootDir.resolve("missing-build-file").mkdirs()
Expand All @@ -164,7 +179,7 @@ class SpotlightLintTasksFunctionalTest {
val projectsList = allProjects.readLines()
.filterNot { it.startsWith(":rotoscope:") }
.sorted() // Keep it sorted so checkSorted() passes
allProjects.writeText(projectsList.joinToString("\n"))
allProjects.writeText(projectsList.joinToString(separator = "\n", postfix = "\n"))

// When
val result = project.buildAndFail(":${CheckSpotlightProjectListTask.NAME}")
Expand Down Expand Up @@ -211,7 +226,7 @@ class SpotlightLintTasksFunctionalTest {
val originalProjectsList = allProjects.readLines()
val projectsList = originalProjectsList
.filterNot { it.startsWith(":rotoscope:") }
allProjects.writeText(projectsList.joinToString("\n"))
allProjects.writeText(projectsList.joinToString(separator = "\n", postfix = "\n"))

val expectedMissingCount = originalProjectsList.count { it.startsWith(":rotoscope:") }

Expand Down Expand Up @@ -264,7 +279,7 @@ class SpotlightLintTasksFunctionalTest {

// Unsort the list
val projectsList = allProjects.readLines().sorted().reversed()
allProjects.writeText(projectsList.joinToString("\n"))
allProjects.writeText(projectsList.joinToString(separator = "\n", postfix = "\n"))

// When
val result = project.build(":${FixSpotlightProjectListTask.NAME}")
Expand All @@ -287,7 +302,7 @@ class SpotlightLintTasksFunctionalTest {
.filterNot { it.startsWith(":rotoscope:") }
.toMutableList()
projectsList.add(":invalid-project")
allProjects.writeText(projectsList.joinToString("\n"))
allProjects.writeText(projectsList.joinToString(separator = "\n", postfix = "\n"))
project.rootDir.resolve("invalid-project").mkdirs()

// When: First fix to resolve issues
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ class SpiritboxProject : AbstractGradleProject() {
project.gradleDir.mkdirs()
project.allProjects.createNewFile()
project.ideProjects.createNewFile()
project.allProjects.writeText(projectPaths.joinToString("\n"))
project.allProjects.writeText(projectPaths.joinToString(separator = "\n", postfix = "\n"))

return project
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.fueledbycaffeine.spotlight.buildscript.SETTINGS_SCRIPT
import com.fueledbycaffeine.spotlight.buildscript.SETTINGS_SCRIPT_KOTLIN
import com.fueledbycaffeine.spotlight.buildscript.SpotlightProjectList
import com.fueledbycaffeine.spotlight.buildscript.graph.BreadthFirstSearch
import com.fueledbycaffeine.spotlight.utils.asSortedProjectsContent
import org.gradle.api.DefaultTask
import org.gradle.api.InvalidUserDataException
import org.gradle.api.file.DirectoryProperty
Expand Down Expand Up @@ -43,7 +44,7 @@ public abstract class CheckSpotlightProjectListTask : DefaultTask() {
val file = projectsFile.asFile.get()
val current = file.readLines()

if (current != current.sorted()) {
if (file.readText() != current.asSortedProjectsContent()) {
throw InvalidUserDataException(
"""
Spotlight's list of all projects is not sorted: ${file.path}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.fueledbycaffeine.spotlight.buildscript.SETTINGS_SCRIPT
import com.fueledbycaffeine.spotlight.buildscript.SETTINGS_SCRIPT_KOTLIN
import com.fueledbycaffeine.spotlight.buildscript.SpotlightProjectList
import com.fueledbycaffeine.spotlight.buildscript.graph.BreadthFirstSearch
import com.fueledbycaffeine.spotlight.utils.asSortedProjectsContent
import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
Expand Down Expand Up @@ -92,8 +93,8 @@ public abstract class FixSpotlightProjectListTask : DefaultTask() {
}

private fun writeSortedProjects(projects: Set<GradlePath>) {
val sortedProjectPaths = projects.map { it.path }.sorted()
projectsFile.asFile.get().writeText(sortedProjectPaths.joinToString("\n"))
val sortedProjectPaths = projects.map { it.path }
projectsFile.asFile.get().writeText(sortedProjectPaths.asSortedProjectsContent())
}

private fun logResults(removedCount: Int, addedCount: Int) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,8 @@ private val String.projectPathGuess get() = this.replace(Regex("\\w+$"), "")

internal fun Settings.include(paths: Iterable<GradlePath>) {
include(paths.map { it.path })
}
}

internal fun List<String>.asSortedProjectsContent(): String {
return sorted().joinToString(separator = "\n", postfix = "\n")
}
Loading