3 sourceCompatibility = 1.8
4 targetCompatibility = 1.8
13 url "https://plugins.gradle.org/m2/"
17 classpath "gradle.plugin.com.palantir.gradle.gitversion:gradle-git-version:0.11.0"
22 testImplementation "junit:junit:4.12"
25 apply plugin: "com.palantir.git-version"
27 def gitDetails = versionDetails()
29 ext.manifestCommonAttrbutes = manifest {
31 "Built-By": System.getProperty("user.name"),
32 "Implementation-Vendor": "NASA Ames Research Center",
33 "Specification-Version": gitDetails.lastTag,
34 "Implementation-Version": gitDetails.gitHashFull
38 apply from: "gradle/ide-support.gradle"
39 apply from: "gradle/distribution.gradle"
40 apply from: "gradle/source-sets.gradle"
41 apply from: "gradle/build-resources.gradle"
45 description = "Compiles all JPF core sources."
47 // These are automatic generated tasks from the Java Gradle Plugin.
48 // Gradle is able to infer the order of the source sets
49 // due to the compileClasspath attribute
50 dependsOn compileTestJava
51 dependsOn compileExamplesJava
54 task createJpfClassesJar(type: Jar) {
55 archiveName = "jpf-classes.jar"
56 destinationDir = file("${buildDir}")
59 description = "Creates the ${archiveName} file."
62 dependsOn copyResources
64 from sourceSets.classes.java.outputDir
65 from sourceSets.annotations.java.outputDir
66 from(sourceSets.main.java.outputDir) {
67 include "gov/nasa/jpf/JPFShell.class"
68 include "gov/nasa/jpf/vm/Verify.class"
69 include "gov/nasa/jpf/util/TypeRef.class"
70 include "gov/nasa/jpf/util/test/TestJPF.class"
71 include "gov/nasa/jpf/util/test/TestMultiProcessJPF.class"
72 include "gov/nasa/jpf/util/test/TestJPFHelper.class"
76 task createJpfJar(type: Jar) {
77 archiveName = "jpf.jar"
78 destinationDir = file("${buildDir}")
81 description = "Creates the ${archiveName} file."
84 dependsOn copyResources
86 from sourceSets.main.java.outputDir
87 from sourceSets.peers.java.outputDir
88 from sourceSets.annotations.java.outputDir
89 from(sourceSets.classes.java.outputDir) {
90 include "org/junit/*.class"
94 attributes "Implementation-Title": "Java Pathfinder core system"
95 from manifestCommonAttrbutes
99 task createAnnotationsJar(type: Jar) {
100 archiveName = "jpf-annotations.jar"
101 destinationDir = file("${buildDir}")
104 description = "Creates the ${archiveName} file."
107 dependsOn copyResources
109 from sourceSets.annotations.java.outputDir
112 task createClassloaderSpecificTestsJar(type: Jar) {
113 archiveName = "classloader_specific_tests.jar"
114 destinationDir = file("${buildDir}")
117 description = "Creates the ${archiveName} file."
120 dependsOn copyResources
122 from(sourceSets.test.java.outputDir) {
123 include "classloader_specific_tests/*.class"
127 task createRunJpfJar(type: Jar) {
128 archiveName = "RunJPF.jar"
129 destinationDir = file("${buildDir}")
131 description = "Creates the ${archiveName} file."
135 dependsOn copyResources
137 from(sourceSets.main.java.outputDir) {
138 include "gov/nasa/jpf/tool/Run.class"
139 include "gov/nasa/jpf/tool/RunJPF.class"
140 include "gov/nasa/jpf/Config.class"
141 include "gov/nasa/jpf/ConfigChangeListener.class"
142 include "gov/nasa/jpf/Config\$MissingRequiredKeyException.class"
143 include "gov/nasa/jpf/JPFClassLoader.class"
144 include "gov/nasa/jpf/JPFShell.class"
145 include "gov/nasa/jpf/JPFException.class"
146 include "gov/nasa/jpf/JPFConfigException.class"
147 include "gov/nasa/jpf/JPFTargetException.class"
148 include "gov/nasa/jpf/util/JPFSiteUtils.class"
149 include "gov/nasa/jpf/util/FileUtils.class"
150 include "gov/nasa/jpf/util/StringMatcher.class"
151 include "gov/nasa/jpf/util/Pair.class"
155 "Implementation-Title": "Java Pathfinder core launch system",
156 "Main-Class": "gov.nasa.jpf.tool.RunJPF"
158 from manifestCommonAttrbutes
162 task createRunTestJar(type: Jar) {
163 archiveName = "RunTest.jar"
164 destinationDir = file("${buildDir}")
166 description = "Creates the ${archiveName} file."
170 dependsOn copyResources
172 from(sourceSets.main.java.outputDir) {
173 include "gov/nasa/jpf/tool/Run.class"
174 include "gov/nasa/jpf/tool/RunTest.class"
175 include "gov/nasa/jpf/tool/RunTest\$Failed.class"
176 include "gov/nasa/jpf/Config.class"
177 include "gov/nasa/jpf/ConfigChangeListener.class"
178 include "gov/nasa/jpf/Config\$MissingRequiredKeyException.class"
179 include "gov/nasa/jpf/JPFClassLoader.class"
180 include "gov/nasa/jpf/JPFException.class"
181 include "gov/nasa/jpf/JPFConfigException.class"
182 include "gov/nasa/jpf/util/JPFSiteUtils.class"
183 include "gov/nasa/jpf/util/FileUtils.class"
184 include "gov/nasa/jpf/util/StringMatcher.class"
185 include "gov/nasa/jpf/util/DevNullPrintStream.class"
189 "Implementation-Title": "Java Pathfinder test launch system",
190 "Main-Class": "gov.nasa.jpf.tool.RunTest"
192 from manifestCommonAttrbutes
198 description = "Generates all core JPF jar files."
200 dependsOn createClassloaderSpecificTestsJar
201 dependsOn createAnnotationsJar
202 dependsOn createJpfClassesJar
203 dependsOn createJpfJar
204 dependsOn createRunJpfJar
205 dependsOn createRunTestJar
209 description = "Runs core regression tests."
214 enableAssertions = true
215 maxHeapSize = "1024m"
217 include "**/*Test.class"
218 exclude "**/SplitInputStreamTest.class"
219 exclude "**/JPF_*.class"
222 events "passed", "skipped", "failed"
225 afterSuite { testDescriptor, result ->
226 if (!testDescriptor.parent) {
227 println "Test Execution: ${result.resultType}"
229 def summaryFields = ["${result.testCount} tests",
230 "${result.successfulTestCount} passed",
231 "${result.failedTestCount} failed",
232 "${result.skippedTestCount} skipped"]
234 println "Summary: " + summaryFields.join(", ")
239 defaultTasks "buildJars"