Fix for scanning files in strange directories (#245)

* Fix for scanning files in strange directories

* readded ugly code
This commit is contained in:
Mariusz Smykuła
2016-04-28 10:00:22 +02:00
parent e87456382f
commit 10284c4220
5 changed files with 21 additions and 4 deletions

View File

@@ -24,14 +24,15 @@ class ContractFileScanner {
ContractFileScanner(File baseDir, Set<String> excluded, Set<String> ignored) {
this.baseDir = baseDir
excludeMatchers = processPatterns(excluded, baseDir)
ignoreMatchers = processPatterns(ignored, baseDir)
excludeMatchers = processPatterns(excluded)
ignoreMatchers = processPatterns(ignored)
}
private Set<PathMatcher> processPatterns(Set<String> patterns, baseDir) {
private Set<PathMatcher> processPatterns(Set<String> patterns) {
FileSystem fileSystem = FileSystems.getDefault()
return patterns.collect({
String syntaxAndPattern = MATCH_PREFIX + baseDir.toString() + File.separator + it
String syntaxAndPattern = MATCH_PREFIX + '**' + File.separator + it
// FIXME: This looks strange, need to be checked on windows
if (SystemUtils.IS_OS_WINDOWS) {
syntaxAndPattern = syntaxAndPattern.replace("\\", "\\\\")
}

View File

@@ -28,6 +28,22 @@ class ContractFileScannerSpec extends Specification {
ignoredSet.ignored == [true]
}
def "should find contract files in strange directories"() {
given:
File baseDir = new File(this.getClass().getResource("/strange_[3.3.3]_directory").toURI())
Set<String> excluded = ["foo/**"] as Set
Set<String> ignored = ["bar/**"] as Set
ContractFileScanner scanner = new ContractFileScanner(baseDir, excluded, ignored)
when:
ListMultimap<Path, Contract> result = scanner.findContracts()
then:
result.entries().size() == 2
and:
Collection<Contract> ignoredSet = result.get(baseDir.toPath().resolve("bar"))
ignoredSet.size() == 1
ignoredSet.ignored == [true]
}
def "should find contracts group in scenario"() {
given:
File baseDir = new File(this.getClass().getResource("/directory/with/scenario").toURI())