private Set<String> getRootDirectoryFromParentDir(String parentDir) { List<File> resourceDirectories = getResourceDirectories(Paths.get(parentDir), environmentVariables); Set<String> directoryPaths = new HashSet<>(); for (File resourceDirectory : resourceDirectories) { if (new File(resourceDirectory, rootDirectoryPath).exists()) { directoryPaths.add(new File(resourceDirectory, rootDirectoryPath).getAbsolutePath()); //custom absolute requirements directory } if (new File(resourceDirectory, featureDirectoryName).exists()) { directoryPaths.add(new File(resourceDirectory, featureDirectoryName).getAbsolutePath()); //features } if (new File(resourceDirectory, storyDirectoryName).exists()) { directoryPaths.add(new File(resourceDirectory, storyDirectoryName).getAbsolutePath()); //stories } } return directoryPaths; }
public Optional<Path> featuresOrStoriesRootDirectory() { String relativeRoot = rootDirectoryPath.equals(".") ? "" : rootDirectoryPath; if (ThucydidesSystemProperty.SERENITY_REQUIREMENTS_DIR.isDefinedIn(environmentVariables)) { return Optional.of(Paths.get(ThucydidesSystemProperty.SERENITY_REQUIREMENTS_DIR.from(environmentVariables))); } List<File> resourceDirectories = getResourceDirectories(Paths.get(relativeRoot), environmentVariables); for (File resourceDir : resourceDirectories) { for(String candidateDirectoryName : requirementsDirectoryNames) { if (new File(resourceDir, candidateDirectoryName).exists()) { return Optional.of(resourceDir.toPath().resolve(candidateDirectoryName)); } } } return Optional.empty(); }