Class TestUtilities


  • public class TestUtilities
    extends java.lang.Object
    Utilities for testing.
    • Constructor Summary

      Constructors 
      Constructor Description
      TestUtilities()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void assertTestDidNotFail​(TypecheckResult testResult)
      If the given TypecheckResult has unexpected or missing diagnostics, fail the running JUnit test.
      static java.util.List<java.io.File> deeplyEnclosedJavaTestFiles​(java.io.File directory)
      Returns all the Java files that are descendants of the given directory.
      static java.util.Set<java.lang.String> diagnosticsToStrings​(java.lang.Iterable<javax.tools.Diagnostic<? extends javax.tools.JavaFileObject>> actualDiagnostics, boolean usingAnomsgtxt)  
      static @Nullable java.lang.String diagnosticToString​(javax.tools.Diagnostic<? extends javax.tools.JavaFileObject> diagnostic, boolean usingAnomsgtxt)  
      static void ensureDirectoryExists​(java.lang.String dir)
      Create the directory (and its parents) if it does not exist.
      static java.io.File findComparisonFile​(java.io.File testFile)  
      static java.util.List<java.lang.Object[]> findFilesInParent​(java.io.File parent, java.lang.String... fileNames)
      Prepends a file to the beginning of each filename.
      static java.util.List<java.util.List<java.io.File>> findJavaFilesPerDirectory​(java.io.File parent, java.lang.String... dirNames)
      Returns a list where each item is a list of Java files, excluding any skip tests, for each directory given by dirName and also a list for any subdirectory.
      static java.util.List<java.io.File> findNestedJavaTestFiles​(java.lang.String... dirNames)
      Find test java sources within currentDir/tests.
      static java.util.List<java.io.File> findRelativeNestedJavaFiles​(java.io.File parent, java.lang.String... dirNames)
      Find test java sources within parent.
      static java.util.List<java.io.File> findRelativeNestedJavaFiles​(java.lang.String parent, java.lang.String... dirNames)
      Find test java sources within parent.
      static java.util.List<java.io.File> getJavaFilesAsArgumentList​(java.io.File... dirs)
      Traverses the directories listed looking for Java test files.
      static boolean getShouldEmitDebugInfo()
      Returns the value of system property "emit.test.debug".
      static java.io.File getTestFile​(java.lang.String fileRelativeToTestsDir)  
      static boolean isJavaFile​(java.io.File file)  
      static boolean isJavaTestFile​(java.io.File file)  
      static java.util.List<java.lang.String> optionMapToList​(java.util.Map<java.lang.String,​@Nullable java.lang.String> options)
      Given an option map, return a list of option names.
      static java.lang.String summarizeSourceFiles​(java.util.List<java.io.File> javaFiles)
      Return the file absolute pathnames, separated by commas.
      static void writeDiagnostics​(java.io.File file, java.io.File testFile, java.util.List<java.lang.String> expected, java.util.List<java.lang.String> actual, java.util.List<java.lang.String> unexpected, java.util.List<java.lang.String> missing, boolean usingNoMsgText, boolean testFailed)  
      static void writeJavacArguments​(java.io.File file, java.lang.Iterable<? extends javax.tools.JavaFileObject> files, java.lang.Iterable<java.lang.String> options, java.lang.Iterable<java.lang.String> processors)  
      static void writeLines​(java.io.File file, java.lang.Iterable<?> lines)
      Write all the lines in the given Iterable to the given File.
      static void writeTestConfiguration​(java.io.File file, TestConfiguration config)
      Append a test configuration to the end of a file.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • IS_AT_LEAST_9_JVM

        public static final boolean IS_AT_LEAST_9_JVM
        True if the JVM is version 9 or above.
      • IS_AT_LEAST_10_JVM

        public static final boolean IS_AT_LEAST_10_JVM
        True if the JVM is version 10 or above.
      • IS_AT_LEAST_11_JVM

        public static final boolean IS_AT_LEAST_11_JVM
        True if the JVM is version 11 or above.
      • IS_AT_MOST_11_JVM

        public static final boolean IS_AT_MOST_11_JVM
        True if the JVM is version 11 or lower.
      • IS_AT_LEAST_14_JVM

        public static final boolean IS_AT_LEAST_14_JVM
        True if the JVM is version 14 or above.
      • IS_AT_MOST_14_JVM

        public static final boolean IS_AT_MOST_14_JVM
        True if the JVM is version 14 or lower.
      • IS_AT_LEAST_16_JVM

        public static final boolean IS_AT_LEAST_16_JVM
        True if the JVM is version 16 or above.
      • IS_AT_MOST_16_JVM

        public static final boolean IS_AT_MOST_16_JVM
        True if the JVM is version 16 or lower.
      • IS_AT_LEAST_17_JVM

        public static final boolean IS_AT_LEAST_17_JVM
        True if the JVM is version 17 or above.
      • IS_AT_MOST_17_JVM

        public static final boolean IS_AT_MOST_17_JVM
        True if the JVM is version 17 or lower.
      • IS_AT_LEAST_18_JVM

        public static final boolean IS_AT_LEAST_18_JVM
        True if the JVM is version 18 or above.
      • IS_AT_MOST_18_JVM

        public static final boolean IS_AT_MOST_18_JVM
        True if the JVM is version 18 or lower.
      • IS_AT_LEAST_21_JVM

        public static final boolean IS_AT_LEAST_21_JVM
        True if the JVM is version 21 or above.
    • Constructor Detail

      • TestUtilities

        public TestUtilities()
    • Method Detail

      • findNestedJavaTestFiles

        public static java.util.List<java.io.File> findNestedJavaTestFiles​(java.lang.String... dirNames)
        Find test java sources within currentDir/tests.
        Parameters:
        dirNames - subdirectories of currentDir/tests
        Returns:
        found files
      • findRelativeNestedJavaFiles

        public static java.util.List<java.io.File> findRelativeNestedJavaFiles​(java.lang.String parent,
                                                                               java.lang.String... dirNames)
        Find test java sources within parent.
        Parameters:
        parent - directory to search within
        dirNames - subdirectories of parent
        Returns:
        found files
      • findRelativeNestedJavaFiles

        public static java.util.List<java.io.File> findRelativeNestedJavaFiles​(java.io.File parent,
                                                                               java.lang.String... dirNames)
        Find test java sources within parent.
        Parameters:
        parent - directory to search within
        dirNames - subdirectories of parent
        Returns:
        found files
      • findJavaFilesPerDirectory

        public static java.util.List<java.util.List<java.io.File>> findJavaFilesPerDirectory​(java.io.File parent,
                                                                                             java.lang.String... dirNames)
        Returns a list where each item is a list of Java files, excluding any skip tests, for each directory given by dirName and also a list for any subdirectory.
        Parameters:
        parent - parent directory of the dirNames directories
        dirNames - names of directories to search
        Returns:
        list where each item is a list of Java test files grouped by directory
      • findFilesInParent

        public static java.util.List<java.lang.Object[]> findFilesInParent​(java.io.File parent,
                                                                           java.lang.String... fileNames)
        Prepends a file to the beginning of each filename.
        Parameters:
        parent - a file to prepend to each filename
        fileNames - file names
        Returns:
        the file names, each with parent prepended
      • getJavaFilesAsArgumentList

        public static java.util.List<java.io.File> getJavaFilesAsArgumentList​(java.io.File... dirs)
        Traverses the directories listed looking for Java test files.
        Parameters:
        dirs - directories in which to search for Java test files
        Returns:
        a list of Java test files found in the directories
      • deeplyEnclosedJavaTestFiles

        public static java.util.List<java.io.File> deeplyEnclosedJavaTestFiles​(java.io.File directory)
        Returns all the Java files that are descendants of the given directory.
        Parameters:
        directory - a directory
        Returns:
        all the Java files that are descendants of the given directory
      • isJavaFile

        public static boolean isJavaFile​(java.io.File file)
      • isJavaTestFile

        public static boolean isJavaTestFile​(java.io.File file)
      • diagnosticToString

        public static @Nullable java.lang.String diagnosticToString​(javax.tools.Diagnostic<? extends javax.tools.JavaFileObject> diagnostic,
                                                                    boolean usingAnomsgtxt)
      • diagnosticsToStrings

        public static java.util.Set<java.lang.String> diagnosticsToStrings​(java.lang.Iterable<javax.tools.Diagnostic<? extends javax.tools.JavaFileObject>> actualDiagnostics,
                                                                           boolean usingAnomsgtxt)
      • summarizeSourceFiles

        public static java.lang.String summarizeSourceFiles​(java.util.List<java.io.File> javaFiles)
        Return the file absolute pathnames, separated by commas.
        Parameters:
        javaFiles - a list of Java files
        Returns:
        the file absolute pathnames, separated by commas
      • getTestFile

        public static java.io.File getTestFile​(java.lang.String fileRelativeToTestsDir)
      • findComparisonFile

        public static java.io.File findComparisonFile​(java.io.File testFile)
      • optionMapToList

        public static java.util.List<java.lang.String> optionMapToList​(java.util.Map<java.lang.String,​@Nullable java.lang.String> options)
        Given an option map, return a list of option names.
        Parameters:
        options - an option map
        Returns:
        return a list of option names
      • writeLines

        public static void writeLines​(java.io.File file,
                                      java.lang.Iterable<?> lines)
        Write all the lines in the given Iterable to the given File.
        Parameters:
        file - where to write the lines
        lines - what lines to write
      • writeDiagnostics

        public static void writeDiagnostics​(java.io.File file,
                                            java.io.File testFile,
                                            java.util.List<java.lang.String> expected,
                                            java.util.List<java.lang.String> actual,
                                            java.util.List<java.lang.String> unexpected,
                                            java.util.List<java.lang.String> missing,
                                            boolean usingNoMsgText,
                                            boolean testFailed)
      • writeTestConfiguration

        public static void writeTestConfiguration​(java.io.File file,
                                                  TestConfiguration config)
        Append a test configuration to the end of a file.
        Parameters:
        file - the file to write to
        config - the configuration to append to the end of the file
      • writeJavacArguments

        public static void writeJavacArguments​(java.io.File file,
                                               java.lang.Iterable<? extends javax.tools.JavaFileObject> files,
                                               java.lang.Iterable<java.lang.String> options,
                                               java.lang.Iterable<java.lang.String> processors)
      • assertTestDidNotFail

        public static void assertTestDidNotFail​(TypecheckResult testResult)
        If the given TypecheckResult has unexpected or missing diagnostics, fail the running JUnit test.
        Parameters:
        testResult - the result of type-checking
      • ensureDirectoryExists

        public static void ensureDirectoryExists​(java.lang.String dir)
        Create the directory (and its parents) if it does not exist.
        Parameters:
        dir - the directory to create
      • getShouldEmitDebugInfo

        public static boolean getShouldEmitDebugInfo()
        Returns the value of system property "emit.test.debug".
        Returns:
        the value of system property "emit.test.debug"