Skip to content

Commit

Permalink
Improvements to configurable source exclusions following review
Browse files Browse the repository at this point in the history
  • Loading branch information
josuf107 committed Feb 4, 2025
1 parent addcef3 commit 50325f6
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ class KotlinWorkspaceService(
// Update source file exclusions
get("exclusions")?.asJsonObject?.apply {
val exclusions = config.exclusions
get("excludePatterns")?.asString?.let { exclusions.excludePatterns = it }
get("excludePatterns")?.asJsonArray?.let { exclusions.excludePatterns = it.asList().map { it.asString } }
sf.updateExclusions()
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package org.javacs.kt

data class ExclusionsConfiguration(
var excludePatterns: String = "", // Semicolon-separated list of glob patterns
var excludePatterns: List<String> = listOf(), // Semicolon-separated list of glob patterns
)
9 changes: 5 additions & 4 deletions shared/src/main/kotlin/org/javacs/kt/SourceExclusions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class SourceExclusions(
private val scriptsConfig: ScriptsConfiguration,
private val exclusionsConfig: ExclusionsConfiguration,
) {
val configuredExclusions = exclusionsConfig.excludePatterns.split(";").map { it.trim() }.filter { it.isNotEmpty() }
val configuredExclusions = exclusionsConfig.excludePatterns.map { it.trim() }.filter { it.isNotEmpty() }
val excludedPatterns = listOf(
".git", ".hg", ".svn", // Version control systems
".idea", ".idea_modules", ".vs", ".vscode", ".code-workspace", ".settings", // IDEs
Expand All @@ -30,6 +30,7 @@ class SourceExclusions(
.filterNotNull()

private fun parseExcludePattern(pattern: String): PathMatcher? {
fun warning(e: Exception) = LOG.warn("Did not recognize exclude pattern: '$pattern' (${e.message})")
try {
val normalizedPattern = pattern.removeSuffix("/").trim()
val pathMatcher =
Expand All @@ -41,11 +42,11 @@ class SourceExclusions(
}
return pathMatcher
} catch (e: IllegalArgumentException) {
LOG.warn("Did not recognize exclude pattern: '{}' ({})", pattern, e.message)
warning(e)
} catch (e: PatternSyntaxException) {
LOG.warn("Did not recognize exclude pattern: '{}' ({})", pattern, e.message)
warning(e)
} catch (e: UnsupportedOperationException) {
LOG.warn("Did not recognize exclude pattern: '{}' ({})", pattern, e.message)
warning(e)
}
return null
}
Expand Down
8 changes: 4 additions & 4 deletions shared/src/test/kotlin/org/javacs/kt/SourceExclusionsTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import org.junit.Test

class SourceExclusionsTest {
private val workspaceRoots = listOf(File("/test/workspace1").toPath(), File("/test/workspace2").toPath())
private var excludePatterns = ""
private var excludePatterns = listOf<String>()

@Test
fun `test only default exclusions`() {
Expand All @@ -25,23 +25,23 @@ class SourceExclusionsTest {

@Test
fun `test configured exclusions`() {
excludePatterns = "build;junk"
excludePatterns = listOf("build","junk")
assertIncluded("/test/workspace1/src/main/kotlin/MyClass.kt")
assertExcluded("/test/workspace1/build/generated/blah.kt")
assertExcluded("/test/workspace1/src/main/kotlin/junk/blah.kt")
}

@Test
fun `test configured directory exclusions`() {
excludePatterns = "build/dist/**"
excludePatterns = listOf("build/dist/**")
assertIncluded("/test/workspace1/build/generated/blah.kt")
assertIncluded("/test/workspace1/blah/build/dist/blah.kt")
assertExcluded("/test/workspace1/build/dist/blah.kt")
}

@Test
fun `test configured wildcard directory exclusions`() {
excludePatterns = "**/build/dist/**;build/dist/**"
excludePatterns = listOf("**/build/dist/**", "build/dist/**")
assertIncluded("/test/workspace1/build/generated/blah.kt")
assertExcluded("/test/workspace1/blah/build/dist/blah.kt")
assertExcluded("/test/workspace1/build/dist/blah.kt")
Expand Down

0 comments on commit 50325f6

Please sign in to comment.