Skip to content

Commit

Permalink
Fixed tests failing when run on Windows (#1407)
Browse files Browse the repository at this point in the history
* Fixed tests failing on Windows due to line ending, path separator, and path ordering differences

* Removed test-util dependency from sqldelight-gradle-plugin

* Reverted accidental change to dependencies for sqldelight-gradle-plugin
  • Loading branch information
erikc5000 authored and Alec Strong committed Jul 18, 2019
1 parent 5a2693e commit 7bf1f67
Show file tree
Hide file tree
Showing 10 changed files with 64 additions and 15 deletions.
@@ -1,7 +1,8 @@
package com.squareup.sqldelight.core.errors;
package com.squareup.sqldelight.core.errors

import com.google.common.truth.Truth.assertWithMessage
import com.squareup.sqldelight.test.util.FixtureCompiler
import com.squareup.sqldelight.test.util.splitLines
import org.junit.Test
import java.io.File

Expand All @@ -16,7 +17,7 @@ class ErrorTest {
val expectedFailure = File("src/test/errors/$fixtureRoot", "failure.txt")
if (expectedFailure.exists()) {
assertWithMessage(result.sourceFiles).that(result.errors).containsExactlyElementsIn(
expectedFailure.readText().split("\n").filterNot { it.isEmpty() })
expectedFailure.readText().splitLines().filter { it.isNotEmpty() })
} else {
assertWithMessage(result.sourceFiles).that(result.errors).isEmpty()
}
Expand Down
@@ -1,11 +1,10 @@
package com.squareup.sqldelight.core.queries

import com.google.common.truth.Truth.assertThat
import com.squareup.kotlinpoet.FileSpec
import com.squareup.sqldelight.core.compiler.QueryInterfaceGenerator
import com.squareup.sqldelight.core.compiler.SqlDelightCompiler
import com.squareup.sqldelight.core.compiler.TableInterfaceGenerator
import com.squareup.sqldelight.test.util.FixtureCompiler
import com.squareup.sqldelight.test.util.withInvariantLineSeparators
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TemporaryFolder
Expand Down Expand Up @@ -673,8 +672,9 @@ class InterfaceGeneration {
false)
for ((expectedFile, actualOutput) in result.compilerOutput) {
assertThat(expectedFile.exists()).named("No file with name $expectedFile").isTrue()
assertThat(expectedFile.readText()).named(expectedFile.name).isEqualTo(
actualOutput.toString())
assertThat(expectedFile.readText().withInvariantLineSeparators())
.named(expectedFile.name)
.isEqualTo(actualOutput.toString())
}
}
}
Expand Up @@ -5,6 +5,7 @@ import com.squareup.kotlinpoet.FileSpec
import com.squareup.sqldelight.core.compiler.SqlDelightCompiler
import com.squareup.sqldelight.core.compiler.TableInterfaceGenerator
import com.squareup.sqldelight.test.util.FixtureCompiler
import com.squareup.sqldelight.test.util.withInvariantLineSeparators
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TemporaryFolder
Expand Down Expand Up @@ -374,8 +375,9 @@ class InterfaceGeneration {
false)
for ((expectedFile, actualOutput) in result.compilerOutput) {
assertThat(expectedFile.exists()).named("No file with name $expectedFile").isTrue()
assertThat(expectedFile.readText()).named(expectedFile.name).isEqualTo(
actualOutput.toString())
assertThat(expectedFile.readText().withInvariantLineSeparators())
.named(expectedFile.name)
.isEqualTo(actualOutput.toString())
}
}
}
Expand Up @@ -3,6 +3,7 @@ package com.squareup.sqldelight.core.views
import com.google.common.truth.Truth.assertThat
import com.squareup.sqldelight.core.compiler.SqlDelightCompiler
import com.squareup.sqldelight.test.util.FixtureCompiler
import com.squareup.sqldelight.test.util.withInvariantLineSeparators
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TemporaryFolder
Expand Down Expand Up @@ -207,8 +208,9 @@ class InterfaceGeneration {
false)
for ((expectedFile, actualOutput) in result.compilerOutput) {
assertThat(expectedFile.exists()).named("No file with name $expectedFile").isTrue()
assertThat(expectedFile.readText()).named(expectedFile.name).isEqualTo(
actualOutput.toString())
assertThat(expectedFile.readText().withInvariantLineSeparators())
.named(expectedFile.name)
.isEqualTo(actualOutput.toString())
}
}
}
Expand Up @@ -22,7 +22,7 @@ import java.util.Properties
internal fun androidHome(): String {
val env = System.getenv("ANDROID_HOME")
if (env != null) {
return env
return env.withInvariantPathSeparators()
}
val localProp = File(File(System.getProperty("user.dir")).parentFile, "local.properties")
if (localProp.exists()) {
Expand All @@ -32,7 +32,7 @@ internal fun androidHome(): String {
}
val sdkHome = prop.getProperty("sdk.dir")
if (sdkHome != null) {
return sdkHome
return sdkHome.withInvariantPathSeparators()
}
}
throw IllegalStateException(
Expand Down
Expand Up @@ -26,7 +26,7 @@ class MultiModuleTests {
val propertiesFile = File(fixtureRoot, ".idea/sqldelight/ProjectA/${SqlDelightPropertiesFile.NAME}")
assertThat(propertiesFile.exists()).isTrue()

val properties = SqlDelightPropertiesFile.fromFile(propertiesFile).databases.single()
val properties = SqlDelightPropertiesFile.fromFile(propertiesFile).databases.single().withInvariantPathSeparators()
assertThat(properties.packageName).isEqualTo("com.example")
assertThat(properties.outputDirectory).isEqualTo("build/sqldelight/Database")
assertThat(properties.compilationUnits).hasSize(1)
Expand Down Expand Up @@ -97,6 +97,8 @@ class MultiModuleTests {
assertThat(propertiesFile.exists()).isTrue()

val properties = SqlDelightPropertiesFile.fromFile(propertiesFile).databases.single()
.withInvariantPathSeparators()
.withSortedCompilationUnits()
assertThat(properties.packageName).isEqualTo("com.sample.android")
assertThat(properties.outputDirectory).isEqualTo("build/sqldelight/CommonDb")
assertThat(properties.compilationUnits).containsExactly(
Expand Down
Expand Up @@ -23,7 +23,7 @@ class PropertiesFileTest {
val propertiesFile = File(fixtureRoot, ".idea/sqldelight/${SqlDelightPropertiesFile.NAME}")
assertThat(propertiesFile.exists()).isTrue()

val properties = SqlDelightPropertiesFile.fromFile(propertiesFile).databases.single()
val properties = SqlDelightPropertiesFile.fromFile(propertiesFile).databases.single().withInvariantPathSeparators()
assertThat(properties.packageName).isEqualTo("com.example")
assertThat(properties.outputDirectory).isEqualTo("build/sqldelight/Database")
assertThat(properties.compilationUnits).hasSize(1)
Expand Down
Expand Up @@ -36,7 +36,7 @@ internal class TemporaryFixture : AutoCloseable {
configure()
return SqlDelightPropertiesFile.fromFile(
file = File(ideaDirectory, "sqldelight/${SqlDelightPropertiesFile.NAME}")
)
).withInvariantPathSeparators()
}

override fun close() {
Expand Down
@@ -0,0 +1,37 @@
package com.squareup.sqldelight

import com.squareup.sqldelight.core.SqlDelightCompilationUnit
import com.squareup.sqldelight.core.SqlDelightDatabaseProperties
import com.squareup.sqldelight.core.SqlDelightPropertiesFile
import com.squareup.sqldelight.core.SqlDelightSourceFolder

internal fun String.withInvariantPathSeparators() = replace("\\", "/")

internal fun SqlDelightPropertiesFile.withInvariantPathSeparators(): SqlDelightPropertiesFile {
return SqlDelightPropertiesFile(
databases = databases.map { it.withInvariantPathSeparators() }
)
}

internal fun SqlDelightDatabaseProperties.withInvariantPathSeparators(): SqlDelightDatabaseProperties {
return copy(
compilationUnits = compilationUnits.map { it.withInvariantPathSeparators() },
outputDirectory = outputDirectory.withInvariantPathSeparators()
)
}

internal fun SqlDelightDatabaseProperties.withSortedCompilationUnits(): SqlDelightDatabaseProperties {
return copy(
compilationUnits = compilationUnits.map { it.withSortedSourceFolders() }
)
}

private fun SqlDelightCompilationUnit.withInvariantPathSeparators(): SqlDelightCompilationUnit {
return copy(sourceFolders = sourceFolders.map { it.withInvariantPathSeparators() })
}

private fun SqlDelightCompilationUnit.withSortedSourceFolders(): SqlDelightCompilationUnit {
return copy(sourceFolders = sourceFolders.sortedBy { it.path })
}

private fun SqlDelightSourceFolder.withInvariantPathSeparators() = copy(path = path.withInvariantPathSeparators())
@@ -0,0 +1,5 @@
package com.squareup.sqldelight.test.util

fun String.withInvariantPathSeparators() = replace("\\", "/")
fun String.withInvariantLineSeparators() = replace("\r\n", "\n")
fun String.splitLines() = split("\\r?\\n".toRegex())

0 comments on commit 7bf1f67

Please sign in to comment.