Class TestConfigurationBuilder
java.lang.Object
org.checkerframework.framework.test.TestConfigurationBuilder
Used to create an instance of TestConfiguration. TestConfigurationBuilder is fluent: it returns
itself after every call so you can string together configuration methods as follows:
new TestConfigurationBuilder() .addOption("-Awarns") .addSourceFile("src1.java")
.addDiagnosticFile("src1.out")
- See Also:
-
Field Summary
-
Constructor Summary
ConstructorDescriptionNote: There are static helper methods named buildConfiguration and buildConfigurationBuilder that can be used to create the most common types of configurationsTestConfigurationBuilder
(TestConfiguration initialConfig) Create a builder that has all of the options in initialConfig. -
Method Summary
Modifier and TypeMethodDescriptionaddDiagnosticFile
(File diagnostics) Adds the given diagnostics file tothis
.addDiagnosticFiles
(Iterable<File> diagnostics) Adds the given diagnostics files tothis
.adddToPathOption
(String key, String toAppend) Adds the given path option tothis
.Adds the given option tothis
.Adds the given option and value tothis
.addOptionIfValueNonEmpty
(String option, String value) Adds the given option tothis
if the value is non-empty.addOptions
(Iterable<String> newOptions) Adds the given options tothis
.addOptions
(Map<String, @Nullable String> options) Adds the given options to this.addProcessor
(@BinaryName String processor) Add a processor.addProcessors
(Iterable<@BinaryName String> processors) Add processors.addSourceFile
(File sourceFile) Adds the given source file tothis
.addSourceFiles
(Iterable<File> sourceFiles) Adds the given source files tothis
.build()
Creates a TestConfiguration using the settings in this builder.static TestConfiguration
buildDefaultConfiguration
(String testSourcePath, File testFile, Class<?> processor, List<String> options, boolean shouldEmitDebugInfo) This is the default configuration used by Checker Framework JUnit tests.static TestConfiguration
buildDefaultConfiguration
(String testSourcePath, Iterable<File> testSourceFiles, Iterable<@BinaryName String> processors, List<String> options, boolean shouldEmitDebugInfo) This is the default configuration used by Checker Framework JUnit tests.static TestConfiguration
buildDefaultConfiguration
(String testSourcePath, Iterable<File> testSourceFiles, Collection<String> classpathExtra, Iterable<@BinaryName String> processors, List<String> options, boolean shouldEmitDebugInfo) This is the default configuration used by Checker Framework JUnit tests.Setsthis
to not output debug info.Setsthis
to output debug info.Returns the set of Javac options as a flat list.static String
Determine the default classpath from thetests.classpath
property.static TestConfigurationBuilder
getDefaultConfigurationBuilder
(String testSourcePath, File outputClassDirectory, String classPath, Iterable<File> testSourceFiles, Iterable<@BinaryName String> processors, List<String> options, boolean shouldEmitDebugInfo) This creates a builder for the default configuration used by Checker Framework JUnit tests.static File
Determine the output directory from thetests.outputDir
property.setDiagnosticFiles
(List<File> diagnosticFiles) Sets the diagnostics files ofthis
.setOptions
(Map<String, @Nullable String> options) Sets the given options onthis
.setProcessors
(Iterable<@BinaryName String> processors) Set the processors.setShouldEmitDebugInfo
(boolean shouldEmitDebugInfo) Setsthis
to output debug info depending on the parameter.setSourceFiles
(List<File> sourceFiles) Sets the source files ofthis
.toString()
validate
(boolean requireProcessors) Ensures that the minimum requirements for running a test are met.validateThenBuild
(boolean requireProcessors) Creates a TestConfiguration using the settings in this builder.
-
Field Details
-
TESTS_OUTPUTDIR
The output directory for tests.- See Also:
-
-
Constructor Details
-
TestConfigurationBuilder
public TestConfigurationBuilder()Note: There are static helper methods named buildConfiguration and buildConfigurationBuilder that can be used to create the most common types of configurations -
TestConfigurationBuilder
Create a builder that has all of the options in initialConfig.- Parameters:
initialConfig
- initial configuration for the newly-created builder
-
-
Method Details
-
getDefaultConfigurationBuilder
public static TestConfigurationBuilder getDefaultConfigurationBuilder(String testSourcePath, File outputClassDirectory, String classPath, Iterable<File> testSourceFiles, Iterable<@BinaryName String> processors, List<String> options, boolean shouldEmitDebugInfo) This creates a builder for the default configuration used by Checker Framework JUnit tests.- Parameters:
testSourcePath
- the path to the Checker test file sources, usually this is the directory of Checker's testsoutputClassDirectory
- the directory to place classes compiled for testingclassPath
- the classpath to use for compilationtestSourceFiles
- the Java files that compose the testprocessors
- the checkers or other annotation processors to run over the testSourceFilesoptions
- the options to the compiler/processorsshouldEmitDebugInfo
- whether or not debug information should be emitted- Returns:
- the builder that will create an immutable test configuration
-
buildDefaultConfiguration
public static TestConfiguration buildDefaultConfiguration(String testSourcePath, File testFile, Class<?> processor, List<String> options, boolean shouldEmitDebugInfo) This is the default configuration used by Checker Framework JUnit tests.- Parameters:
testSourcePath
- the path to the Checker test file sources, usually this is the directory of Checker's teststestFile
- a single test Java file to compileprocessor
- a single checker to include in the processors fieldoptions
- the options to the compiler/processorsshouldEmitDebugInfo
- whether or not debug information should be emitted- Returns:
- a TestConfiguration with input parameters added plus the normal default options, compiler, and file manager used by Checker Framework tests
-
buildDefaultConfiguration
public static TestConfiguration buildDefaultConfiguration(String testSourcePath, Iterable<File> testSourceFiles, Iterable<@BinaryName String> processors, List<String> options, boolean shouldEmitDebugInfo) This is the default configuration used by Checker Framework JUnit tests.- Parameters:
testSourcePath
- the path to the Checker test file sources, usually this is the directory of Checker's teststestSourceFiles
- the Java files that compose the testprocessors
- the checkers or other annotation processors to run over the testSourceFilesoptions
- the options to the compiler/processorsshouldEmitDebugInfo
- whether or not debug information should be emitted- Returns:
- a TestConfiguration with input parameters added plus the normal default options, compiler, and file manager used by Checker Framework tests
-
buildDefaultConfiguration
public static TestConfiguration buildDefaultConfiguration(String testSourcePath, Iterable<File> testSourceFiles, Collection<String> classpathExtra, Iterable<@BinaryName String> processors, List<String> options, boolean shouldEmitDebugInfo) This is the default configuration used by Checker Framework JUnit tests.- Parameters:
testSourcePath
- the path to the Checker test file sources, usually this is the directory of Checker's teststestSourceFiles
- the Java files that compose the testclasspathExtra
- extra entries for the classpath, needed to compile the source filesprocessors
- the checkers or other annotation processors to run over the testSourceFilesoptions
- the options to the compiler/processorsshouldEmitDebugInfo
- whether or not debug information should be emitted- Returns:
- a TestConfiguration with input parameters added plus the normal default options, compiler, and file manager used by Checker Framework tests
-
validate
Ensures that the minimum requirements for running a test are met. These requirements are:- There is at least one source file
- There is at least one processor (if requireProcessors has been set to true)
- There is an output directory specified for class files
- There is no
-processor
option in the optionMap (it should be added by addProcessor instead)
- Parameters:
requireProcessors
- whether or not to require that there is at least one processor- Returns:
- a list of errors found while validating this configuration
-
adddToPathOption
Adds the given path option tothis
.- Parameters:
key
- the key to addtoAppend
- the path to append- Returns:
- the current object
this
-
addDiagnosticFile
Adds the given diagnostics file tothis
.- Parameters:
diagnostics
- the diagnostics file to add tothis
- Returns:
- the current object
this
-
addDiagnosticFiles
Adds the given diagnostics files tothis
.- Parameters:
diagnostics
- diagnostics files to add tothis
- Returns:
- the current object
this
-
setDiagnosticFiles
Sets the diagnostics files ofthis
.- Parameters:
diagnosticFiles
- diagnostics files to set onthis
- Returns:
- the current object
this
-
addSourceFile
Adds the given source file tothis
.- Parameters:
sourceFile
- source file to add tothis
- Returns:
- the current object
this
-
addSourceFiles
Adds the given source files tothis
.- Parameters:
sourceFiles
- source files to add tothis
- Returns:
- the current object
this
-
setSourceFiles
Sets the source files ofthis
.- Parameters:
sourceFiles
- source files to set onthis
- Returns:
- the current object
this
-
setOptions
Sets the given options onthis
.- Parameters:
options
- options to set onthis
- Returns:
- the current object
this
-
addOption
Adds the given option tothis
.- Parameters:
option
- option to add tothis
- Returns:
- the current object
this
-
addOption
Adds the given option and value tothis
.- Parameters:
option
- option to add tothis
value
- value to add- Returns:
- the current object
this
-
addOptionIfValueNonEmpty
Adds the given option tothis
if the value is non-empty.- Parameters:
option
- option to add tothis
value
- value to add, iff it is non-empty- Returns:
- the current object
this
-
addOptions
@RequiresNonNull("this.options") public TestConfigurationBuilder addOptions(@UnknownInitialization(TestConfigurationBuilder.class) TestConfigurationBuilder this, Map<String, @Nullable String> options) Adds the given options to this.- Parameters:
options
- options to add to this- Returns:
- this
-
addOptions
Adds the given options tothis
.- Parameters:
newOptions
- options to add tothis
- Returns:
- the current object
this
-
setProcessors
Set the processors.- Parameters:
processors
- the processors to run- Returns:
- this
-
addProcessor
Add a processor.- Parameters:
processor
- a processor to run- Returns:
- this
-
addProcessors
Add processors.- Parameters:
processors
- processors to run- Returns:
- this
-
emitDebugInfo
Setsthis
to output debug info.- Returns:
- the current object
this
-
dontEmitDebugInfo
Setsthis
to not output debug info.- Returns:
- the current object
this
-
setShouldEmitDebugInfo
Setsthis
to output debug info depending on the parameter.- Parameters:
shouldEmitDebugInfo
- whether to emit debug info- Returns:
- the current object
this
-
build
Creates a TestConfiguration using the settings in this builder. The settings are NOT validated first.- Returns:
- a TestConfiguration using the settings in this builder
-
validateThenBuild
Creates a TestConfiguration using the settings in this builder. The settings are first validated and a runtime exception is thrown if any errors are found- Parameters:
requireProcessors
- whether or not there should be at least 1 processor specified, see method validate- Returns:
- a TestConfiguration using the settings in this builder
-
flatOptions
Returns the set of Javac options as a flat list.- Returns:
- the set of Javac options as a flat list
-
toString
-
getOutputDirFromProperty
Determine the output directory from thetests.outputDir
property.- Returns:
- the output directory
-
getDefaultClassPath
Determine the default classpath from thetests.classpath
property.- Returns:
- the default classpath
-