From 9f364d8a7109822f8bb0b64d5cea36360e019765 Mon Sep 17 00:00:00 2001 From: Matthew Haughton <3flex@users.noreply.github.com> Date: Mon, 17 May 2021 05:37:24 +1000 Subject: [PATCH] Checkout files with LF line endings on Windows (#3782) * Use LF line endings in working directory * Ensure LF & CRLF test assertions are OS-independent --- .gitattributes | 8 ++--- .../io/github/detekt/parser/KtCompilerTest.kt | 32 +++++++++++++++---- .../src/test/resources/cases/.gitattributes | 2 ++ .../src/test/resources/cases/DefaultCrLf.kt | 7 ++++ .../cases/{Default.kt => DefaultLf.kt} | 2 +- 5 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 detekt-parser/src/test/resources/cases/.gitattributes create mode 100644 detekt-parser/src/test/resources/cases/DefaultCrLf.kt rename detekt-parser/src/test/resources/cases/{Default.kt => DefaultLf.kt} (77%) diff --git a/.gitattributes b/.gitattributes index b227444ec..d915f1ee7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,11 +1,11 @@ -* text eol=auto +* text eol=lf *.bat text eol=crlf *.css diff=css -*.htm eol=lf diff=html -*.html eol=lf diff=html -*.md eol=lf diff=markdown +*.htm diff=html +*.html diff=html +*.md diff=markdown *.jar binary *.png binary diff --git a/detekt-parser/src/test/kotlin/io/github/detekt/parser/KtCompilerTest.kt b/detekt-parser/src/test/kotlin/io/github/detekt/parser/KtCompilerTest.kt index 26df224e7..9f4fd824a 100644 --- a/detekt-parser/src/test/kotlin/io/github/detekt/parser/KtCompilerTest.kt +++ b/detekt-parser/src/test/kotlin/io/github/detekt/parser/KtCompilerTest.kt @@ -19,20 +19,38 @@ class KtCompilerTest : Spek({ val path = resourceAsPath("/cases") val ktCompiler by memoized(CachingMode.SCOPE) { KtCompiler() } - it("Kotlin file has extra user data") { - val ktFile = ktCompiler.compile(path, path.resolve("Default.kt")) + it("Kotlin file with LF line separators has extra user data") { + val ktFile = ktCompiler.compile(path, path.resolve("DefaultLf.kt")) - assertThat(ktFile.getUserData(LINE_SEPARATOR)).isEqualTo(System.lineSeparator()) + assertThat(ktFile.getUserData(LINE_SEPARATOR)).isEqualTo("\n") assertThat(ktFile.getUserData(RELATIVE_PATH)) - .isEqualTo("Default.kt") + .isEqualTo("DefaultLf.kt") assertThat(ktFile.getUserData(BASE_PATH)) .endsWith("cases") } - it("Kotlin file does not store extra data for relative path if not provided") { - val ktFile = ktCompiler.compile(null, path.resolve("Default.kt")) + it("Kotlin file with CRLF line separators has extra user data") { + val ktFile = ktCompiler.compile(path, path.resolve("DefaultCrLf.kt")) - assertThat(ktFile.getUserData(LINE_SEPARATOR)).isEqualTo(System.lineSeparator()) + assertThat(ktFile.getUserData(LINE_SEPARATOR)).isEqualTo("\r\n") + assertThat(ktFile.getUserData(RELATIVE_PATH)) + .isEqualTo("DefaultCrLf.kt") + assertThat(ktFile.getUserData(BASE_PATH)) + .endsWith("cases") + } + + it("Kotlin file with LF line separators does not store extra data for relative path if not provided") { + val ktFile = ktCompiler.compile(null, path.resolve("DefaultLf.kt")) + + assertThat(ktFile.getUserData(LINE_SEPARATOR)).isEqualTo("\n") + assertThat(ktFile.getUserData(RELATIVE_PATH)).isNull() + assertThat(ktFile.getUserData(BASE_PATH)).isNull() + } + + it("Kotlin file with CRLF line separators does not store extra data for relative path if not provided") { + val ktFile = ktCompiler.compile(null, path.resolve("DefaultCrLf.kt")) + + assertThat(ktFile.getUserData(LINE_SEPARATOR)).isEqualTo("\r\n") assertThat(ktFile.getUserData(RELATIVE_PATH)).isNull() assertThat(ktFile.getUserData(BASE_PATH)).isNull() } diff --git a/detekt-parser/src/test/resources/cases/.gitattributes b/detekt-parser/src/test/resources/cases/.gitattributes new file mode 100644 index 000000000..8741a3c85 --- /dev/null +++ b/detekt-parser/src/test/resources/cases/.gitattributes @@ -0,0 +1,2 @@ +DefaultLf.kt text eol=lf +DefaultCrLf.kt text eol=crlf diff --git a/detekt-parser/src/test/resources/cases/DefaultCrLf.kt b/detekt-parser/src/test/resources/cases/DefaultCrLf.kt new file mode 100644 index 000000000..57d1c2c9a --- /dev/null +++ b/detekt-parser/src/test/resources/cases/DefaultCrLf.kt @@ -0,0 +1,7 @@ +package cases + +/** + * A comment + */ +@Suppress("Unused") +class DefaultCrLf diff --git a/detekt-parser/src/test/resources/cases/Default.kt b/detekt-parser/src/test/resources/cases/DefaultLf.kt similarity index 77% rename from detekt-parser/src/test/resources/cases/Default.kt rename to detekt-parser/src/test/resources/cases/DefaultLf.kt index eb308e838..cda8e2013 100644 --- a/detekt-parser/src/test/resources/cases/Default.kt +++ b/detekt-parser/src/test/resources/cases/DefaultLf.kt @@ -4,4 +4,4 @@ package cases * A comment */ @Suppress("Unused") -class Default +class DefaultLf