From 10284c42209720a20af01d731cd8b763f76e02f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 28 Apr 2016 10:00:22 +0200 Subject: [PATCH] Fix for scanning files in strange directories (#245) * Fix for scanning files in strange directories * readded ugly code --- .../accurest/file/ContractFileScanner.groovy | 9 +++++---- .../accurest/file/ContractFileScannerSpec.groovy | 16 ++++++++++++++++ .../strange_[3.3.3]_directory/02_login.groovy | 0 .../bar/03_login.groovy | 0 .../foo/01_login.groovy | 0 5 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 accurest-core/src/test/resources/strange_[3.3.3]_directory/02_login.groovy create mode 100644 accurest-core/src/test/resources/strange_[3.3.3]_directory/bar/03_login.groovy create mode 100644 accurest-core/src/test/resources/strange_[3.3.3]_directory/foo/01_login.groovy diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/file/ContractFileScanner.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/file/ContractFileScanner.groovy index 0e898ba30e..5e125f0f31 100755 --- a/accurest-core/src/main/groovy/io/codearte/accurest/file/ContractFileScanner.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/file/ContractFileScanner.groovy @@ -24,14 +24,15 @@ class ContractFileScanner { ContractFileScanner(File baseDir, Set excluded, Set ignored) { this.baseDir = baseDir - excludeMatchers = processPatterns(excluded, baseDir) - ignoreMatchers = processPatterns(ignored, baseDir) + excludeMatchers = processPatterns(excluded) + ignoreMatchers = processPatterns(ignored) } - private Set processPatterns(Set patterns, baseDir) { + private Set processPatterns(Set 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("\\", "\\\\") } diff --git a/accurest-core/src/test/groovy/io/codearte/accurest/file/ContractFileScannerSpec.groovy b/accurest-core/src/test/groovy/io/codearte/accurest/file/ContractFileScannerSpec.groovy index 30a5def61c..c699a2a3a1 100644 --- a/accurest-core/src/test/groovy/io/codearte/accurest/file/ContractFileScannerSpec.groovy +++ b/accurest-core/src/test/groovy/io/codearte/accurest/file/ContractFileScannerSpec.groovy @@ -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 excluded = ["foo/**"] as Set + Set ignored = ["bar/**"] as Set + ContractFileScanner scanner = new ContractFileScanner(baseDir, excluded, ignored) + when: + ListMultimap result = scanner.findContracts() + then: + result.entries().size() == 2 + and: + Collection 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()) diff --git a/accurest-core/src/test/resources/strange_[3.3.3]_directory/02_login.groovy b/accurest-core/src/test/resources/strange_[3.3.3]_directory/02_login.groovy new file mode 100644 index 0000000000..e69de29bb2 diff --git a/accurest-core/src/test/resources/strange_[3.3.3]_directory/bar/03_login.groovy b/accurest-core/src/test/resources/strange_[3.3.3]_directory/bar/03_login.groovy new file mode 100644 index 0000000000..e69de29bb2 diff --git a/accurest-core/src/test/resources/strange_[3.3.3]_directory/foo/01_login.groovy b/accurest-core/src/test/resources/strange_[3.3.3]_directory/foo/01_login.groovy new file mode 100644 index 0000000000..e69de29bb2