Skip to content

Commit b74756c

Browse files
committed
Handle line endings (Windows vs *nix difference) in XML vector drawable hashcode calculation
1 parent 81524ae commit b74756c

2 files changed

Lines changed: 18 additions & 6 deletions

File tree

gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/GenerateResourceAccessorsTask.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import org.gradle.api.tasks.PathSensitivity
1111
import org.gradle.api.tasks.SkipWhenEmpty
1212
import org.jetbrains.compose.internal.IdeaImportTask
1313
import java.io.File
14+
import java.nio.file.Files
1415
import java.nio.file.Path
16+
import kotlin.collections.contentHashCode
1517
import kotlin.io.path.relativeTo
1618

1719
internal abstract class GenerateResourceAccessorsTask : IdeaImportTask() {
@@ -116,11 +118,21 @@ internal abstract class GenerateResourceAccessorsTask : IdeaImportTask() {
116118
qualifiers,
117119
file.nameWithoutExtension.asUnderscoredIdentifier(),
118120
path,
119-
file.readBytes().contentHashCode()
121+
file.contentHashCode()
120122
)
121123
)
122124
}
123125

126+
private fun File.contentHashCode(): Int {
127+
return if (extension.lowercase() == "xml") {
128+
// Text files have different line endings on Windows/*nix,
129+
// so let's ignore them in the hashcode calculation
130+
Files.readAllLines(toPath()).joinToString().hashCode()
131+
} else {
132+
readBytes().contentHashCode()
133+
}
134+
}
135+
124136
private fun getValueResourceItems(dataFile: File, qualifiers: List<String>, path: Path): List<ResourceItem> {
125137
val result = mutableListOf<ResourceItem>()
126138
dataFile.bufferedReader().use { f ->

gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-with-hash/commonMainResourceAccessors/app/group/resources_test/generated/resources/Drawable0.commonMain.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,28 @@ import org.jetbrains.compose.resources.ThemeQualifier
1515

1616
private const val MD: String = "composeResources/app.group.resources_test.generated.resources/"
1717

18-
@delegate:ResourceContentHash(1_620_038_668)
18+
@delegate:ResourceContentHash(1_560_475_033)
1919
internal val Res.drawable._3_strange_name: DrawableResource by lazy {
2020
DrawableResource("drawable:_3_strange_name", setOf(
2121
ResourceItem(setOf(), "${MD}drawable/3-strange-name.xml", -1, -1),
2222
))
2323
}
2424

25-
@delegate:ResourceContentHash(1_620_038_668)
25+
@delegate:ResourceContentHash(1_560_475_033)
2626
internal val Res.drawable.camelCaseName: DrawableResource by lazy {
2727
DrawableResource("drawable:camelCaseName", setOf(
2828
ResourceItem(setOf(), "${MD}drawable/camelCaseName.xml", -1, -1),
2929
))
3030
}
3131

32-
@delegate:ResourceContentHash(1_620_038_668)
32+
@delegate:ResourceContentHash(1_560_475_033)
3333
internal val Res.drawable.`is`: DrawableResource by lazy {
3434
DrawableResource("drawable:is", setOf(
3535
ResourceItem(setOf(), "${MD}drawable/is.xml", -1, -1),
3636
))
3737
}
3838

39-
@delegate:ResourceContentHash(-1_131_835_124)
39+
@delegate:ResourceContentHash(885_628_761)
4040
internal val Res.drawable.vector: DrawableResource by lazy {
4141
DrawableResource("drawable:vector", setOf(
4242
ResourceItem(setOf(LanguageQualifier("ast"), ), "${MD}drawable-ast/vector.xml", -1, -1),
@@ -47,7 +47,7 @@ internal val Res.drawable.vector: DrawableResource by lazy {
4747
))
4848
}
4949

50-
@delegate:ResourceContentHash(1_620_038_668)
50+
@delegate:ResourceContentHash(1_560_475_033)
5151
internal val Res.drawable.vector_2: DrawableResource by lazy {
5252
DrawableResource("drawable:vector_2", setOf(
5353
ResourceItem(setOf(), "${MD}drawable/vector_2.xml", -1, -1),

0 commit comments

Comments
 (0)