public static File makeTestDataPath(final Class<?> clazz, final String... childPath) {
        final File root = getRootOfBuildDirectory(clazz);
        final List<String> cleanedPaths = Stream.of(childPath).map(TestSupport::cleanPathSegment).collect(Collectors.toList());

        // use the class name in the directory structure
        cleanedPaths.add(0, cleanPathSegment(clazz.getSimpleName()));

        final File f = new File(new File(root, TEST_DATA_RELATIVE_DIR), String.join(Storage.FILE_SEPARATOR, cleanedPaths));
        if (!f.exists())
            f.mkdirs();
        return f;
    }
Creates a {@link File} reference that points to a directory relative to the supplied class in the
{@code /target} directory. Each {@code childPath} passed introduces a new sub-directory and all are placed
below the {@link #TEST_DATA_RELATIVE_DIR}.  For example, calling this method with "a", "b", and "c" as the
{@code childPath} arguments would yield a relative directory like: {@code test-case-data/clazz/a/b/c}. It is
a good idea to use the test class for the {@code clazz} argument so that it's easy to find the data if
necessary after test execution.
<p>
Avoid using makeTestDataPath(...).getAbsolutePath() and makeTestDataPath(...).toString() that produces
platform-dependent paths, that are incompatible with regular expressions and escape characters.
Instead use {@link Storage#toPath(File)}
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/TestSupport.java