1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 00:17:11 -07:00

BlockExtractorTest.

This commit is contained in:
Cedric Beust 2017-03-30 15:12:35 -07:00
parent 9f249822ba
commit 255e17d88b
2 changed files with 42 additions and 2 deletions

View file

@ -138,6 +138,12 @@ class BuildFiles @Inject constructor(val factory: BuildFileCompiler.IFactory,
return SplitBuildFile(imports, code, containsProfiles) return SplitBuildFile(imports, code, containsProfiles)
} }
companion object {
val BUILD_SCRIPT_REGEXP: Pattern = Pattern.compile("^val.*buildScript.*\\{")
val BLOCK_EXTRACTOR = BlockExtractor(BUILD_SCRIPT_REGEXP, '{', '}')
}
fun parseBuildScriptInfos(projectDir: String, context: KobaltContext, profiles: Profiles) fun parseBuildScriptInfos(projectDir: String, context: KobaltContext, profiles: Profiles)
: List<BuildFileWithBuildScript> { : List<BuildFileWithBuildScript> {
val root = sourceDir(projectDir) val root = sourceDir(projectDir)
@ -149,8 +155,7 @@ class BuildFiles @Inject constructor(val factory: BuildFileCompiler.IFactory,
toProcess.forEach { buildFile -> toProcess.forEach { buildFile ->
val splitBuildFile = profiles.applyProfiles(buildFile.readLines()) val splitBuildFile = profiles.applyProfiles(buildFile.readLines())
containsProfiles = containsProfiles or splitBuildFile.containsProfiles containsProfiles = containsProfiles or splitBuildFile.containsProfiles
val bsi = BlockExtractor(Pattern.compile("^val.*buildScript.*\\{"), '{', '}') val bsi = BLOCK_EXTRACTOR.extractBlock(buildFile, (splitBuildFile.imports + splitBuildFile.code))
.extractBlock(buildFile, (splitBuildFile.imports + splitBuildFile.code))
if (bsi != null) analyzedFiles.add(BuildFileWithBuildScript(buildFile, bsi)) if (bsi != null) analyzedFiles.add(BuildFileWithBuildScript(buildFile, bsi))
} }

View file

@ -0,0 +1,35 @@
package com.beust.kobalt.internal
import com.beust.kobalt.TestModule
import com.beust.kobalt.app.BuildFiles
import org.assertj.core.api.Assertions.assertThat
import org.testng.annotations.Guice
import org.testng.annotations.Test
import java.io.File
@Guice(modules = arrayOf(TestModule::class))
class BlockExtractorTest {
@Test
fun verifyExtraction() {
val imports = listOf("import com.beust.kobalt.*", "import com . beust.kobalt.api.*")
val topLines = listOf("", "val VERSION = \"6.11.1-SNAPSHOT\"", "")
val buildScript = listOf(
"val bs = buildScript {",
" repos(\"https://dl.bintray.com/cbeust/maven\")",
"}"
)
val allLines = imports + topLines + buildScript
val be = BuildFiles.BLOCK_EXTRACTOR
val bsi = be.extractBlock(File(""), allLines)
if (bsi != null) {
assertThat(bsi.sections.size).isEqualTo(1)
assertThat(bsi.sections[0].start).isEqualTo(5)
assertThat(bsi.sections[0].end).isEqualTo(7)
assertThat(bsi.topLines).isEqualTo(topLines)
} else {
throw AssertionError("Should have found a buildScript{}")
}
}
}