Class TestConfigurationBuilder

java.lang.Object
org.checkerframework.framework.test.TestConfigurationBuilder

public class TestConfigurationBuilder extends Object
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 Details

  • 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

      public TestConfigurationBuilder(TestConfiguration initialConfig)
      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 tests
      outputClassDirectory - the directory to place classes compiled for testing
      classPath - the classpath to use for compilation
      testSourceFiles - the Java files that compose the test
      processors - the checkers or other annotation processors to run over the testSourceFiles
      options - the options to the compiler/processors
      shouldEmitDebugInfo - 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 tests
      testFile - a single test Java file to compile
      processor - a single checker to include in the processors field
      options - the options to the compiler/processors
      shouldEmitDebugInfo - 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 tests
      testSourceFiles - the Java files that compose the test
      processors - the checkers or other annotation processors to run over the testSourceFiles
      options - the options to the compiler/processors
      shouldEmitDebugInfo - 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 tests
      testSourceFiles - the Java files that compose the test
      classpathExtra - extra entries for the classpath, needed to compile the source files
      processors - the checkers or other annotation processors to run over the testSourceFiles
      options - the options to the compiler/processors
      shouldEmitDebugInfo - 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

      public List<String> validate(boolean requireProcessors)
      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

      public TestConfigurationBuilder adddToPathOption(String key, String toAppend)
      Adds the given path option to this.
      Parameters:
      key - the key to add
      toAppend - the path to append
      Returns:
      the current object this
    • addDiagnosticFile

      public TestConfigurationBuilder addDiagnosticFile(File diagnostics)
      Adds the given diagnostics file to this.
      Parameters:
      diagnostics - the diagnostics file to add to this
      Returns:
      the current object this
    • addDiagnosticFiles

      public TestConfigurationBuilder addDiagnosticFiles(Iterable<File> diagnostics)
      Adds the given diagnostics files to this.
      Parameters:
      diagnostics - diagnostics files to add to this
      Returns:
      the current object this
    • setDiagnosticFiles

      public TestConfigurationBuilder setDiagnosticFiles(List<File> diagnosticFiles)
      Sets the diagnostics files of this.
      Parameters:
      diagnosticFiles - diagnostics files to set on this
      Returns:
      the current object this
    • addSourceFile

      public TestConfigurationBuilder addSourceFile(File sourceFile)
      Adds the given source file to this.
      Parameters:
      sourceFile - source file to add to this
      Returns:
      the current object this
    • addSourceFiles

      public TestConfigurationBuilder addSourceFiles(Iterable<File> sourceFiles)
      Adds the given source files to this.
      Parameters:
      sourceFiles - source files to add to this
      Returns:
      the current object this
    • setSourceFiles

      public TestConfigurationBuilder setSourceFiles(List<File> sourceFiles)
      Sets the source files of this.
      Parameters:
      sourceFiles - source files to set on this
      Returns:
      the current object this
    • setOptions

      public TestConfigurationBuilder setOptions(Map<String,@Nullable String> options)
      Sets the given options on this.
      Parameters:
      options - options to set on this
      Returns:
      the current object this
    • addOption

      public TestConfigurationBuilder addOption(String option)
      Adds the given option to this.
      Parameters:
      option - option to add to this
      Returns:
      the current object this
    • addOption

      public TestConfigurationBuilder addOption(String option, String value)
      Adds the given option and value to this.
      Parameters:
      option - option to add to this
      value - value to add
      Returns:
      the current object this
    • addOptionIfValueNonEmpty

      public TestConfigurationBuilder addOptionIfValueNonEmpty(String option, String value)
      Adds the given option to this if the value is non-empty.
      Parameters:
      option - option to add to this
      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

      public TestConfigurationBuilder addOptions(Iterable<String> newOptions)
      Adds the given options to this.
      Parameters:
      newOptions - options to add to this
      Returns:
      the current object this
    • setProcessors

      public TestConfigurationBuilder setProcessors(Iterable<@BinaryName String> processors)
      Set the processors.
      Parameters:
      processors - the processors to run
      Returns:
      this
    • addProcessor

      public TestConfigurationBuilder addProcessor(@BinaryName String processor)
      Add a processor.
      Parameters:
      processor - a processor to run
      Returns:
      this
    • addProcessors

      public TestConfigurationBuilder addProcessors(Iterable<@BinaryName String> processors)
      Add processors.
      Parameters:
      processors - processors to run
      Returns:
      this
    • emitDebugInfo

      public TestConfigurationBuilder emitDebugInfo()
      Sets this to output debug info.
      Returns:
      the current object this
    • dontEmitDebugInfo

      public TestConfigurationBuilder dontEmitDebugInfo()
      Sets this to not output debug info.
      Returns:
      the current object this
    • setShouldEmitDebugInfo

      public TestConfigurationBuilder setShouldEmitDebugInfo(boolean shouldEmitDebugInfo)
      Sets this to output debug info depending on the parameter.
      Parameters:
      shouldEmitDebugInfo - whether to emit debug info
      Returns:
      the current object this
    • build

      public TestConfiguration 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

      public TestConfiguration validateThenBuild(boolean requireProcessors)
      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

      public List<String> flatOptions()
      Returns the set of Javac options as a flat list.
      Returns:
      the set of Javac options as a flat list
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getOutputDirFromProperty

      public static File getOutputDirFromProperty()
      Determine the output directory from the tests.outputDir property.
      Returns:
      the output directory
    • getDefaultClassPath

      public static String getDefaultClassPath()
      Determine the default classpath from the tests.classpath property.
      Returns:
      the default classpath