Class CheckerFrameworkPerDirectoryTest
- Direct Known Subclasses:
CheckerFrameworkWPIPerDirectoryTest
CheckerFrameworkPerFileTest
to
compile each test file in a test directory individually. A CheckerFrameworkPerDirectoryTest
is faster than an equivalent CheckerFrameworkPerFileTest
, but can only test that processor errors or warnings are issued.
To create a CheckerFrameworkPerDirectoryTest
, create a new class that extends this
class. The new class must do the following:
- Declare a constructor taking 1 parameter of type
java.util.List<java.io.File>
. This is a list of the files that will be compiled. - Declare the following method:
@Parameters public static String [] getTestDirs()
getTestDir must return an array of directories that exist in the test folder. 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.
public class MyTest extends CheckerFrameworkPerDirectoryTest {
/** @param testFiles the files containing test code, which will be type-checked */
public MyTest(List<File> testFiles) {
super(testFiles, MyChecker.class, "", "Anomsgtext");
}
@Parameters
public static String [] getTestDirs() {
return new String[]{"all-systems"};
}
}
-
Field Summary
Modifier and TypeFieldDescriptionprotected final List<@BinaryName String>
The binary names of the checkers to run.Extra options to pass to javac when running the checker.Extra entries for the classpath.protected final String
The path, relative to the test root directory (seeCheckerFrameworkRootedTest.resolveTestDirectory()
), to the directory containing test inputs.The files containing test code, which will be type-checked. -
Constructor Summary
ModifierConstructorDescriptionprotected
CheckerFrameworkPerDirectoryTest
(List<File> testFiles, Class<? extends AbstractProcessor> checker, String testDir, String... checkerOptions) Creates a new checker test.protected
CheckerFrameworkPerDirectoryTest
(List<File> testFiles, Class<? extends AbstractProcessor> checker, String testDir, List<String> classpathExtra, String... checkerOptions) Creates a new checker test.protected
CheckerFrameworkPerDirectoryTest
(List<File> testFiles, List<@BinaryName String> checkerNames, String testDir, List<String> classpathExtra, String... checkerOptions) Creates a new checker test. -
Method Summary
Modifier and TypeMethodDescriptionadjustTypecheckResult
(TypecheckResult testResult) This method is called before issuing assertions about a TypecheckResult.void
checkResult
(TypecheckResult typecheckResult) Check that theTypecheckResult
did not fail.customizeOptions
(List<String> previousOptions) Override this method if you would like to supply a checker command-line option that depends on the Java files passed to the test.protected File
Resolves the test root directory from the optionalTestRootDirectory
annotation or falls back to the default ofcurrentDir/tests
.void
run()
Run the tests.
-
Field Details
-
testFiles
The files containing test code, which will be type-checked. -
checkerNames
The binary names of the checkers to run. -
testDir
The path, relative to the test root directory (seeCheckerFrameworkRootedTest.resolveTestDirectory()
), to the directory containing test inputs. -
checkerOptions
Extra options to pass to javac when running the checker. -
classpathExtra
Extra entries for the classpath.
-
-
Constructor Details
-
CheckerFrameworkPerDirectoryTest
protected CheckerFrameworkPerDirectoryTest(List<File> testFiles, Class<? extends AbstractProcessor> checker, String testDir, String... checkerOptions) Creates a new checker test.TestConfigurationBuilder.getDefaultConfigurationBuilder(String, File, String, Iterable, Iterable, List, boolean)
adds additional checker options.- Parameters:
testFiles
- the files containing test code, which will be type-checkedchecker
- the class for the checker to usetestDir
- the path, relative to currentDir/tests, to the directory of test inputscheckerOptions
- options to pass to the compiler when running tests
-
CheckerFrameworkPerDirectoryTest
protected CheckerFrameworkPerDirectoryTest(List<File> testFiles, Class<? extends AbstractProcessor> checker, String testDir, List<String> classpathExtra, String... checkerOptions) Creates a new checker test.TestConfigurationBuilder.getDefaultConfigurationBuilder(String, File, String, Iterable, Iterable, List, boolean)
adds additional checker options.- Parameters:
testFiles
- the files containing test code, which will be type-checkedchecker
- the class for the checker to usetestDir
- the path, relative to currentDir/tests, to the directory of test inputsclasspathExtra
- extra entries for the classpath, relative to a directory such as checker-framework/checkercheckerOptions
- options to pass to the compiler when running tests
-
CheckerFrameworkPerDirectoryTest
protected CheckerFrameworkPerDirectoryTest(List<File> testFiles, List<@BinaryName String> checkerNames, String testDir, List<String> classpathExtra, String... checkerOptions) Creates a new checker test.TestConfigurationBuilder.getDefaultConfigurationBuilder(String, File, String, Iterable, Iterable, List, boolean)
adds additional checker options.- Parameters:
testFiles
- the files containing test code, which will be type-checkedcheckerNames
- the binary names of the checkers to runtestDir
- the path, relative to currentDir/tests, to the directory of test inputsclasspathExtra
- extra entries for the classpath, relative to a directory such as checker-framework/checkercheckerOptions
- options to pass to the compiler when running tests
-
-
Method Details
-
run
public void run()Run the tests. -
adjustTypecheckResult
This method is called before issuing assertions about a TypecheckResult. Subclasses can override it to customize behavior.- Parameters:
testResult
- a test result to possibly change- Returns:
- a TypecheckResult to use instead, which may be the unmodified argument
-
customizeOptions
Override this method if you would like to supply a checker command-line option that depends on the Java files passed to the test. Those files are available in fieldtestFiles
.If you want to specify the same command-line option for all tests of a particular checker, then pass it to the
CheckerFrameworkPerDirectoryTest(java.util.List<java.io.File>, java.util.List<java.lang.String>, java.lang.String, java.util.List<java.lang.String>, java.lang.String...)
constructor.- Parameters:
previousOptions
- the options specified in the constructor of the test previousOptions is unmodifiable- Returns:
- a new list of options or the original passed through
-
resolveTestDirectory
Resolves the test root directory from the optionalTestRootDirectory
annotation or falls back to the default ofcurrentDir/tests
.- Returns:
- the resolved directory
-
checkResult
Check that theTypecheckResult
did not fail.- Parameters:
typecheckResult
- result to check
-