summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRene Groeschke <rene@gradle.com>2015-11-21 21:52:07 +0000
committerRene Groeschke <rene@gradle.com>2015-11-21 21:52:07 +0000
commita676a61ddf3478356b43b4b7f947e6f769cde50e (patch)
tree976956266701dc8cc97e51ef1b7dacf650da360b
parent3bbf59cb3e080b9abcdf82d1c82e36337ea01ed1 (diff)
downloadfrege-gradle-plugin-a676a61ddf3478356b43b4b7f947e6f769cde50e.tar.gz
frege-gradle-plugin-a676a61ddf3478356b43b4b7f947e6f769cde50e.tar.bz2
frege-gradle-plugin-a676a61ddf3478356b43b4b7f947e6f769cde50e.zip
add integtest coverage for calling java from frege
-rw-r--r--src/integTest/groovy/frege/plugin/FregePluginIntegTest.groovy75
1 files changed, 64 insertions, 11 deletions
diff --git a/src/integTest/groovy/frege/plugin/FregePluginIntegTest.groovy b/src/integTest/groovy/frege/plugin/FregePluginIntegTest.groovy
index b6936a8..40afe4a 100644
--- a/src/integTest/groovy/frege/plugin/FregePluginIntegTest.groovy
+++ b/src/integTest/groovy/frege/plugin/FregePluginIntegTest.groovy
@@ -64,21 +64,14 @@ class FregePluginIntegTest extends Specification {
dependencies {
compile "org.frege-lang:frege:$fregeVersion"
}
-
- task sayHello(type: JavaExec){
- doFirst {
- println classpath.files
- }
- classpath = sourceSets.main.runtimeClasspath
- main = 'HelloFrege'
- }
+ ${sayHelloTask()}
"""
- testProjectDir.newFolder("src", "main", "frege")
- def fregeSourceFile = testProjectDir.newFile("src/main/frege/HelloFrege.fr")
+ testProjectDir.newFolder("src", "main", "frege", "org", "frege")
+ def fregeSourceFile = testProjectDir.newFile("src/main/frege/org/frege/HelloFrege.fr")
fregeSourceFile << """
-module HelloFrege where
+module org.frege.HelloFrege where
greeting = "Hello Frege!"
@@ -105,4 +98,64 @@ main _ = do
"3.22.367-g2737683" | "2.9"
"3.22.367-g2737683" | "2.8"
}
+
+
+ def "can reference java from frege"() {
+ given:
+ buildFile << """
+ dependencies {
+ compile "org.frege-lang:frege:$DEFAULT_FREGE_VERSION"
+ }
+
+ ${sayHelloTask()}
+ """
+
+ and:
+ testProjectDir.newFolder("src", "main", "frege", "org", "frege")
+
+ def fregeSourceFile = testProjectDir.newFile("src/main/frege/org/frege/HelloFrege.fr")
+
+ fregeSourceFile << """
+module org.frege.HelloFrege where
+
+data StaticHello = pure native org.frege.StaticHello where
+ pure native helloJava org.frege.StaticHello.helloJava :: () -> String
+
+main _ = do
+ println(StaticHello.helloJava())
+
+"""
+ testProjectDir.newFolder("src", "main", "java", "org", "frege")
+ def javaSourceFile = testProjectDir.newFile("src/main/java/org/frege/StaticHello.java")
+
+ javaSourceFile << """
+package org.frege;
+
+public class StaticHello {
+ public static String helloJava() {
+ return "hello from java";
+ }
+}
+"""
+
+ when:
+ def result = GradleRunner.create()
+ .withProjectDir(testProjectDir.root)
+ .withArguments('sayHello')
+ .withPluginClasspath(pluginClasspath)
+ .build()
+ then:
+ result.task(":compileJava").outcome == SUCCESS
+ result.task(":compileFrege").outcome == SUCCESS
+
+ result.output.contains("hello from java")
+ }
+
+
+ def sayHelloTask() {
+ return """task sayHello(type: JavaExec){
+ classpath = sourceSets.main.runtimeClasspath
+ main = 'org.frege.HelloFrege'
+ }"""
+ }
} \ No newline at end of file