Плагин сонара Gradle имеет свойство sonar.junit.reportPaths
, которое должно быть разделенным запятыми списком каталогов, содержащих файлы результатов теста JUnit.
В нашем случае каталоги соответствуют шаблону "^.*/build/test-results/(test|(component|integration)Test)/.*$"
.
Мы хотели создать этот список, используя fileTree включает / сопоставление.
Но, похоже, fileTree:
- Возвращает только файлы, а не каталоги.
- Ограничено глобализацией файлов в стиле муравья, а не полными регулярными выражениями.
Поработав намного дольше, чем мы должны были потратить, мы наконец-то отказались и записали это в Java :
def junitResults() {
Set<String> testDirs = new LinkedHashSet<>()
for (File file : files(fileTree(dir: rootDir, include: "**/build/test-results/**"))) {
testDirs.add(file.getAbsolutePath().replaceAll("/build/test-results/(test|(component|integration)Test)/.*", "/build/test-results/\$1"))
}
return testDirs.toArray(new String[testDirs.size()]);
}
Это имеет то преимущество, что на самом деле работает, но выглядит уникально c.
Кто-нибудь знает, как заменить это на нормальный Groovy / Gradle DSL?