+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" output="build/main" path="src/main"/>
- <classpathentry kind="src" output="build/peers" path="src/peers"/>
- <classpathentry kind="src" output="build/classes" path="src/classes"/>
- <classpathentry kind="src" output="build/annotations" path="src/annotations"/>
- <classpathentry kind="src" output="build/examples" path="src/examples"/>
- <classpathentry kind="src" output="build/tests" path="src/tests"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="output" path="build"/>
-</classpath>
local.properties
.version
+build.properties
####### General #######
+*.swo
trace
activity*.png
*.class
####### Ant #######
build/
+####### Gradle #######
+.gradle/
+reports/
+
####### Covers NetBeans IDE #######
nbproject/private/
nbbuild/
.nb-gradle/
####### Covers Eclipse IDE #######
+.idea/
.metadata
tmp/
*.tmp
.settings/
.loadpath
.recommenders
+.classpath
+.project
####### Covers JetBrains IDE: IntelliJ #######
+*.iml
+*.ipr
# User-specific stuff:
.idea/**/workspace.xml
+++ /dev/null
-jpf-core
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/annotations" />
- <output-test url="file://$MODULE_DIR$/build/annotations" />
- <exclude-output />
- <content url="file://$MODULE_DIR$/src/annotations">
- <sourceFolder url="file://$MODULE_DIR$/src/annotations" isTestSource="false" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module>
+++ /dev/null
-<component name="ArtifactManager">
- <artifact type="jar" build-on-make="true" name="RunJPF">
- <output-path>$PROJECT_DIR$/build</output-path>
- <root id="archive" name="RunJPF.jar">
- <element id="directory" name="META-INF">
- <element id="file-copy" path="$PROJECT_DIR$/META-INF/RunJPF/MANIFEST.MF" />
- </element>
- <element id="directory" name="gov">
- <element id="directory" name="nasa">
- <element id="directory" name="jpf">
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/Config.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/Config$MissingRequiredKeyException.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/JPFClassLoader.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/JPFConfigException.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/JPFShell.class" />
- <element id="directory" name="tool">
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/tool/Run.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/tool/RunJPF.class" />
- </element>
- <element id="directory" name="util">
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/util/JPFSiteUtils.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/util/FileUtils.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/util/StringMatcher.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/util/Pair.class" />
- </element>
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/JPFException.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/ConfigChangeListener.class" />
- </element>
- </element>
- </element>
- </root>
- </artifact>
-</component>
\ No newline at end of file
+++ /dev/null
-<component name="ArtifactManager">
- <artifact type="jar" build-on-make="true" name="jpf">
- <output-path>$PROJECT_DIR$/build</output-path>
- <root id="archive" name="jpf.jar">
- <element id="module-output" name="main" />
- <element id="module-output" name="peers" />
- <element id="module-output" name="annotations" />
- <element id="directory" name="org">
- <element id="directory" name="junit">
- <element id="file-copy" path="$PROJECT_DIR$/build/classes/org/junit/After.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/classes/org/junit/AfterClass.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/classes/org/junit/Before.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/classes/org/junit/BeforeClass.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/classes/org/junit/Ignore.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/classes/org/junit/Test$None.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/classes/org/junit/Test.class" />
- </element>
- </element>
- </root>
- </artifact>
-</component>
\ No newline at end of file
+++ /dev/null
-<component name="ArtifactManager">
- <artifact type="jar" build-on-make="true" name="jpf-annotations">
- <output-path>$PROJECT_DIR$/build</output-path>
- <root id="archive" name="jpf-annotations.jar">
- <element id="module-output" name="annotations" />
- </root>
- </artifact>
-</component>
\ No newline at end of file
+++ /dev/null
-<component name="ArtifactManager">
- <artifact type="jar" build-on-make="true" name="jpf-classes">
- <output-path>$PROJECT_DIR$/build</output-path>
- <root id="archive" name="jpf-classes.jar">
- <element id="module-output" name="classes" />
- <element id="module-output" name="annotations" />
- <element id="directory" name="gov">
- <element id="directory" name="nasa">
- <element id="directory" name="jpf">
- <element id="directory" name="vm">
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/vm/Verify.class" />
- </element>
- <element id="directory" name="util">
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/util/TypeRef.class" />
- <element id="directory" name="test">
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/util/test/TestJPF.class" />
- <element id="file-copy" path="$PROJECT_DIR$/build/main/gov/nasa/jpf/util/test/TestMultiProcessJPF.class" />
- </element>
- </element>
- </element>
- </element>
- </element>
- </root>
- </artifact>
-</component>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/classes" />
- <output-test url="file://$MODULE_DIR$/build/classes" />
- <exclude-output />
- <content url="file://$MODULE_DIR$/src/classes">
- <sourceFolder url="file://$MODULE_DIR$/src/classes" isTestSource="false" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="module" module-name="annotations" />
- <orderEntry type="module" module-name="main" />
- </component>
-</module>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectCodeStyleSettingsManager">
- <option name="PER_PROJECT_SETTINGS">
- <value>
- <XML>
- <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
- </XML>
- </value>
- </option>
- <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default (1)" />
- </component>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="CompilerConfiguration">
- <option name="DEFAULT_COMPILER" value="Javac" />
- <resourceExtensions />
- <wildcardResourcePatterns>
- <entry name="!?*.java" />
- <entry name="!?*.form" />
- <entry name="!?*.class" />
- <entry name="!?*.groovy" />
- <entry name="!?*.scala" />
- <entry name="!?*.flex" />
- <entry name="!?*.kt" />
- <entry name="!?*.clj" />
- </wildcardResourcePatterns>
- <annotationProcessing>
- <profile default="true" name="Default" enabled="false">
- <processorPath useClasspath="true" />
- </profile>
- </annotationProcessing>
- <bytecodeTargetLevel target="1.8" />
- </component>
-</project>
\ No newline at end of file
+++ /dev/null
-<component name="CopyrightManager">
- <settings default="" />
-</component>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/examples" />
- <output-test url="file://$MODULE_DIR$/build/examples" />
- <exclude-output />
- <content url="file://$MODULE_DIR$/src/examples">
- <sourceFolder url="file://$MODULE_DIR$/src/examples" isTestSource="false" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="module" module-name="annotations" />
- <orderEntry type="module" module-name="main" />
- <orderEntry type="module" module-name="peers" />
- </component>
-</module>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/main" />
- <output-test url="file://$MODULE_DIR$/build/main" />
- <exclude-output />
- <content url="file://$MODULE_DIR$/src/main">
- <sourceFolder url="file://$MODULE_DIR$/src/main" isTestSource="false" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="module" module-name="annotations" />
- </component>
-</module>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ClientPropertiesManager">
- <properties class="javax.swing.AbstractButton">
- <property name="hideActionText" class="java.lang.Boolean" />
- </properties>
- <properties class="javax.swing.JComponent">
- <property name="html.disable" class="java.lang.Boolean" />
- </properties>
- <properties class="javax.swing.JEditorPane">
- <property name="JEditorPane.w3cLengthUnits" class="java.lang.Boolean" />
- <property name="JEditorPane.honorDisplayProperties" class="java.lang.Boolean" />
- <property name="charset" class="java.lang.String" />
- </properties>
- <properties class="javax.swing.JList">
- <property name="List.isFileList" class="java.lang.Boolean" />
- </properties>
- <properties class="javax.swing.JPasswordField">
- <property name="JPasswordField.cutCopyAllowed" class="java.lang.Boolean" />
- </properties>
- <properties class="javax.swing.JSlider">
- <property name="Slider.paintThumbArrowShape" class="java.lang.Boolean" />
- <property name="JSlider.isFilled" class="java.lang.Boolean" />
- </properties>
- <properties class="javax.swing.JTable">
- <property name="Table.isFileList" class="java.lang.Boolean" />
- <property name="JTable.autoStartsEdit" class="java.lang.Boolean" />
- <property name="terminateEditOnFocusLost" class="java.lang.Boolean" />
- </properties>
- <properties class="javax.swing.JToolBar">
- <property name="JToolBar.isRollover" class="java.lang.Boolean" />
- </properties>
- <properties class="javax.swing.JTree">
- <property name="JTree.lineStyle" class="java.lang.String" />
- </properties>
- <properties class="javax.swing.text.JTextComponent">
- <property name="caretAspectRatio" class="java.lang.Double" />
- <property name="caretWidth" class="java.lang.Integer" />
- </properties>
- </component>
- <component name="EntryPointsManager">
- <entry_points version="2.0" />
- </component>
- <component name="ProjectLevelVcsManager" settingsEditedManually="false">
- <OptionsSetting value="true" id="Add" />
- <OptionsSetting value="true" id="Remove" />
- <OptionsSetting value="true" id="Checkout" />
- <OptionsSetting value="true" id="Update" />
- <OptionsSetting value="true" id="Status" />
- <OptionsSetting value="true" id="Edit" />
- <ConfirmationsSetting value="0" id="Add" />
- <ConfirmationsSetting value="0" id="Remove" />
- </component>
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
- <output url="file://$PROJECT_DIR$/build" />
- </component>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/.idea/annotations.iml" filepath="$PROJECT_DIR$/.idea/annotations.iml" />
- <module fileurl="file://$PROJECT_DIR$/.idea/classes.iml" filepath="$PROJECT_DIR$/.idea/classes.iml" />
- <module fileurl="file://$PROJECT_DIR$/.idea/examples.iml" filepath="$PROJECT_DIR$/.idea/examples.iml" />
- <module fileurl="file://$PROJECT_DIR$/.idea/main.iml" filepath="$PROJECT_DIR$/.idea/main.iml" />
- <module fileurl="file://$PROJECT_DIR$/.idea/peers.iml" filepath="$PROJECT_DIR$/.idea/peers.iml" />
- <module fileurl="file://$PROJECT_DIR$/.idea/tests.iml" filepath="$PROJECT_DIR$/.idea/tests.iml" />
- </modules>
- </component>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/peers" />
- <output-test url="file://$MODULE_DIR$/build/peers" />
- <exclude-output />
- <content url="file://$MODULE_DIR$/src/peers">
- <sourceFolder url="file://$MODULE_DIR$/src/peers" isTestSource="false" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="module" module-name="main" />
- <orderEntry type="module" module-name="annotations" />
- </component>
-</module>
+++ /dev/null
-<component name="ProjectRunConfigurationManager">
- <configuration default="false" name="run-example-jpf" type="ContextRunConfiguration" factoryName="ContextRun">
- <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
- <option name="MAIN_CLASS_NAME" value="gov.nasa.jpf.JPF" />
- <option name="VM_PARAMETERS" value="-Xmx1024m -ea" />
- <option name="PROGRAM_PARAMETERS" value="$FilePath$" />
- <option name="WORKING_DIRECTORY" value="" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" value="" />
- <option name="ENABLE_SWING_INSPECTOR" value="false" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <module name="examples" />
- <envs />
- <RunnerSettings RunnerId="Debug">
- <option name="DEBUG_PORT" value="" />
- <option name="TRANSPORT" value="0" />
- <option name="LOCAL" value="true" />
- </RunnerSettings>
- <RunnerSettings RunnerId="Run" />
- <ConfigurationWrapper RunnerId="Debug" />
- <ConfigurationWrapper RunnerId="Run" />
- <method />
- </configuration>
-</component>
\ No newline at end of file
+++ /dev/null
-<component name="ProjectRunConfigurationManager">
- <configuration default="false" name="run-test" type="ContextRunConfiguration" factoryName="ContextRun">
- <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
- <option name="MAIN_CLASS_NAME" value="gov.nasa.jpf.tool.RunTest" />
- <option name="VM_PARAMETERS" value="-Xmx1024m -ea" />
- <option name="PROGRAM_PARAMETERS" value="$FileClass$ $SelectedText$" />
- <option name="WORKING_DIRECTORY" value="" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" value="" />
- <option name="ENABLE_SWING_INSPECTOR" value="false" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <module name="tests" />
- <envs />
- <RunnerSettings RunnerId="Run" />
- <ConfigurationWrapper RunnerId="Run" />
- <method />
- </configuration>
-</component>
\ No newline at end of file
+++ /dev/null
-<component name="DependencyValidationManager">
- <state>
- <option name="SKIP_IMPORT_STATEMENTS" value="false" />
- </state>
-</component>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/tests" />
- <output-test url="file://$MODULE_DIR$/build/tests" />
- <exclude-output />
- <content url="file://$MODULE_DIR$/src/tests">
- <sourceFolder url="file://$MODULE_DIR$/src/tests" isTestSource="false" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="module" module-name="annotations" />
- <orderEntry type="module" module-name="main" />
- <orderEntry type="module" module-name="classes" />
- <orderEntry type="module" module-name="peers" />
- </component>
-</module>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="$PROJECT_DIR$" vcs="hg4idea" />
- </component>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>jpf-core</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
- <arguments>
- <dictionary>
- <key>LaunchConfigHandle</key>
- <value><project>/eclipse/AntBuilder.launch</value>
- </dictionary>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
language: java
-before_install:
- - mkdir ~/junit
- - ln -s /usr/share/java/junit4.jar ~/junit
- - ln -s /usr/share/java/hamcrest-core.jar ~/junit
- - export JUNIT_HOME=~/junit
-
-install: ant test
jdk:
- oraclejdk8
+script:
+ - ./gradlew check
+
+before_cache:
+ - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
+ - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
+
+cache:
+ directories:
+ - $HOME/.gradle/caches/
+ - $HOME/.gradle/wrapper/
+
addons:
apt:
packages:
- oracle-java8-installer
- - junit4
\ No newline at end of file
+++ /dev/null
-Manifest-Version: 1.0
-Main-Class: gov.nasa.jpf.tool.RunJPF
-
-# Java PathFinder [![Build Status](https://travis-ci.org/javapathfinder/jpf-core.svg?branch=master)](https://travis-ci.org/javapathfinder/jpf-core)
-
+# Java PathFinder
+[![Build Status](https://travis-ci.org/javapathfinder/jpf-core.svg?branch=master)](https://travis-ci.org/javapathfinder/jpf-core)
+[![codecov](https://codecov.io/gh/javapathfinder/jpf-core/branch/master/graph/badge.svg)](https://codecov.io/gh/javapathfinder/jpf-core)
An extensible software model checking framework for Java bytecode programs
--- /dev/null
+apply plugin: "java"
+
+def getCurrentVersion() {
+ "DEVELOPMENT-SNAPSHOT"
+}
+
+version = currentVersion
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ testImplementation "junit:junit:4.12"
+}
+
+ext.manifestCommonAttrbutes = manifest {
+ attributes(
+ "Built-By": System.getProperty("user.name"),
+ "Implementation-Vendor": "NASA Ames Research Center",
+ "Implementation-Version": version
+ )
+}
+
+apply from: "gradle/ide-support.gradle"
+apply from: "gradle/distribution.gradle"
+apply from: "gradle/source-sets.gradle"
+apply from: "gradle/build-resources.gradle"
+
+task compile {
+ group = "JPF Build"
+ description = "Compiles all JPF core sources."
+
+ // These are automatic generated tasks from the Java Gradle Plugin.
+ // Gradle is able to infer the order of the source sets
+ // due to the compileClasspath attribute
+ dependsOn compileTestJava
+ dependsOn compileExamplesJava
+}
+
+task createJpfClassesJar(type: Jar) {
+ archiveName = "jpf-classes.jar"
+ destinationDir = file("${buildDir}")
+
+ group = "JPF Jars"
+ description = "Creates the ${archiveName} file."
+
+ dependsOn compile
+ dependsOn copyResources
+
+ from sourceSets.classes.java.outputDir
+ from sourceSets.annotations.java.outputDir
+ from(sourceSets.main.java.outputDir) {
+ include "gov/nasa/jpf/JPFShell.class"
+ include "gov/nasa/jpf/vm/Verify.class"
+ include "gov/nasa/jpf/util/TypeRef.class"
+ include "gov/nasa/jpf/util/test/TestJPF.class"
+ include "gov/nasa/jpf/util/test/TestMultiProcessJPF.class"
+ include "gov/nasa/jpf/util/test/TestJPFHelper.class"
+ }
+}
+
+task createJpfJar(type: Jar) {
+ archiveName = "jpf.jar"
+ destinationDir = file("${buildDir}")
+
+ group = "JPF Jars"
+ description = "Creates the ${archiveName} file."
+
+ dependsOn compile
+ dependsOn copyResources
+
+ from sourceSets.main.java.outputDir
+ from sourceSets.peers.java.outputDir
+ from sourceSets.annotations.java.outputDir
+ from(sourceSets.classes.java.outputDir) {
+ include "org/junit/*.class"
+ }
+
+ manifest {
+ attributes "Implementation-Title": "Java Pathfinder core system"
+ from manifestCommonAttrbutes
+ }
+}
+
+task createAnnotationsJar(type: Jar) {
+ archiveName = "jpf-annotations.jar"
+ destinationDir = file("${buildDir}")
+
+ group = "JPF Jars"
+ description = "Creates the ${archiveName} file."
+
+ dependsOn compile
+ dependsOn copyResources
+
+ from sourceSets.annotations.java.outputDir
+}
+
+task createClassloaderSpecificTestsJar(type: Jar) {
+ archiveName = "classloader_specific_tests.jar"
+ destinationDir = file("${buildDir}")
+
+ group = "JPF Jars"
+ description = "Creates the ${archiveName} file."
+
+ dependsOn compile
+ dependsOn copyResources
+
+ from(sourceSets.test.java.outputDir) {
+ include "classloader_specific_tests/*.class"
+ }
+}
+
+task createRunJpfJar(type: Jar) {
+ archiveName = "RunJPF.jar"
+ destinationDir = file("${buildDir}")
+
+ description = "Creates the ${archiveName} file."
+ group = "JPF Jars"
+
+ dependsOn compile
+ dependsOn copyResources
+
+ from(sourceSets.main.java.outputDir) {
+ include "gov/nasa/jpf/tool/Run.class"
+ include "gov/nasa/jpf/tool/RunJPF.class"
+ include "gov/nasa/jpf/Config.class"
+ include "gov/nasa/jpf/ConfigChangeListener.class"
+ include "gov/nasa/jpf/Config\$MissingRequiredKeyException.class"
+ include "gov/nasa/jpf/JPFClassLoader.class"
+ include "gov/nasa/jpf/JPFShell.class"
+ include "gov/nasa/jpf/JPFException.class"
+ include "gov/nasa/jpf/JPFConfigException.class"
+ include "gov/nasa/jpf/JPFTargetException.class"
+ include "gov/nasa/jpf/util/JPFSiteUtils.class"
+ include "gov/nasa/jpf/util/FileUtils.class"
+ include "gov/nasa/jpf/util/StringMatcher.class"
+ include "gov/nasa/jpf/util/Pair.class"
+ }
+ manifest {
+ attributes(
+ "Implementation-Title": "Java Pathfinder core launch system",
+ "Main-Class": "gov.nasa.jpf.tool.RunJPF"
+ )
+ from manifestCommonAttrbutes
+ }
+}
+
+task createRunTestJar(type: Jar) {
+ archiveName = "RunTest.jar"
+ destinationDir = file("${buildDir}")
+
+ description = "Creates the ${archiveName} file."
+ group = "JPF Jars"
+
+ dependsOn compile
+ dependsOn copyResources
+
+ from(sourceSets.main.java.outputDir) {
+ include "gov/nasa/jpf/tool/Run.class"
+ include "gov/nasa/jpf/tool/RunTest.class"
+ include "gov/nasa/jpf/tool/RunTest\$Failed.class"
+ include "gov/nasa/jpf/Config.class"
+ include "gov/nasa/jpf/ConfigChangeListener.class"
+ include "gov/nasa/jpf/Config\$MissingRequiredKeyException.class"
+ include "gov/nasa/jpf/JPFClassLoader.class"
+ include "gov/nasa/jpf/JPFException.class"
+ include "gov/nasa/jpf/JPFConfigException.class"
+ include "gov/nasa/jpf/util/JPFSiteUtils.class"
+ include "gov/nasa/jpf/util/FileUtils.class"
+ include "gov/nasa/jpf/util/StringMatcher.class"
+ include "gov/nasa/jpf/util/DevNullPrintStream.class"
+ }
+ manifest {
+ attributes(
+ "Implementation-Title": "Java Pathfinder test launch system",
+ "Main-Class": "gov.nasa.jpf.tool.RunTest"
+ )
+ from manifestCommonAttrbutes
+ }
+}
+
+task buildJars {
+ group = "JPF Build"
+ description = "Generates all core JPF jar files."
+
+ dependsOn createClassloaderSpecificTestsJar
+ dependsOn createAnnotationsJar
+ dependsOn createJpfClassesJar
+ dependsOn createJpfJar
+ dependsOn createRunJpfJar
+ dependsOn createRunTestJar
+}
+
+test {
+ description = "Runs core regression tests."
+
+ dependsOn buildJars
+
+ forkEvery = 1
+ enableAssertions = true
+ maxHeapSize = "1024m"
+
+ include "**/*Test.class"
+ exclude "**/SplitInputStreamTest.class"
+ exclude "**/JPF_*.class"
+
+ testLogging {
+ events "passed", "skipped", "failed"
+ }
+
+ afterSuite { testDescriptor, result ->
+ if (!testDescriptor.parent) {
+ println "Test Execution: ${result.resultType}"
+
+ def summaryFields = ["${result.testCount} tests",
+ "${result.successfulTestCount} passed",
+ "${result.failedTestCount} failed",
+ "${result.skippedTestCount} skipped"]
+
+ println "Summary: " + summaryFields.join(", ")
+ }
+ }
+}
+
+defaultTasks "buildJars"
+++ /dev/null
-#JPF core build info
-#Fri Jan 13 13:32:58 PST 2012
-
-revision=647\:b8b86ac8f503
-
-date.tip=2012-01-13 13\:30 -0800
-
-author=Peter Mehlitz <Peter.C.Mehlitz@nasa.gov>
-
-repository=file\://flyer/Users/pmehlitz/projects/eclipse/jpf-core
-
-upstream=http\://babelfish.arc.nasa.gov/hg/jpf/jpf-core
-
-java.version=1.6.0_26
-
-os.arch=x86_64
-
-os.name=Mac OS X
-
-os.version=10.5.8
-
-user.country=US
+++ /dev/null
-<?xml version="1.0" ?>
-
-<!--
- build.xml - the JPF core build script
- using Ant (http://jakarta.apache.org/ant)
- public targets:
-
- build (default) compile classes and build JPF jar files
- compile compile JPF and its specific (modeled) environment libraries
- test run all JPF tests
- clean remove the files that have been generated by the build process
- buildinfo create buildinfo properties file
--->
-
-<project name="jpf-core" default="build" basedir=".">
-
- <!-- ===================== ===== COMMON SECTION ========================== -->
-
- <!--
- local props have to come first, because Ant properties are immutable
- NOTE: this file is local - it is never in the repository!
- -->
- <property file="local.properties"/>
- <property environment="env"/>
-
- <!-- compiler settings -->
- <property name="debug" value="on"/>
- <property name="deprecation" value="on"/>
-
- <uptodate property="build_uptodate" targetfile="build/main/gov/nasa/jpf/build.properties" srcfile="build.properties"/>
-
-
- <!-- generic classpath settings -->
- <path id="lib.path">
- <pathelement location="build/main"/>
- <pathelement location="build/peers"/>
- <pathelement location="build/annotations"/>
- <fileset dir=".">
- <include name="lib/*.jar"/>
- </fileset>
- </path>
-
-
- <!-- init: common initialization -->
- <target name="-init">
- <tstamp/>
-
- <mkdir dir="build"/> <!-- the build root -->
-
- <!-- the things that have to be in the classpath of whatever runs Ant -->
- <available property="have_javac" classname="com.sun.tools.javac.Main"/>
- <fail unless="have_javac">no javac was found __or__ check http://babelfish.arc.nasa.gov/trac/jpf/wiki/install/build for possible solutions</fail>
-
-
- <available file="src/main" type="dir" property="have_main"/>
- <available file="src/annotations" type="dir" property="have_annotations"/>
- <available file="src/peers" type="dir" property="have_peers"/>
- <available file="src/classes" type="dir" property="have_classes"/>
- <available file="src/tests" type="dir" property="have_tests"/>
- <available file="src/examples" type="dir" property="have_examples"/>
-
- <available file=".hg" type="dir" property="have_hg"/>
-
- <!-- for the core, it's a fail if any of these is missing -->
- <fail unless="have_main">no src/main</fail>
- <fail unless="have_annotations">no src/annotations</fail>
- <fail unless="have_peers">no src/peers</fail>
- <fail unless="have_classes">no src/classes</fail>
- <fail unless="have_tests">no src/tests</fail>
- <fail unless="have_examples">no src/examples</fail>
-
- <condition property="have_java8">
- <equals arg1="${ant.java.version}" arg2="1.8"/>
- </condition>
-
- </target>
-
-
- <!-- ======================= COMPILE SECTION ============================= -->
-
- <!-- public compile -->
- <target name="compile" depends="-init,-compile-annotations,-compile-main,-compile-peers,-compile-classes,-compile-tests,-compile-examples"
- description="compile all JPF core sources" >
- <copy file="build.properties" todir="build/main/gov/nasa/jpf" failonerror="false"/>
- </target>
-
- <target name="-compile-annotations" if="have_annotations">
- <mkdir dir="build/annotations"/>
- <javac srcdir="src/annotations" destdir="build/annotations" includeantruntime="false"
- debug="${debug}" deprecation="${deprecation}" classpath=""/>
- </target>
-
- <target name="-compile-main" if="have_main">
- <mkdir dir="build/main"/>
- <javac srcdir="src/main" destdir="build/main" includeantruntime="false"
- debug="${debug}" deprecation="${deprecation}" classpathref="lib.path">
- <!--
- <compilerarg value="-XDenableSunApiLintControl"/>
- <compilerarg value="-Xlint:all"/>
- -->
- </javac>
-
- </target>
-
- <target name="-compile-peers" if="have_peers" depends="-compile-main" >
- <mkdir dir="build/peers"/>
- <javac srcdir="src/peers" destdir="build/peers" includeantruntime="false"
- debug="${debug}" deprecation="${deprecation}" classpathref="lib.path">
- <compilerarg value="-XDenableSunApiLintControl"/>
- <compilerarg value="-Xlint:all,-sunapi,-serial"/>
- </javac>
- </target>
-
- <target name="-compile-classes" if="have_classes" depends="-compile-annotations,-compile-main" >
- <mkdir dir="build/classes"/>
- <javac srcdir="src/classes" destdir="build/classes" includeantruntime="false"
- debug="${debug}" deprecation="${deprecation}">
- <compilerarg value="-XDenableSunApiLintControl"/>
- <compilerarg value="-Xlint:all,-sunapi"/>
- <classpath>
- <path refid="lib.path"/>
- <pathelement location="build/annotations"/>
- </classpath>
- </javac>
- </target>
-
- <target name="-compile-tests" if="have_tests" depends="-compile-annotations,-compile-main,-compile-classes">
- <mkdir dir="build/tests"/>
-
- <javac sourcepath="" srcdir="src/tests" destdir="build/tests" includeantruntime="false"
- debug="${debug}" deprecation="${deprecation}"
- includes="*,gov/nasa/jpf/**,classloader_specific_tests/**">
- <compilerarg value="-XDenableSunApiLintControl"/>
- <compilerarg value="-Xlint:all,-sunapi,-serial,-rawtypes,-unchecked"/>
-
- <include name="*gov/nasa/jpf/**"/>
- <include name="classloader_specific_tests/**"/>
- <include name="java8/**" if="have_java8"/>
-
- <classpath>
- <path refid="lib.path"/>
- <pathelement location="build/annotations"/>
- <pathelement location="build/classes"/>
- </classpath>
- </javac>
- </target>
-
- <target name="-compile-examples" if="have_examples" depends="-compile-annotations,-compile-main">
- <mkdir dir="build/examples" />
- <javac srcdir="src/examples" destdir="build/examples" includeantruntime="false"
- debug="${debug}" deprecation="${deprecation}"
- classpathref="lib.path"/>
- </target>
-
-
- <!-- ======================= MISC SECTION ================================ -->
-
- <target name="-version" if="have_hg">
- <exec executable="hg" outputproperty="version" searchpath="true" failonerror="false" failifexecutionfails="false">
- <arg value="identify"/>
- <arg value="-n"/>
- </exec>
-
- <!-- .version is in .hgignore -->
- <echo message="${version}${line.separator}" file=".version"/>
- </target>
-
- <!-- build jars -->
- <target name="build" depends="-cond-clean,compile,-version"
- description="generate the core JPF jar files" >
-
- <copy file=".version" todir="build/main/gov/nasa/jpf" failonerror="false"/>
-
- <jar jarfile="build/jpf-classes.jar">
- <fileset dir="build/classes"/>
- <fileset dir="build/annotations"/>
-
- <fileset dir="build/main">
- <!-- we need this one in case a SUT uses the Verify API -->
- <include name="gov/nasa/jpf/vm/Verify.class"/>
-
- <!-- these are required if we run TestJPF derived test classes -->
- <include name="gov/nasa/jpf/JPFShell.class"/>
- <include name="gov/nasa/jpf/util/TypeRef.class"/>
- <include name="gov/nasa/jpf/util/test/TestJPF.class"/>
- <include name="gov/nasa/jpf/util/test/TestMultiProcessJPF.class"/>
- <include name="gov/nasa/jpf/util/test/TestJPFHelper.class"/>
- </fileset>
- </jar>
-
- <jar jarfile="build/jpf.jar" index="true">
- <fileset dir="build/main"/>
- <fileset dir="build/peers"/>
- <!-- this is redundant, but if JPF is executed from java.class.path it wouldn't find annotations -->
- <fileset dir="build/annotations"/>
-
- <!-- this is for annotations used by JPF regression tests, which can also be executed outside of junit -->
- <fileset dir="build/classes">
- <include name="org/junit/*.class"/>
- </fileset>
-
- <manifest>
- <attribute name="Built-By" value="${user.name}"/>
- <attribute name="Implementation-Vendor" value="NASA Ames Research Center"/>
- <attribute name="Implementation-Title" value="Java Pathfinder core system"/>
- <attribute name="Implementation-Version" value="${jpf.version}"/>
- </manifest>
- </jar>
-
- <!-- optional jar that contains annotations to be used in non-JPF dependent apps -->
- <jar jarfile="build/jpf-annotations.jar">
- <fileset dir="build/annotations"/>
- </jar>
-
- <!-- this jar is needed to test classloaders, it is used by URLClassLoaderTest -->
- <jar jarfile="build/classloader_specific_tests.jar">
- <fileset dir="build/tests">
- <include name="classloader_specific_tests/*.class"/>
- </fileset>
- </jar>
-
- <jar jarfile="build/RunJPF.jar">
- <fileset dir="build/main">
- <include name="gov/nasa/jpf/tool/Run.class"/>
- <include name="gov/nasa/jpf/tool/RunJPF.class"/>
- <include name="gov/nasa/jpf/Config.class"/>
- <include name="gov/nasa/jpf/ConfigChangeListener.class"/>
- <include name="gov/nasa/jpf/Config$MissingRequiredKeyException.class"/>
- <include name="gov/nasa/jpf/JPFClassLoader.class"/>
- <include name="gov/nasa/jpf/JPFShell.class"/>
- <include name="gov/nasa/jpf/JPFException.class"/>
- <include name="gov/nasa/jpf/JPFConfigException.class"/>
- <include name="gov/nasa/jpf/JPFTargetException.class"/>
- <include name="gov/nasa/jpf/util/JPFSiteUtils.class"/>
- <include name="gov/nasa/jpf/util/FileUtils.class"/>
- <include name="gov/nasa/jpf/util/StringMatcher.class"/>
- <include name="gov/nasa/jpf/util/Pair.class"/>
- </fileset>
-
- <manifest>
- <attribute name="Built-By" value="${user.name}"/>
- <attribute name="Implementation-Vendor" value="NASA Ames Research Center"/>
- <attribute name="Implementation-Title" value="Java Pathfinder core launch system"/>
- <attribute name="Implementation-Version" value="${jpf.version}"/>
- <attribute name="Main-Class" value="gov.nasa.jpf.tool.RunJPF"/>
- </manifest>
- </jar>
-
- <jar jarfile="build/RunTest.jar">
- <fileset dir="build/main">
- <include name="gov/nasa/jpf/tool/Run.class"/>
- <include name="gov/nasa/jpf/tool/RunTest.class"/>
- <include name="gov/nasa/jpf/tool/RunTest$Failed.class"/>
- <include name="gov/nasa/jpf/Config.class"/>
- <include name="gov/nasa/jpf/ConfigChangeListener.class"/>
- <include name="gov/nasa/jpf/Config$MissingRequiredKeyException.class"/>
- <include name="gov/nasa/jpf/JPFClassLoader.class"/>
- <include name="gov/nasa/jpf/JPFException.class"/>
- <include name="gov/nasa/jpf/JPFConfigException.class"/>
- <include name="gov/nasa/jpf/util/JPFSiteUtils.class"/>
- <include name="gov/nasa/jpf/util/FileUtils.class"/>
- <include name="gov/nasa/jpf/util/StringMatcher.class"/>
- <include name="gov/nasa/jpf/util/DevNullPrintStream.class"/>
- </fileset>
- <manifest>
- <attribute name="Built-By" value="${user.name}"/>
- <attribute name="Implementation-Vendor" value="NASA Ames Research Center"/>
- <attribute name="Implementation-Title" value="Java Pathfinder test launch system"/>
- <attribute name="Implementation-Version" value="${jpf.version}"/>
- <attribute name="Main-Class" value="gov.nasa.jpf.tool.RunTest"/>
- </manifest>
- </jar>
-
- </target>
-
-
- <!-- public clean: cleanup from previous tasks/builds -->
- <target name="clean"
- description="remove all build artifacts and temporary files">
- <delete dir="build" failonerror="false"/>
- <delete dir="tmp" failonerror="false"/>
- <delete>
- <fileset dir="." includes="**/*~" defaultexcludes="no" />
- <fileset dir="." includes="**/*.bak" defaultexcludes="no" />
- <fileset dir="." includes="**/error.xml" />
- </delete>
- </target>
-
- <target name="-cond-clean" unless="build_uptodate"
- description="remove all build artifacts and temporaries if build.properties has been changed">
- <antcall target="clean"/>
- </target>
-
-
- <!-- generate buildinfo file -->
- <target name="buildinfo" description="create buildinfo properties">
-
- <!-- make this fail if there are uncommitted changes -->
- <exec executable="hg" outputproperty="uncommitted_changes" failifexecutionfails="true">
- <arg value="status"/>
- </exec>
- <condition property="have_uncommitted_changes">
- <length string="${uncommitted_changes}" trim="true" when="greater" length="0"/>
- </condition>
-<!--
- <fail if="have_uncommitted_changes">hg status shows uncommitted changes:
- ${uncommitted_changes}
- </fail>
--->
- <exec executable="hg" outputproperty="hg.tip.id" failifexecutionfails="false">
- <arg value="tip"/>
- <arg value="--template"/>
- <arg value="{rev}:{node|short}\n"/>
- </exec>
- <exec executable="hg" outputproperty="hg.author" failifexecutionfails="false">
- <arg value="tip"/>
- <arg value="--template"/>
- <arg value="{author}\n"/>
- </exec>
- <exec executable="hg" outputproperty="hg.tip.date" failifexecutionfails="false">
- <arg value="tip"/>
- <arg value="--template"/>
- <arg value="{date|isodate}\n"/>
- </exec>
- <exec executable="hg" outputproperty="hg.paths.default" failifexecutionfails="false">
- <arg value="showconfig"/>
- <arg value="paths.default"/>
- </exec>
-
- <exec executable="hostname" failifexecutionfails="false" outputproperty="env.COMPUTERNAME"/>
- <property name="hostname" value="${env.COMPUTERNAME}"/> <!-- Windows doesn't have hostname -->
-
- <!-- it seems the 'propertyfile' task just appends -->
- <delete file="build.properties" failonerror="false"/>
-
- <propertyfile file="build.properties" comment="JPF core build info">
- <entry key="revision" value="${hg.tip.id}"/>
- <entry key="date.tip" value="${hg.tip.date}"/>
-
- <entry key="author" value="${hg.author}"/>
- <entry key="repository" value="file://${hostname}${basedir}"/>
- <entry key="upstream" value="${hg.paths.default}"/>
-
- <entry key="java.version" value="${java.version}"/>
-
- <entry key="os.arch" value="${os.arch}"/>
- <entry key="os.name" value="${os.name}"/>
- <entry key="os.version" value="${os.version}"/>
- <entry key="user.country" value="${user.country}"/>
-
- </propertyfile>
-
- </target>
-
- <target name="dist" description="build binary distribution">
- <delete file="build/${ant.project.name}*.zip"/>
-
- <exec executable="hg" outputproperty="hg.tip.rev" failifexecutionfails="false">
- <arg value="tip"/>
- <arg value="--template"/>
- <arg value="-r{rev}"/>
- </exec>
-
- <!-- 2do this seems stupid - there needs to be a better way to re-base (zip basedir fails miserably) -->
- <zip destfile="build/${ant.project.name}${hg.tip.rev}.zip" update="false" excludes="*">
- <zipfileset file="jpf.properties" prefix="${ant.project.name}"/>
- <zipfileset file="build.properties" prefix="${ant.project.name}"/>
- <zipfileset dir="lib" prefix="${ant.project.name}/lib"/>
- <zipfileset dir="bin" prefix="${ant.project.name}/bin" filemode="754"/>
- <zipfileset dir="build" includes="*.jar" prefix="${ant.project.name}/build"/>
- </zip>
- </target>
-
- <target name="src-dist" description="build source distribution">
- <delete file="build/${ant.project.name}*-src.zip"/>
-
- <exec executable="hg" outputproperty="hg.tip.rev" failifexecutionfails="false">
- <arg value="tip"/>
- <arg value="--template"/>
- <arg value="-r{rev}"/>
- </exec>
-
- <zip destfile="build/${ant.project.name}${hg.tip.rev}-src.zip" update="false" excludes="*" whenempty="skip">
- <zipfileset file="jpf.properties" prefix="${ant.project.name}"/>
- <zipfileset file="build.properties" prefix="${ant.project.name}"/>
- <zipfileset file="build.xml" prefix="${ant.project.name}"/>
- <zipfileset file="LICENSE-2.0.txt" prefix="${ant.project.name}"/>
- <zipfileset file="README" prefix="${ant.project.name}"/>
- <zipfileset dir="src" prefix="${ant.project.name}/src"/>
- <zipfileset dir="lib" prefix="${ant.project.name}/lib" erroronmissingdir="false"/>
- <zipfileset dir="bin" prefix="${ant.project.name}/bin" filemode="754"/>
- <zipfileset dir="tools" prefix="${ant.project.name}/tools" erroronmissingdir="false"/>
-
- <!-- IDE related configuration files -->
- <zipfileset file=".project" prefix="${ant.project.name}"/>
- <zipfileset file=".classpath" prefix="${ant.project.name}"/>
- <zipfileset dir="eclipse" prefix="${ant.project.name}/eclipse"/>
-
- <zipfileset dir="nbproject" prefix="${ant.project.name}/nbproject"/>
- </zip>
- </target>
-
- <!-- ======================= TEST SECTION ================================ -->
-
-
-
- <target name="test" depends="build"
- description="run core regression tests" if="have_tests">
-
- <!-- note this can be directly set in local.properties, which overrides this setting -->
- <property name="junit.home" value="${env.JUNIT_HOME}"/>
-
- <condition property="junit.usefile">
- <!-- don't set if this is running from within an IDE that collects output -->
- <not>
- <isset property="netbeans.home"/>
- </not>
- </condition>
-
- <junit printsummary="on" showoutput="off"
- haltonfailure="no" logfailedtests="true" failureproperty="test.failed"
- dir="${basedir}" fork="yes" forkmode="perTest" maxmemory="1024m" outputtoformatters="true">
- <formatter type="plain" usefile="${junit.usefile}"/>
-
- <assertions>
- <enable/>
- </assertions>
-
- <classpath>
- <path refid="lib.path"/>
- <pathelement location="build/tests"/>
- <pathelement location="build/classes"/>
- <pathelement location="build/annotations"/>
-
- <fileset dir="${junit.home}">
- <include name="**/*.jar"/>
- </fileset>
- </classpath>
-
- <batchtest todir="build/tests">
- <fileset dir="build/tests">
- <exclude name="**/JPF_*.class"/>
- <include name="**/*Test.class"/>
-
- <exclude name="**/SplitInputStreamTest.class"/>
- </fileset>
- </batchtest>
-
- </junit>
-
- <fail if="test.failed" />
-
- </target>
-
-
-</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">\r
-<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_CLEAN_TARGETS" value="clean,"/>\r
-<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>\r
-<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="true"/>\r
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"/>\r
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"/>\r
-<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>\r
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ant.internal.ui.antsupport.InternalAntRunner"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="jpf-core"/>\r
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${build_project}/build.xml"/>\r
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,auto,clean"/>\r
-<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>\r
-<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>\r
-</launchConfiguration>\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/jpf-core/src/main/gov/nasa/jpf/tool/RunJPF.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
-<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <sourceLookupDirector> <sourceContainers duplicates="false"> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;javaProject name=&quot;jpf-core&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;packageFragmentRoot handle=&quot;=jpf-core/lib\/junit-4.10.jar&quot;/&gt;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;default/&gt;&#10;" typeId="org.eclipse.debug.core.containerType.default"/> </sourceContainers> </sourceLookupDirector> "/>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-</listAttribute>
-<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER" javaProject="jpf-core" path="1" type="4"/> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath"> <memento exportedEntriesOnly="false" project="jpf-core"/> </runtimeClasspathEntry> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.variableClasspathEntry"> <memento path="3" variableString="${resource_loc}/build/main"/> </runtimeClasspathEntry> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.variableClasspathEntry"> <memento path="3" variableString="${resource_loc}/build/peers"/> </runtimeClasspathEntry> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.variableClasspathEntry"> <memento path="3" variableString="${resource_loc}/lib/*"/> </runtimeClasspathEntry> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.variableClasspathEntry"> <memento path="3" variableString="${resource_loc}/build/tests"/> </runtimeClasspathEntry> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.variableClasspathEntry"> <memento path="3" variableString="${resource_loc}/build/examples"/> </runtimeClasspathEntry> "/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="gov.nasa.jpf.tool.RunJPF"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value=""${resource_loc}""/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="jpf-core"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx1024m -ea"/>
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc}"/>
-</launchConfiguration>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/jpf-core/src/main/gov/nasa/jpf/tool/RunTest.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
-<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <sourceLookupDirector> <sourceContainers duplicates="true"> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;default/&gt;&#10;" typeId="org.eclipse.debug.core.containerType.default"/> </sourceContainers> </sourceLookupDirector> "/>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-</listAttribute>
-<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER" javaProject="jpf-core" path="1" type="4"/> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath"> <memento exportedEntriesOnly="false" project="jpf-core"/> </runtimeClasspathEntry> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.variableClasspathEntry"> <memento path="3" variableString="${project_loc}/build/main"/> </runtimeClasspathEntry> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.variableClasspathEntry"> <memento path="3" variableString="${project_loc}/peers"/> </runtimeClasspathEntry> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.variableClasspathEntry"> <memento path="3" variableString="${project_loc}/lib/*"/> </runtimeClasspathEntry> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.variableClasspathEntry"> <memento path="3" variableString="${project_loc}/build/tests"/> </runtimeClasspathEntry> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.variableClasspathEntry"> <memento path="3" variableString="${project_loc}/build/examples"/> </runtimeClasspathEntry> "/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="gov.nasa.jpf.tool.RunTest"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="${java_type_name} ${string_prompt}"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="jpf-core"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx2048m -ea"/>
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc}"/>
-</launchConfiguration>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/jpf-core/src/main/gov/nasa/jpf/tool/RunJPF.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="gov.nasa.jpf.tool.RunJPF"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-addproject"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="jpf-core"/>
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc}"/>
-</launchConfiguration>
--- /dev/null
+task generateVersion {
+ group = "JPF Build Resources"
+ description = "Generates the .version file with the current revision hash"
+ doLast {
+ def revision = "git rev-parse HEAD".execute().text
+ new File(".version").withWriter("utf-8") { writer ->
+ writer.writeLine revision
+ }
+ }
+}
+
+task generateBuildInfo {
+ group = "JPF Build Resources"
+ description = "Generates the build.properties file."
+ doLast {
+
+ Properties info = new Properties()
+
+ def status = "git status --short".execute().text.trim()
+ def revision = "git rev-parse --short HEAD".execute().text.trim()
+ def userName = ["git", "log", "-1", "--format=%an <%ae>"].execute().text.trim()
+ def date = "git log -1 --format=%ci".execute().text.trim()
+
+ info.setProperty("revision", revision)
+ info.setProperty("date", date)
+ info.setProperty("author", userName)
+ info.setProperty("os.arch", System.getProperty("os.arch"))
+ info.setProperty("os.name", System.getProperty("os.name"))
+ info.setProperty("user.country", System.getProperty("user.country"))
+ info.setProperty("java.version", System.getProperty("java.version"))
+
+ def writer = new File("build.properties").newWriter("utf-8")
+ info.store(writer, "JPF core build info")
+ writer.close()
+ }
+}
+
+task copyResources(type: Copy) {
+ group = "JPF Build Resources"
+ description = "Copies .version and build.properties files to the build directory."
+
+ dependsOn generateBuildInfo
+ dependsOn generateVersion
+
+ from "build.properties"
+ into sourceSets.main.java.outputDir.path + "/gov/nasa/jpf"
+
+ from ".version"
+ into sourceSets.main.java.outputDir.path + "/gov/nasa/jpf"
+}
--- /dev/null
+task srcDist(type: Zip) {
+ group = "JPF Distribution"
+ description = "Builds the source distribution."
+
+ baseName = project.name
+ version = project.version
+ classifier = "src"
+ extension = "zip"
+
+ destinationDir = buildDir
+ includeEmptyDirs = false
+
+ from projectDir
+ include "build.gradle"
+ include "settings.gradle"
+ include "gradlew"
+ include "gradlew.bat"
+ include "gradle/**/*"
+ include "src/**/*"
+ include "bin/**/*"
+ include "jpf.properties"
+ include "build.properties"
+ include "LICENSE-2.0.txt"
+ include "README.md"
+}
+
+task dist(type: Zip) {
+ group = "JPF Distribution"
+ description = "Builds binary distribution."
+
+ baseName = project.name
+ version = project.version
+ extension = "zip"
+
+ destinationDir = buildDir
+ includeEmptyDirs = false
+
+ from projectDir
+ include "jpf.properties"
+ include "build.properties"
+ include "bin/**/*"
+ include "lib/**/*"
+ include "${buildDir.name}/**/*.jar"
+}
+
--- /dev/null
+apply plugin: "eclipse"
+
+eclipse {
+ group = "JPF IDE Support"
+
+ project {
+ natures = ["org.eclipse.buildship.core.gradleprojectnature"]
+ }
+ classpath {
+ defaultOutputDir = buildDir
+ file {
+ whenMerged { classpath ->
+ classpath.entries.findAll{ entry -> entry.kind == "src" }*.every { srcNode ->
+ srcNode.output = srcNode.output.replace("bin", "${buildDir.name}")
+ }
+ }
+ }
+ }
+}
--- /dev/null
+sourceSets {
+ annotations {
+ java.srcDirs = ["src/annotations"]
+ java.outputDir = file("${buildDir}/annotations")
+ }
+ main {
+ java.srcDirs = ["src/main"]
+ java.outputDir = file("${buildDir}/main")
+ compileClasspath += sourceSets.annotations.output
+ }
+ examples {
+ java.srcDirs = ["src/examples"]
+ java.outputDir = file("${buildDir}/examples")
+ compileClasspath += sourceSets.main.output
+ }
+ classes {
+ java.srcDirs = ["src/classes"]
+ java.outputDir = file("${buildDir}/classes")
+ compileClasspath += sourceSets.main.output + sourceSets.annotations.output
+ }
+ peers {
+ java.srcDirs = ["src/peers"]
+ java.outputDir = file("${buildDir}/peers")
+ compileClasspath += sourceSets.main.output + sourceSets.annotations.output
+ }
+ test {
+ java.srcDirs = ["src/tests"]
+ java.outputDir = file("${buildDir}/tests")
+ compileClasspath += sourceSets.annotations.output + sourceSets.classes.output + sourceSets.peers.output
+ runtimeClasspath += compileClasspath
+ }
+}
--- /dev/null
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
--- /dev/null
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
--- /dev/null
+@if "%DEBUG%" == "" @echo off\r
+@rem ##########################################################################\r
+@rem\r
+@rem Gradle startup script for Windows\r
+@rem\r
+@rem ##########################################################################\r
+\r
+@rem Set local scope for the variables with windows NT shell\r
+if "%OS%"=="Windows_NT" setlocal\r
+\r
+set DIRNAME=%~dp0\r
+if "%DIRNAME%" == "" set DIRNAME=.\r
+set APP_BASE_NAME=%~n0\r
+set APP_HOME=%DIRNAME%\r
+\r
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\r
+set DEFAULT_JVM_OPTS=\r
+\r
+@rem Find java.exe\r
+if defined JAVA_HOME goto findJavaFromJavaHome\r
+\r
+set JAVA_EXE=java.exe\r
+%JAVA_EXE% -version >NUL 2>&1\r
+if "%ERRORLEVEL%" == "0" goto init\r
+\r
+echo.\r
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r
+echo.\r
+echo Please set the JAVA_HOME variable in your environment to match the\r
+echo location of your Java installation.\r
+\r
+goto fail\r
+\r
+:findJavaFromJavaHome\r
+set JAVA_HOME=%JAVA_HOME:"=%\r
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe\r
+\r
+if exist "%JAVA_EXE%" goto init\r
+\r
+echo.\r
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\r
+echo.\r
+echo Please set the JAVA_HOME variable in your environment to match the\r
+echo location of your Java installation.\r
+\r
+goto fail\r
+\r
+:init\r
+@rem Get command-line arguments, handling Windows variants\r
+\r
+if not "%OS%" == "Windows_NT" goto win9xME_args\r
+\r
+:win9xME_args\r
+@rem Slurp the command line arguments.\r
+set CMD_LINE_ARGS=\r
+set _SKIP=2\r
+\r
+:win9xME_args_slurp\r
+if "x%~1" == "x" goto execute\r
+\r
+set CMD_LINE_ARGS=%*\r
+\r
+:execute\r
+@rem Setup the command line\r
+\r
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar\r
+\r
+@rem Execute Gradle\r
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\r
+\r
+:end\r
+@rem End local scope for the variables with windows NT shell\r
+if "%ERRORLEVEL%"=="0" goto mainEnd\r
+\r
+:fail\r
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r
+rem the _cmd.exe /c_ return code!\r
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1\r
+exit /b 1\r
+\r
+:mainEnd\r
+if "%OS%"=="Windows_NT" endlocal\r
+\r
+:omega\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project basedir=".." name="jpf-core-IDE">
-
- <path id="base.path">
- <pathelement location="build/main"/>
- <pathelement location="build/peers"/>
- <pathelement location="build/annotations"/>
- <pathelement location="build/tests"/>
- <fileset dir=".">
- <include name="lib/*.jar"/>
- </fileset>
- </path>
-
- <sourcepath id="source.path">
- <pathelement location="src/main"/>
- <pathelement location="src/peers"/>
- </sourcepath>
-
-<!--
- <property name="testrunner" value="gov.nasa.jpf.util.test.TestJPF"/>
--->
- <property name="testrunner" value="gov.nasa.jpf.tool.RunTest"/>
-
-
- <!-- TODO: do we really have to duplicate this for each container dir? -->
- <!-- TODO: !!! automatic recompile doesn't work, this is a NetBeans/Ant problem !!! -->
-
- <!-- (more info: http://www.netbeans.org/kb/articles/freeform-config.html#runsingle) -->
-
- <target name="test-project">
- <!-- we need to set the formatter 'usefile' attribute
- or the NB test runner will not show any tests -->
- <property name="junit.usefile" value="false"/>
- <ant antfile="build.xml" inheritall="true" target="test"/>
- </target>
-
-
- <!-- 'main' targets -->
- <target name="run-selected-main">
- <fail unless="run.class">Must set property 'run.class'</fail>
- <ant antfile="build.xml" inheritall="false" target="compile"/>
- <input message="please enter arguments" addproperty="arg.input"/>
- <java classname="${run.class}" failonerror="true" fork="true">
- <classpath>
- <path refid="base.path"/>
- </classpath>
- <jvmarg value="-ea"/>
- <arg line="${arg.input}"/>
- </java>
- </target>
-
- <target name="debug-selected-main">
- <fail unless="debug.class">Must set property 'debug.class'</fail>
- <ant antfile="build.xml" inheritall="false" target="compile"/>
-
- <path id="cp.main">
- <path refid="base.path"/>
- </path>
- <sourcepath id="sp.main">
- <path refid="source.path"/>
- </sourcepath>
-
-
- <nbjpdastart addressproperty="jpda.address" name="${debug.class}" transport="dt_socket">
- <classpath refid="cp.main"/>
- <sourcepath refid="sp.main"/>
- </nbjpdastart>
-
- <input message="please enter arguments" addproperty="arg.input"/>
-
- <java classname="${debug.class}" fork="true" >
- <classpath refid="cp.main"/>
- <jvmarg value="-ea"/>
- <jvmarg value="-Xdebug"/>
- <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
- <arg line="${arg.input}"/>
- </java>
- </target>
-
-
- <!-- 'example' targets -->
- <target name="run-selected-example">
- <fail unless="run.class">Must set property 'run.class'</fail>
- <ant antfile="build.xml" inheritall="false" target="compile"/>
- <input message="please enter arguments" addproperty="arg.input"/>
- <java classname="${run.class}" failonerror="true" fork="true">
- <classpath>
- <pathelement location="build/examples"/>
- <path refid="base.path"/>
- </classpath>
- <jvmarg value="-ea"/>
- <arg line="${arg.input}"/>
- </java>
- </target>
-
- <target name="debug-selected-example">
- <fail unless="debug.class">Must set property 'debug.class'</fail>
- <ant antfile="build.xml" inheritall="false" target="compile"/>
-
- <path id="cp.examples">
- <pathelement location="build/examples"/>
- <path refid="base.path"/>
- </path>
- <sourcepath id="sp.examples">
- <pathelement location="src/examples"/>
- <path refid="source.path"/>
- </sourcepath>
-
-
- <nbjpdastart addressproperty="jpda.address" name="${debug.class}" transport="dt_socket">
- <classpath refid="cp.examples"/>
- <sourcepath refid="sp.examples"/>
- </nbjpdastart>
-
- <input message="please enter arguments" addproperty="arg.input"/>
-
- <java classname="${debug.class}" fork="true" >
- <classpath refid="cp.examples"/>
- <jvmarg value="-ea"/>
- <jvmarg value="-Xdebug"/>
- <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
- <arg line="${arg.input}"/>
- </java>
- </target>
-
- <target name="run-selected-example-jpf">
- <fail unless="jpf.config">Must set property 'jpf.config'</fail>
- <ant antfile="build.xml" inheritall="false" target="compile"/>
- <!-- -->
- <java classname="gov.nasa.jpf.JPF" failonerror="true" fork="true">
- <arg value="${jpf.config}"/>
- <classpath>
- <pathelement location="build/examples"/>
- <path refid="base.path"/>
- </classpath>
- </java>
- </target>
-
- <target name="debug-selected-example-jpf">
- <fail unless="jpf.config">Must set property 'jpf.config'</fail>
- <ant antfile="build.xml" inheritall="false" target="compile"/>
-
- <path id="cp.examples">
- <pathelement location="build/examples"/>
- <path refid="base.path"/>
- </path>
- <sourcepath id="sp.examples">
- <pathelement location="src/examples"/>
- <path refid="source.path"/>
- </sourcepath>
-
- <nbjpdastart addressproperty="jpda.address" name="${jpf.config}" transport="dt_socket">
- <classpath refid="cp.examples"/>
- <sourcepath refid="sp.examples"/>
- </nbjpdastart>
-
- <java classname="gov.nasa.jpf.JPF" fork="true">
- <classpath refid="cp.examples"/>
- <jvmarg value="-ea"/>
- <jvmarg value="-Xdebug"/>
- <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
- <arg value="-c"/>
- <arg value="${jpf.config}"/>
- </java>
- </target>
-
-
- <!-- 'test' targets -->
- <target name="run-selected-test">
- <fail unless="run.class">Must set property 'run.class'</fail>
- <ant antfile="build.xml" inheritall="false" target="compile"/>
- <input message="please enter arguments" addproperty="arg.input"/>
- <java classname="${testrunner}" failonerror="true" fork="true">
- <classpath>
- <pathelement location="build/tests"/>
- <path refid="base.path"/>
- </classpath>
- <jvmarg value="-ea"/>
- <arg value="${run.class}"/>
- <arg line="${arg.input}"/>
- </java>
- </target>
-
- <target name="debug-selected-test">
- <fail unless="debug.class">Must set property 'debug.class'</fail>
- <ant antfile="build.xml" inheritall="false" target="compile"/>
-
- <path id="cp.tests">
- <pathelement location="build/tests"/>
- <path refid="base.path"/>
- </path>
- <sourcepath id="sp.tests">
- <pathelement location="src/tests"/>
- <path refid="source.path"/>
- </sourcepath>
-
- <nbjpdastart addressproperty="jpda.address" name="${debug.class}" transport="dt_socket">
- <classpath refid="cp.tests"/>
- <sourcepath refid="sp.tests"/>
- </nbjpdastart>
-
- <input message="please enter arguments" addproperty="arg.input"/>
-
- <java classname="${testrunner}" fork="true">
- <classpath refid="cp.tests"/>
- <jvmarg value="-ea"/>
- <jvmarg value="-Xdebug"/>
- <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
- <arg value="${debug.class}"/>
- <arg line="${arg.input}"/>
- </java>
- </target>
-
- <target name="run-selected-test-jpf">
- <fail unless="jpf.config">Must set property 'jpf.config'</fail>
- <ant antfile="build.xml" inheritall="false" target="compile"/>
- <java classname="gov.nasa.jpf.JPF" failonerror="true" fork="true">
- <jvmarg value="-ea"/>
- <arg value="${jpf.config}"/>
- <classpath>
- <pathelement location="build/tests"/>
- <path refid="base.path"/>
- </classpath>
- </java>
- </target>
-
- <target name="debug-selected-test-jpf">
- <fail unless="jpf.config">Must set property 'jpf.config'</fail>
- <ant antfile="build.xml" inheritall="false" target="compile"/>
-
- <path id="cp.tests">
- <pathelement location="build/tests"/>
- <path refid="base.path"/>
- </path>
- <sourcepath id="sp.tests">
- <pathelement location="src/tests"/>
- <path refid="source.path"/>
- </sourcepath>
-
- <nbjpdastart addressproperty="jpda.address" name="${jpf.config}" transport="dt_socket">
- <classpath refid="cp.tests"/>
- <sourcepath refid="sp.tests"/>
- </nbjpdastart>
-
- <java classname="gov.nasa.jpf.JPF" fork="true">
- <classpath refid="cp.tests"/>
- <jvmarg value="-ea"/>
- <jvmarg value="-Xdebug"/>
- <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
- <arg value="-c"/>
- <arg value="${jpf.config}"/>
- </java>
- </target>
-
-</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
- <type>org.netbeans.modules.ant.freeform</type>
- <configuration>
- <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
- <name>jpf-core</name>
- </general-data>
- <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
- <!-- Do not use Project Properties customizer when editing this file manually. -->
- <name>jpf-core</name>
- <properties/>
- <folders>
- <source-folder>
- <label>jpf-core</label>
- <location>.</location>
- <encoding>UTF-8</encoding>
- </source-folder>
- <source-folder>
- <label>src/main</label>
- <type>java</type>
- <location>src/main</location>
- <encoding>UTF-8</encoding>
- </source-folder>
- <source-folder>
- <label>src/peers</label>
- <type>java</type>
- <location>src/peers</location>
- <encoding>UTF-8</encoding>
- </source-folder>
- <source-folder>
- <label>src/annotations</label>
- <type>java</type>
- <location>src/annotations</location>
- <encoding>UTF-8</encoding>
- </source-folder>
- <source-folder>
- <label>src/classes</label>
- <type>java</type>
- <location>src/classes</location>
- <encoding>UTF-8</encoding>
- </source-folder>
- <source-folder>
- <label>src/tests</label>
- <type>java</type>
- <location>src/tests</location>
- <encoding>UTF-8</encoding>
- </source-folder>
- <source-folder>
- <label>src/examples</label>
- <type>java</type>
- <location>src/examples</location>
- <encoding>UTF-8</encoding>
- </source-folder>
- </folders>
- <ide-actions>
- <action name="build">
- <target>build</target>
- </action>
- <action name="clean">
- <target>clean</target>
- </action>
- <action name="test">
- <script>nbproject/ide-file-targets.xml</script>
- <target>test-project</target>
- </action>
- <action name="rebuild">
- <target>clean</target>
- <target>build</target>
- </action>
- <!-- run single file actions -->
- <!-- run stuff in main -->
- <action name="run.single">
- <script>nbproject/ide-file-targets.xml</script>
- <target>run-selected-main</target>
- <context>
- <property>run.class</property>
- <folder>src/main</folder>
- <pattern>\.java$</pattern>
- <format>java-name</format>
- <arity>
- <one-file-only/>
- </arity>
- </context>
- </action>
- <action name="debug.single">
- <script>nbproject/ide-file-targets.xml</script>
- <target>debug-selected-main</target>
- <context>
- <property>debug.class</property>
- <folder>src/main</folder>
- <pattern>\.java$</pattern>
- <format>java-name</format>
- <arity>
- <one-file-only/>
- </arity>
- </context>
- </action>
- <!-- run stuff in examples -->
- <action name="run.single">
- <script>nbproject/ide-file-targets.xml</script>
- <target>run-selected-example</target>
- <context>
- <property>run.class</property>
- <folder>src/examples</folder>
- <pattern>\.java$</pattern>
- <format>java-name</format>
- <arity>
- <one-file-only/>
- </arity>
- </context>
- </action>
- <action name="debug.single">
- <script>nbproject/ide-file-targets.xml</script>
- <target>debug-selected-example</target>
- <context>
- <property>debug.class</property>
- <folder>src/examples</folder>
- <pattern>\.java$</pattern>
- <format>java-name</format>
- <arity>
- <one-file-only/>
- </arity>
- </context>
- </action>
- <action name="run.single">
- <script>nbproject/ide-file-targets.xml</script>
- <target>run-selected-example-jpf</target>
- <context>
- <property>jpf.config</property>
- <folder>src/examples</folder>
- <pattern>\.jpf$</pattern>
- <format>absolute-path</format>
- <arity>
- <one-file-only/>
- </arity>
- </context>
- </action>
- <action name="debug.single">
- <script>nbproject/ide-file-targets.xml</script>
- <target>debug-selected-example-jpf</target>
- <context>
- <property>jpf.config</property>
- <folder>src/examples</folder>
- <pattern>\.jpf$</pattern>
- <format>absolute-path</format>
- <arity>
- <one-file-only/>
- </arity>
- </context>
- </action>
- <!-- run stuff in test -->
- <action name="run.single">
- <script>nbproject/ide-file-targets.xml</script>
- <target>run-selected-test</target>
- <context>
- <property>run.class</property>
- <folder>src/tests</folder>
- <pattern>\.java$</pattern>
- <format>java-name</format>
- <arity>
- <one-file-only/>
- </arity>
- </context>
- </action>
- <action name="debug.single">
- <script>nbproject/ide-file-targets.xml</script>
- <target>debug-selected-test</target>
- <context>
- <property>debug.class</property>
- <folder>src/tests</folder>
- <pattern>\.java$</pattern>
- <format>java-name</format>
- <arity>
- <one-file-only/>
- </arity>
- </context>
- </action>
- <action name="run.single">
- <script>nbproject/ide-file-targets.xml</script>
- <target>run-selected-test-jpf</target>
- <context>
- <property>jpf.config</property>
- <folder>src/tests</folder>
- <pattern>\.jpf$</pattern>
- <format>absolute-path</format>
- <arity>
- <one-file-only/>
- </arity>
- </context>
- </action>
- <action name="debug.single">
- <script>nbproject/ide-file-targets.xml</script>
- <target>debug-selected-test-jpf</target>
- <context>
- <property>jpf.config</property>
- <folder>src/tests</folder>
- <pattern>\.jpf$</pattern>
- <format>absolute-path</format>
- <arity>
- <one-file-only/>
- </arity>
- </context>
- </action>
- </ide-actions>
- <export>
- <type>folder</type>
- <location>build/main</location>
- <build-target>build</build-target>
- </export>
- <export>
- <type>folder</type>
- <location>build/peers</location>
- <build-target>build</build-target>
- </export>
- <export>
- <type>folder</type>
- <location>build/classes</location>
- <build-target>build</build-target>
- </export>
- <export>
- <type>folder</type>
- <location>build/examples</location>
- <build-target>build</build-target>
- </export>
- <export>
- <type>folder</type>
- <location>build/annotations</location>
- <build-target>build</build-target>
- </export>
- <export>
- <type>folder</type>
- <location>build/tests</location>
- <build-target>build</build-target>
- </export>
- <view>
- <items>
- <source-folder style="packages">
- <label>src/main</label>
- <location>src/main</location>
- </source-folder>
- <source-folder style="packages">
- <label>src/peers</label>
- <location>src/peers</location>
- </source-folder>
- <source-folder style="packages">
- <label>src/annotations</label>
- <location>src/annotations</location>
- </source-folder>
- <source-folder style="packages">
- <label>src/classes</label>
- <location>src/classes</location>
- </source-folder>
- <source-folder style="packages">
- <label>src/tests</label>
- <location>src/tests</location>
- </source-folder>
- <source-folder style="packages">
- <label>src/examples</label>
- <location>src/examples</location>
- </source-folder>
- <source-file>
- <location>build.xml</location>
- </source-file>
- </items>
- <context-menu>
- <ide-action name="build"/>
- <ide-action name="rebuild"/>
- <ide-action name="clean"/>
- <ide-action name="test"/>
- </context-menu>
- </view>
- <subprojects/>
- </general-data>
- <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/4">
- <compilation-unit>
- <package-root>src/main</package-root>
- <classpath mode="compile">build/annotations</classpath>
- <built-to>build/main</built-to>
- <source-level>1.8</source-level>
- </compilation-unit>
- <compilation-unit>
- <package-root>src/peers</package-root>
- <classpath mode="compile">build/annotations;build/main</classpath>
- <built-to>build/peers</built-to>
- <source-level>1.8</source-level>
- </compilation-unit>
- <compilation-unit>
- <package-root>src/classes</package-root>
- <classpath mode="compile">build/annotations;build/main</classpath>
- <built-to>build/classes</built-to>
- <source-level>1.8</source-level>
- </compilation-unit>
- <compilation-unit>
- <package-root>src/examples</package-root>
- <unit-tests/>
- <classpath mode="compile">build/main</classpath>
- <built-to>build/examples</built-to>
- <source-level>1.8</source-level>
- </compilation-unit>
- <compilation-unit>
- <package-root>src/annotations</package-root>
- <built-to>build/annotations</built-to>
- <source-level>1.8</source-level>
- </compilation-unit>
- <compilation-unit>
- <package-root>src/tests</package-root>
- <unit-tests/>
- <classpath mode="compile">build/main:build/annotations:build/peers:build/classes</classpath>
- <built-to>build/tests</built-to>
- <source-level>1.8</source-level>
- </compilation-unit>
- </java-data>
- <preferences xmlns="http://www.netbeans.org/ns/auxiliary-configuration-preferences/1">
- <module name="org-netbeans-modules-editor-indent">
- <node name="CodeStyle">
- <property name="usedProfile" value="default"/>
- <node name="project">
- <property name="tab-size" value="8"/>
- <property name="text-limit-width" value="80"/>
- </node>
- </node>
- </module>
- </preferences>
- </configuration>
-</project>
--- /dev/null
+rootProject.name = 'jpf-core'
--- /dev/null
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import gov.nasa.jpf.Config;
+import gov.nasa.jpf.JPF;
+import gov.nasa.jpf.util.test.TestJPF;
+
+/**
+ * This is a plain JUnit test to check whether required resource files exist on
+ * JPF classpath.
+ *
+ * @author Jeanderson Candido
+ *
+ */
+public class ReporterResourcesTest extends TestJPF {
+
+ private JPF jpf;
+
+ @Before
+ public void setup() {
+ String[] configArgs = { "+vm.class=.vm.MultiProcessVM", "+target.1=HelloWorld", "+target.2=HelloWorld" };
+ this.jpf = new JPF(new Config(configArgs));
+ }
+
+ @Test
+ public void checkResources() throws IOException {
+ assertNotNull("build.properties should exist on classpath", jpf.getClass().getResourceAsStream("build.properties"));
+ assertNotNull(".version should exist on classpath", jpf.getClass().getResourceAsStream(".version"));
+ }
+
+ @Test
+ public void hashMustExist() {
+ InputStream stream = jpf.getClass().getResourceAsStream(".version");
+ assertTrue(".version file should be non-empty", !readContentFrom(stream).trim().isEmpty());
+ }
+
+ private String readContentFrom(InputStream stream) {
+ BufferedReader buffer = new BufferedReader(new InputStreamReader(stream));
+ StringBuilder output = new StringBuilder();
+ try {
+ while (buffer.ready()) {
+ output.append(buffer.readLine().trim()).append("\n");
+ }
+ } catch (IOException e) {
+ fail("Should not have failed while reading the file");
+ }
+ return output.toString();
+ }
+
+}