aboutsummaryrefslogtreecommitdiff
path: root/src/main/groovy/frege/gradle/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/groovy/frege/gradle/tasks')
-rw-r--r--src/main/groovy/frege/gradle/tasks/FregeQuickCheck.groovy88
1 files changed, 48 insertions, 40 deletions
diff --git a/src/main/groovy/frege/gradle/tasks/FregeQuickCheck.groovy b/src/main/groovy/frege/gradle/tasks/FregeQuickCheck.groovy
index cb7d5ef..e06236f 100644
--- a/src/main/groovy/frege/gradle/tasks/FregeQuickCheck.groovy
+++ b/src/main/groovy/frege/gradle/tasks/FregeQuickCheck.groovy
@@ -7,6 +7,42 @@ import org.gradle.process.internal.JavaExecAction
class FregeQuickCheck extends DefaultTask {
+ // more options to consider:
+/*
+ Looks up quick check predicates in the given modules and tests them.
+
+ [Usage:] java -cp fregec.jar frege.tools.Quick [ option ... ] modulespec ...
+
+ Options:
+
+ - -v print a line for each pedicate that passed
+ - -n num run _num_ tests per predicate, default is 100
+ - -p pred1,pred2,... only test the given predicates
+ - -x pred1,pred2,... do not test the given predicates
+ - -l just print the names of the predicates available.
+
+ Ways to specify modules:
+
+ - module the module name (e.g. my.great.Module), will be lookup up in
+ the current class path.
+ - dir/ A directory path. The directory is searched for class files,
+ and for each class files an attempt is made to load it as if
+ the given directory was in the class path. The directory must
+ be the root of the classes contained therein, otherwise the
+ classes won't get loaded.
+ - path-to.jar A jar or zip file is searched for class files, and for each
+ class file found an attempt is made to load it as if the
+ jar was in the class path.
+
+ The number of passed/failed tests is reported. If any test failed or other
+ errors occured, the exit code will be non zero.
+
+ The code will try to heat up your CPU by running tests on all available cores.
+ This should be faster on multi-core computers than running the tests
+ sequentially. It makes it feasable to run more tests per predicate.
+
+ */
+
Boolean verbose = true
Boolean listAvailable = false
Boolean help = false
@@ -14,9 +50,10 @@ class FregeQuickCheck extends DefaultTask {
List<String> includePredicates
List<String> excludePredicates
String moduleName
+ String moduleDirectory
String moduleJar
- String moduleDir = "$project.buildDir/classes/test"
List<String> classpathDirectories = ["$project.buildDir/classes/main", "$project.buildDir/classes/test"]
+ String moduleDir = "$project.buildDir/classes/test"
List<String> allJvmArgs = []
@TaskAction
@@ -33,50 +70,21 @@ class FregeQuickCheck extends DefaultTask {
def f = project.files(classpathDirectories.collect { s -> new File(s) })
action.setClasspath(project.files(project.configurations.compile).plus(project.files(project.configurations.testRuntime)).plus(f))
- def moduleSpec = moduleName ?: moduleJar ?: moduleDir
+
+ project.configurations.testRuntime.each { println it }
def args = []
if (help) {
- println """
-FregeQuickCheck Help
---------------------
-All attributes are optional,
-currently used moduleDir is '$moduleDir',
-currently used moduleSpec is '$moduleSpec'.
-
-Example attribute values:
-fregeQuickCheck {
- help = true // default: false
- listAvailable = true // default: false, will only list and not execute
- verbose = false // default: true, needed to see the results
- num = 500 // default: 100
- includePredicates = ['myFirstPred', 'mySecondPred']
- excludePredicates = ['myFirstPred', 'mySecondPred']
- moduleName = 'my.cool.Module' // prio 1
- moduleJar = 'path/to/my/module.jar' // prio 2
- moduleDir = "\$project.buildDir/classes/test" // prio 3, default
- classpathDirectories = ["\$project.buildDir/classes/main", "\$project.buildDir/classes/test"]
- allJvmArgs = ['-Xss4M']
-}
-"""
- println "Current Test Runtime is: "
- project.configurations.testRuntime.each { println it }
- }
-
- if (verbose) args << "-v"
- if (listAvailable) args << "-l"
- if (num) args << "-n" << num
- if (includePredicates) args << "-p" << includePredicates.join(',')
- if (excludePredicates) args << "-x" << excludePredicates.join(',')
- if (!allJvmArgs.isEmpty()) {
- action.setJvmArgs(allJvmArgs)
- }
- args << moduleSpec
- if (help) {
- println "Calling Frege QuickCheck with args: '${args.join(' ')}'"
- println "and JVM args: '${allJvmArgs.join(' ')}'"
+ } else {
+ if (verbose) args << "-v"
+ if (listAvailable) args << "-l"
+ if (!allJvmArgs.isEmpty()) {
+ action.setJvmArgs(allJvmArgs)
+ }
+ args = args + [moduleDir]
}
+ logger.info("Calling Frege QuickCheck with args: '$args'")
action.args args
action.execute()
}