public abstract class CheckerFrameworkPerFileTest
extends java.lang.Object
CheckerFrameworkPerDirectoryTest
to compile all
files in a test directory together.
To use this class you must do two things:
@Parameters public static String [] getTestDirs()
getTestDir must return an array of directories that exist in the test folder, e.g.
@Parameters public static String [] getTestDirs() { return new String[]{"all-systems", "flow"}; }The directories can contain more path information (e.g., "myTestDir/moreTests") but note, the test suite will find all of the Java test files that exists below the listed directories. It is unnecessary to list child directories of a directory you have already listed.
@Parameters public static List<File> getTestFiles()
The method returns a List of Java files. There are methods like TestUtilities.findNestedJavaTestFiles(java.lang.String...)
to help you construct this List. The
PerDirectorySuite will then instantiate the subclass once for each file returned by
getTestFiles and execute the run method. An example of this method is:
@Parameters public static List<File> getTestFiles() { return TestUtilities.findNestedJavaTestFiles("aggregate"); }
Modifier and Type | Field and Description |
---|---|
protected java.lang.String |
checkerName
The fully-qualified class name of the checker to use for tests.
|
protected java.util.List<java.lang.String> |
checkerOptions
Extra options to pass to javac when running the checker.
|
protected java.lang.String |
testDir
The path, relative to currentDir/test to the directory containing test inputs.
|
protected java.io.File |
testFile |
Constructor and Description |
---|
CheckerFrameworkPerFileTest(java.io.File testFile,
java.lang.Class<? extends javax.annotation.processing.AbstractProcessor> checker,
java.lang.String testDir,
java.lang.String... checkerOptions)
Creates a new checker test.
|
Modifier and Type | Method and Description |
---|---|
java.util.List<java.lang.String> |
customizeOptions(java.util.List<java.lang.String> previousOptions)
Override this method if you would like to supply a checker command-line option that depends
on the Java file passed to the test.
|
void |
run() |
protected final java.io.File testFile
protected final java.lang.String checkerName
protected final java.lang.String testDir
protected final java.util.List<java.lang.String> checkerOptions
public CheckerFrameworkPerFileTest(java.io.File testFile, java.lang.Class<? extends javax.annotation.processing.AbstractProcessor> checker, java.lang.String testDir, java.lang.String... checkerOptions)
TestConfigurationBuilder.getDefaultConfigurationBuilder(String, File, String,
Iterable, Iterable, List, boolean)
adds additional checker options such as
-AprintErrorStack.
checker
- the class for the checker to usetestDir
- the path to the directory of test inputscheckerOptions
- options to pass to the compiler when running testspublic void run()
public java.util.List<java.lang.String> customizeOptions(java.util.List<java.lang.String> previousOptions)
testFile
.
If you want to specify the same command-line option for all tests of a particular checker,
then pass it to the CheckerFrameworkPerFileTest
constructor.
previousOptions
- the options specified in the constructor of the test previousOptions
is unmodifiable