diff --git a/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/IncrementalSpecification.groovy b/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/IncrementalSpecification.groovy index 06d6452936a..5efb6661054 100644 --- a/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/IncrementalSpecification.groovy +++ b/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/IncrementalSpecification.groovy @@ -196,6 +196,19 @@ class IncrementalSpecification extends BaseKonanSpecification { "noDefaultLibs" | "true" } + def 'headerFilterAdditionalSearchPrefix change should cause recompilation and interop reprocessing'() { + when: + def project = KonanProject.createWithInterop(projectDirectory) { KonanProject it -> + it.defFiles.first().write("headers = stdio.h\nheaderFilter = stdio.h") + } + def results = buildTwice(project) { KonanProject it -> + it.addSetting(KonanProject.DEFAULT_INTEROP_NAME, "headerFilterAdditionalSearchPrefix", "'.'") + } + + then: + recompilationAndInteropProcessingHappened(*results) + } + def 'defFile change for an interop task should cause recompilation and interop reprocessing'() { when: def project = KonanProject.createWithInterop(projectDirectory, ArtifactType.LIBRARY) diff --git a/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/TaskSpecification.groovy b/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/TaskSpecification.groovy index ebdbc1d8255..34ef565ab6a 100644 --- a/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/TaskSpecification.groovy +++ b/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/TaskSpecification.groovy @@ -34,6 +34,22 @@ class TaskSpecification extends BaseKonanSpecification { result.output.findAll(~/BACKEND:\s+\d+\s+msec/).size() == 1 } + def 'Plugin should support headerFilterAdditionalSearchPrefix option for cinterop'() { + expect: + def project = KonanProject.createEmpty(projectDirectory) { KonanProject it -> + it.addCompilerArtifact("interopLib", "headers=foo.h\nheaderFilter=foo.h bar.h", ArtifactType.INTEROP) + it.generateSrcFile(it.projectPath, "foo.h", "#include ") + def fooDir = it.projectPath.resolve("foo") + it.generateSrcFile(fooDir, "bar.h", "const int foo = 5;") + it.addSetting("interopLib", "headerFilterAdditionalSearchPrefix", fooDir.toFile()) + it.addSetting("interopLib", "headerFilterAdditionalSearchPrefix", it.projectDir) + } + project.createRunner().withArguments("build").build() + def wrong_path = project.createFile("wrong_path", "") + project.addSetting("interopLib", "headerFilterAdditionalSearchPrefix", wrong_path) + project.createRunner().withArguments("build").buildAndFail() + } + BuildResult failOnPropertyAccess(KonanProject project, String property) { project.buildFile.append(""" task testTask(type: DefaultTask) {