Skip to content

Commit 3407b15

Browse files
Create parent directories of SourceFile. (#339)
Currently, createNewFile() fails if you have a SourceFile in a directory, since it can't create the owning directory.
1 parent 5e7266a commit 3407b15

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

core/src/main/kotlin/com/tschuchort/compiletesting/SourceFile.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ abstract class SourceFile {
3636
fun new(name: String, contents: String) = object : SourceFile() {
3737
override fun writeIfNeeded(dir: File): File {
3838
val file = dir.resolve(name)
39+
file.parentFile.mkdirs()
3940
file.createNewFile()
4041

4142
file.sink().buffer().use {

core/src/test/kotlin/com/tschuchort/compiletesting/KotlinCompilationTests.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,18 @@ class KotlinCompilationTests {
9191
assertClassLoadable(result, "b.KSource")
9292
}
9393

94+
@Test
95+
fun `runs with sources in directory`() {
96+
val result = defaultCompilerConfig().apply {
97+
sources = listOf(SourceFile.kotlin("com/foo/bar/kSource.kt", """
98+
package com.foo.bar
99+
class KSource"""))
100+
}.compile()
101+
102+
assertThat(result.exitCode).isEqualTo(ExitCode.OK)
103+
assertClassLoadable(result, "com.foo.bar.KSource")
104+
}
105+
94106
@Test
95107
fun `Kotlin can access JDK`() {
96108
val source = SourceFile.kotlin("kSource.kt", """

0 commit comments

Comments
 (0)