blob: 178b0f6e21743bd1723b251a1f590203c8a4c21a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
package frege.gradle
import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.internal.file.FileResolver
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.TaskAction
import org.gradle.process.internal.DefaultJavaExecAction
import org.gradle.process.internal.JavaExecAction
class QuickCheckTask 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
Integer num = 100
List<String> includePredicates
List<String> excludePredicates
String moduleName
String moduleDirectory
String moduleJar
List<String> classpathDirectories = ["$project.buildDir/classes/main", "$project.buildDir/classes/test"]
String moduleDir = "$project.buildDir/classes/test"
@TaskAction
void runQuickCheck() {
FileResolver fileResolver = getServices().get(FileResolver.class)
JavaExecAction action = new DefaultJavaExecAction(fileResolver)
action.setMain("frege.tools.Quick")
action.standardInput = System.in
action.standardOutput = System.out
action.errorOutput = System.err
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))
project.configurations.testRuntime.each { println it }
def args = []
if (help) {
} else {
if (verbose) args << "-v"
if (listAvailable) args << "-l"
args = args + [moduleDir]
}
logger.info("Calling Frege QuickCheck with args: '$args'")
action.args args
action.execute()
}
}
|