From 0cf9f75fef7204338ae0632be5c6aed472736a5a Mon Sep 17 00:00:00 2001 From: LukaszKontowski Date: Thu, 22 Sep 2022 16:30:52 +0200 Subject: [PATCH 01/10] Allow for globs in probe.resolvers.intellij.repositories config --- .../dependencies/IntelliJResolver.scala | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala index 844408dc..ec084e39 100644 --- a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala +++ b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala @@ -1,7 +1,10 @@ package org.virtuslab.ideprobe.dependencies +import java.nio.file.Paths + import org.virtuslab.ideprobe.IntelliJFixture import org.virtuslab.ideprobe.config.DependenciesConfig +import org.virtuslab.ideprobe.Extensions.PathExtension trait IntelliJResolver { def community: DependencyResolver[IntelliJVersion] @@ -37,9 +40,37 @@ case class IntelliJPatternResolver(pattern: String) extends IntelliJResolver { "version" -> version.releaseOrBuild, "release" -> version.release.getOrElse("snapshot-release") ) - val replaced = replacements.foldLeft(pattern) { case (path, (pattern, replacement)) => + val replacedBeforeResolvingGlobs = replacements.foldLeft(pattern) { case (path, (pattern, replacement)) => path.replace(s"[$pattern]", replacement) } + val replaced = replaceGlobsWithExistingDirectories(List(replacedBeforeResolvingGlobs)).head Dependency(replaced) } + + // solution below assumes that each * character is used to mark one part of the path (one atomic directory), + // for example: "file:///home/.cache/ides/com.jetbrains.intellij.idea/ideaIC/[revision]/*/ideaIC-[revision]/" + private def replaceGlobsWithExistingDirectories(paths: List[String]): List[String] = + if (paths.exists(pathMightBeValidResource)) + paths.filter(pathMightBeValidResource) + else + paths.flatMap(replaceFirstFoundWildcardWithDirectories) + + private def pathMightBeValidResource(path: String): Boolean = + path.indexOf('*') == -1 && + (path.endsWith(".zip") || + path.endsWith(".dmg") || + Paths.get(path.replace("file:", "")).isDirectory) + + private def replaceFirstFoundWildcardWithDirectories(path: String): List[String] = { + def removeLastFileSeparator(path: String): String = if (path.endsWith("/")) path.init else path + + val pathUntilWildcard = path.substring(0, path.indexOf('*')) + val pathAfterWildcard = path.substring(path.indexOf('*') + 1) + Paths + .get(pathUntilWildcard.replace("file:", "")) + .directChildren() + .map { replaced => + removeLastFileSeparator(replaced.toString) + pathAfterWildcard + } + } } From 4a5ef3b0c7b3604abb443274b97cc5875c326471 Mon Sep 17 00:00:00 2001 From: LukaszKontowski Date: Mon, 26 Sep 2022 13:37:08 +0200 Subject: [PATCH 02/10] Fix globes logic and allow for multiple globes in one pattern --- .../virtuslab/ideprobe/ProbeExtensions.scala | 4 +++ .../dependencies/IntelliJResolver.scala | 28 +++++++++++++------ .../dependencies/IntelliJResolverTest.scala | 16 +++++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/core/api/src/main/scala/org/virtuslab/ideprobe/ProbeExtensions.scala b/core/api/src/main/scala/org/virtuslab/ideprobe/ProbeExtensions.scala index 13da51c9..9cfbe3aa 100644 --- a/core/api/src/main/scala/org/virtuslab/ideprobe/ProbeExtensions.scala +++ b/core/api/src/main/scala/org/virtuslab/ideprobe/ProbeExtensions.scala @@ -65,6 +65,10 @@ trait ProbeExtensions { path.getFileName.toString } + def exists: Boolean = { + Files.exists(path) + } + def isFile: Boolean = { Files.isRegularFile(path) } diff --git a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala index ec084e39..f694f4bb 100644 --- a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala +++ b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala @@ -2,8 +2,11 @@ package org.virtuslab.ideprobe.dependencies import java.nio.file.Paths +import scala.annotation.tailrec + import org.virtuslab.ideprobe.IntelliJFixture import org.virtuslab.ideprobe.config.DependenciesConfig + import org.virtuslab.ideprobe.Extensions.PathExtension trait IntelliJResolver { @@ -49,11 +52,12 @@ case class IntelliJPatternResolver(pattern: String) extends IntelliJResolver { // solution below assumes that each * character is used to mark one part of the path (one atomic directory), // for example: "file:///home/.cache/ides/com.jetbrains.intellij.idea/ideaIC/[revision]/*/ideaIC-[revision]/" + @tailrec private def replaceGlobsWithExistingDirectories(paths: List[String]): List[String] = if (paths.exists(pathMightBeValidResource)) paths.filter(pathMightBeValidResource) else - paths.flatMap(replaceFirstFoundWildcardWithDirectories) + replaceGlobsWithExistingDirectories(paths.flatMap(replaceFirstFoundWildcardWithDirectories)) private def pathMightBeValidResource(path: String): Boolean = path.indexOf('*') == -1 && @@ -64,13 +68,19 @@ case class IntelliJPatternResolver(pattern: String) extends IntelliJResolver { private def replaceFirstFoundWildcardWithDirectories(path: String): List[String] = { def removeLastFileSeparator(path: String): String = if (path.endsWith("/")) path.init else path - val pathUntilWildcard = path.substring(0, path.indexOf('*')) - val pathAfterWildcard = path.substring(path.indexOf('*') + 1) - Paths - .get(pathUntilWildcard.replace("file:", "")) - .directChildren() - .map { replaced => - removeLastFileSeparator(replaced.toString) + pathAfterWildcard - } + val pathUntilWildcard = Paths.get(path.substring(0, path.indexOf('*')).replace("file:", "")) + val stringPathAfterWildcard = path.substring(path.indexOf('*') + 1) + + if (pathUntilWildcard.exists) { + pathUntilWildcard + .directChildren() + .map { replaced => + (if (path.startsWith("file:")) "file:" else "") + removeLastFileSeparator( + replaced.toString + ) + stringPathAfterWildcard + } + } else { + Nil + } } } diff --git a/core/driver/sources/src/test/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolverTest.scala b/core/driver/sources/src/test/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolverTest.scala index c03b117f..b7c8556f 100644 --- a/core/driver/sources/src/test/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolverTest.scala +++ b/core/driver/sources/src/test/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolverTest.scala @@ -11,6 +11,7 @@ import org.junit.runners.JUnit4 import org.virtuslab.ideprobe.Config import org.virtuslab.ideprobe.ConfigFormat +import org.virtuslab.ideprobe.IntelliJFixture import org.virtuslab.ideprobe.config.DependenciesConfig @RunWith(classOf[JUnit4]) @@ -47,6 +48,21 @@ class IntelliJResolverTest extends ConfigFormat { assertExists(artifactUri) } + @Test + def resolvesIntelliJPatternWithGlobesUsed(): Unit = { + val probeConfig = IntelliJFixture.readIdeProbeConfig( + Config.fromString(s""" + |probe.resolvers.intellij.repositories = [ + | "$mavenRepo/com/*/intellij/*/$mavenArtifact/${mavenVersion.build}/$mavenArtifact-${mavenVersion.build}.zip" + |] + |""".stripMargin), + "probe" + ) + val repo = IntelliJResolver.fromConfig(probeConfig.resolvers).head + val artifactUri = repo.resolve(mavenVersion) + assertExists(artifactUri) + } + private def assertExists(dependency: Dependency): Unit = dependency match { case Dependency.Artifact(uri) => assertTrue(s"Resolved invalid artifact: $uri", Files.exists(Paths.get(uri))) From aab9a1cac4b47ea23739a478e8f2dc8f0060ca20 Mon Sep 17 00:00:00 2001 From: LukaszKontowski Date: Tue, 27 Sep 2022 18:16:06 +0200 Subject: [PATCH 03/10] Add example with description in reference.conf --- .../sources/src/main/resources/reference.conf | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/core/driver/sources/src/main/resources/reference.conf b/core/driver/sources/src/main/resources/reference.conf index f1e81fce..17d137fc 100644 --- a/core/driver/sources/src/main/resources/reference.conf +++ b/core/driver/sources/src/main/resources/reference.conf @@ -109,6 +109,21 @@ probe { // ~/.pluginVerifier/ides/IC-[revision]/ directory (if exists). If it does not exist under specified path, // then ide-probe will download it from one of the 6 official repositories. // + // If your config contains a pattern pointing to an IntelliJ instance that exists on local filesystem, then you + // can use globs (* widcard characters) as parts of the pattern. One * wildcard character replaces + // one atomic directory on the path. Multiple * wildcards can be used in one pattern. For example - this can + // be useful if you want to use .zip OR installed IntelliJ downloaded earlier by some gradle task: + // intellij.repositories = [ + // "file:///"${HOME}"/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIC/[revision]/*/ideaIC-[revision]/" + // ] + // - as you can see - the * wildcard is handy as it replaces a hash that could not be known easily. There could be + // multiple different direcories in the * place - but not all of them lead to a valid IntelliJ resource. ide-probe + // deals with such situations and finds the correct path to a valid IntelliJ resource. Note: example below would + // work as well as the previous one, as multiple * wildcards in one path are handled properly: + // intellij.repositories = [ + // "file:///"${HOME}"/.gradle/*/modules-2/*/*/ideaIC/[revision]/*/ideaIC-[revision]/" + // ] + // // Note: if you use the `intellij.repositories` config with a value pointing to an installed // IntelliJ instance directory - then DO NOT use the `probe.intellij.path` config in the same time. // The `probe.intellij.path` config takes precedence over `intellij.repositories` in such case, so the path From 88413db4e536b7ac55e1fe35368feea57220f29b Mon Sep 17 00:00:00 2001 From: LukaszKontowski <49597713+LukaszKontowski@users.noreply.github.com> Date: Tue, 27 Sep 2022 21:17:54 +0200 Subject: [PATCH 04/10] Fix misspell in reference.conf description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Paweł Lipski --- core/driver/sources/src/main/resources/reference.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/driver/sources/src/main/resources/reference.conf b/core/driver/sources/src/main/resources/reference.conf index 17d137fc..67234e78 100644 --- a/core/driver/sources/src/main/resources/reference.conf +++ b/core/driver/sources/src/main/resources/reference.conf @@ -117,7 +117,7 @@ probe { // "file:///"${HOME}"/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIC/[revision]/*/ideaIC-[revision]/" // ] // - as you can see - the * wildcard is handy as it replaces a hash that could not be known easily. There could be - // multiple different direcories in the * place - but not all of them lead to a valid IntelliJ resource. ide-probe + // multiple different directories in the * place - but not all of them lead to a valid IntelliJ resource. ide-probe // deals with such situations and finds the correct path to a valid IntelliJ resource. Note: example below would // work as well as the previous one, as multiple * wildcards in one path are handled properly: // intellij.repositories = [ From 83196470de16291e479674e5bc32135b0ad876ff Mon Sep 17 00:00:00 2001 From: LukaszKontowski Date: Mon, 17 Oct 2022 14:33:24 +0200 Subject: [PATCH 05/10] PR fixes - fix resolving logic and improve code style --- .../sources/src/main/resources/reference.conf | 1 + .../dependencies/IntelliJResolver.scala | 28 +++++++++++-------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/core/driver/sources/src/main/resources/reference.conf b/core/driver/sources/src/main/resources/reference.conf index 17d137fc..cdc80da1 100644 --- a/core/driver/sources/src/main/resources/reference.conf +++ b/core/driver/sources/src/main/resources/reference.conf @@ -123,6 +123,7 @@ probe { // intellij.repositories = [ // "file:///"${HOME}"/.gradle/*/modules-2/*/*/ideaIC/[revision]/*/ideaIC-[revision]/" // ] + // Note: you can NOT use the * wildcard in place of the last element of the pattern (as that would lead to ambiguous results). // // Note: if you use the `intellij.repositories` config with a value pointing to an installed // IntelliJ instance directory - then DO NOT use the `probe.intellij.path` config in the same time. diff --git a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala index f694f4bb..89f3d441 100644 --- a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala +++ b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala @@ -46,24 +46,28 @@ case class IntelliJPatternResolver(pattern: String) extends IntelliJResolver { val replacedBeforeResolvingGlobs = replacements.foldLeft(pattern) { case (path, (pattern, replacement)) => path.replace(s"[$pattern]", replacement) } - val replaced = replaceGlobsWithExistingDirectories(List(replacedBeforeResolvingGlobs)).head + val replaced = resolveGlobsInPattern(replacedBeforeResolvingGlobs) Dependency(replaced) } - // solution below assumes that each * character is used to mark one part of the path (one atomic directory), - // for example: "file:///home/.cache/ides/com.jetbrains.intellij.idea/ideaIC/[revision]/*/ideaIC-[revision]/" + private def resolveGlobsInPattern(pathPattern: String): String = + replaceGlobsWithExistingDirectories(List(pathPattern), pathPattern).head + + // Solution below assumes that each * character is used to mark one part of the path (one atomic directory), + // for example: "file:///home/.cache/ides/com.jetbrains.intellij.idea/ideaIC/[revision]/*/ideaIC-[revision]/". + // Wildcard character should NOT be used as the last element of the pattern - to avoid ambiguous results. @tailrec - private def replaceGlobsWithExistingDirectories(paths: List[String]): List[String] = - if (paths.exists(pathMightBeValidResource)) - paths.filter(pathMightBeValidResource) + private def replaceGlobsWithExistingDirectories(paths: List[String], originalPattern: String): List[String] = + if (paths.exists(pathMightBeValidResource(_, originalPattern))) + paths.filter(pathMightBeValidResource(_, originalPattern)) else - replaceGlobsWithExistingDirectories(paths.flatMap(replaceFirstFoundWildcardWithDirectories)) + replaceGlobsWithExistingDirectories(paths.flatMap(replaceFirstFoundWildcardWithDirectories), originalPattern) - private def pathMightBeValidResource(path: String): Boolean = - path.indexOf('*') == -1 && - (path.endsWith(".zip") || - path.endsWith(".dmg") || - Paths.get(path.replace("file:", "")).isDirectory) + private def pathMightBeValidResource(candidatePath: String, originalPattern: String): Boolean = + !candidatePath.contains('*') && // below - make sure that candidatePath's last path element is same as in pattern + candidatePath.substring(candidatePath.lastIndexOf('/')) == originalPattern.substring( + originalPattern.lastIndexOf('/') + ) private def replaceFirstFoundWildcardWithDirectories(path: String): List[String] = { def removeLastFileSeparator(path: String): String = if (path.endsWith("/")) path.init else path From b5f6fa7d9b7bd243e012a2d0681caf8db3ab081f Mon Sep 17 00:00:00 2001 From: LukaszKontowski Date: Mon, 17 Oct 2022 15:23:32 +0200 Subject: [PATCH 06/10] Fi logic for checking las part of the candidate path --- .../org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala index 89f3d441..ef068724 100644 --- a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala +++ b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala @@ -67,7 +67,7 @@ case class IntelliJPatternResolver(pattern: String) extends IntelliJResolver { !candidatePath.contains('*') && // below - make sure that candidatePath's last path element is same as in pattern candidatePath.substring(candidatePath.lastIndexOf('/')) == originalPattern.substring( originalPattern.lastIndexOf('/') - ) + ) && Paths.get(candidatePath.replace("file:", "")).exists private def replaceFirstFoundWildcardWithDirectories(path: String): List[String] = { def removeLastFileSeparator(path: String): String = if (path.endsWith("/")) path.init else path From b7f601c43ed9563522ca08144d99688fcb87b4cd Mon Sep 17 00:00:00 2001 From: LukaszKontowski Date: Mon, 17 Oct 2022 16:03:29 +0200 Subject: [PATCH 07/10] fix logic for non-local patterns --- core/driver/sources/src/main/resources/reference.conf | 5 +++-- .../ideprobe/dependencies/IntelliJResolver.scala | 8 +++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/core/driver/sources/src/main/resources/reference.conf b/core/driver/sources/src/main/resources/reference.conf index 4b82f949..ba21a4e6 100644 --- a/core/driver/sources/src/main/resources/reference.conf +++ b/core/driver/sources/src/main/resources/reference.conf @@ -118,8 +118,9 @@ probe { // ] // - as you can see - the * wildcard is handy as it replaces a hash that could not be known easily. There could be // multiple different directories in the * place - but not all of them lead to a valid IntelliJ resource. ide-probe - // deals with such situations and finds the correct path to a valid IntelliJ resource. Note: example below would - // work as well as the previous one, as multiple * wildcards in one path are handled properly: + // deals with such situations and finds the correct path to a valid IntelliJ resource. The pattern must start with + // "file:" if resolving * wildcards should be used. + // Note: example below would work as good as the previous one. Multiple * wildcards in one path are handled properly: // intellij.repositories = [ // "file:///"${HOME}"/.gradle/*/modules-2/*/*/ideaIC/[revision]/*/ideaIC-[revision]/" // ] diff --git a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala index ef068724..cfa5e1c8 100644 --- a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala +++ b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala @@ -46,7 +46,12 @@ case class IntelliJPatternResolver(pattern: String) extends IntelliJResolver { val replacedBeforeResolvingGlobs = replacements.foldLeft(pattern) { case (path, (pattern, replacement)) => path.replace(s"[$pattern]", replacement) } - val replaced = resolveGlobsInPattern(replacedBeforeResolvingGlobs) + val replaced = + if (replacedBeforeResolvingGlobs.startsWith("file:")) + resolveGlobsInPattern(replacedBeforeResolvingGlobs) + else + replacedBeforeResolvingGlobs + Dependency(replaced) } @@ -56,6 +61,7 @@ case class IntelliJPatternResolver(pattern: String) extends IntelliJResolver { // Solution below assumes that each * character is used to mark one part of the path (one atomic directory), // for example: "file:///home/.cache/ides/com.jetbrains.intellij.idea/ideaIC/[revision]/*/ideaIC-[revision]/". // Wildcard character should NOT be used as the last element of the pattern - to avoid ambiguous results. + // Works only for files in local filesystem. @tailrec private def replaceGlobsWithExistingDirectories(paths: List[String], originalPattern: String): List[String] = if (paths.exists(pathMightBeValidResource(_, originalPattern))) From c6c43a4a844199599b9965a603ffa48d3b9f6f44 Mon Sep 17 00:00:00 2001 From: LukaszKontowski Date: Mon, 17 Oct 2022 16:42:41 +0200 Subject: [PATCH 08/10] Improve code style - use String#split --- .../virtuslab/ideprobe/dependencies/IntelliJResolver.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala index cfa5e1c8..b01501bf 100644 --- a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala +++ b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala @@ -78,8 +78,8 @@ case class IntelliJPatternResolver(pattern: String) extends IntelliJResolver { private def replaceFirstFoundWildcardWithDirectories(path: String): List[String] = { def removeLastFileSeparator(path: String): String = if (path.endsWith("/")) path.init else path - val pathUntilWildcard = Paths.get(path.substring(0, path.indexOf('*')).replace("file:", "")) - val stringPathAfterWildcard = path.substring(path.indexOf('*') + 1) + val Array(stringPathUntilWildcard, stringPathAfterWildcard) = path.split("*", 2) + val pathUntilWildcard = Paths.get(stringPathUntilWildcard.replace("file:", "")) if (pathUntilWildcard.exists) { pathUntilWildcard From 93ce1eca8b1fcecf1e383ba4f1a16c5af3e32958 Mon Sep 17 00:00:00 2001 From: LukaszKontowski Date: Mon, 17 Oct 2022 17:30:11 +0200 Subject: [PATCH 09/10] Revert "Improve code style - use String#split" This reverts commit c6c43a4a844199599b9965a603ffa48d3b9f6f44. --- .../virtuslab/ideprobe/dependencies/IntelliJResolver.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala index b01501bf..cfa5e1c8 100644 --- a/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala +++ b/core/driver/sources/src/main/scala/org/virtuslab/ideprobe/dependencies/IntelliJResolver.scala @@ -78,8 +78,8 @@ case class IntelliJPatternResolver(pattern: String) extends IntelliJResolver { private def replaceFirstFoundWildcardWithDirectories(path: String): List[String] = { def removeLastFileSeparator(path: String): String = if (path.endsWith("/")) path.init else path - val Array(stringPathUntilWildcard, stringPathAfterWildcard) = path.split("*", 2) - val pathUntilWildcard = Paths.get(stringPathUntilWildcard.replace("file:", "")) + val pathUntilWildcard = Paths.get(path.substring(0, path.indexOf('*')).replace("file:", "")) + val stringPathAfterWildcard = path.substring(path.indexOf('*') + 1) if (pathUntilWildcard.exists) { pathUntilWildcard From dd834dfd4e8aca1f1abd283aec7eddba9a1151c0 Mon Sep 17 00:00:00 2001 From: LukaszKontowski Date: Mon, 17 Oct 2022 22:54:20 +0200 Subject: [PATCH 10/10] Improve test scanarios --- .../maven/com/invalid/intellij/idea/artifact/1.0/artifact-1.0.zip | 0 .../com/jetbrains/intellij/idea/artifact/1.0/artifact-1.0.dmg | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/driver/sources/src/test/resources/org/virtuslab/ideprobe/dependencies/intellij/maven/com/invalid/intellij/idea/artifact/1.0/artifact-1.0.zip create mode 100644 core/driver/sources/src/test/resources/org/virtuslab/ideprobe/dependencies/intellij/maven/com/jetbrains/intellij/idea/artifact/1.0/artifact-1.0.dmg diff --git a/core/driver/sources/src/test/resources/org/virtuslab/ideprobe/dependencies/intellij/maven/com/invalid/intellij/idea/artifact/1.0/artifact-1.0.zip b/core/driver/sources/src/test/resources/org/virtuslab/ideprobe/dependencies/intellij/maven/com/invalid/intellij/idea/artifact/1.0/artifact-1.0.zip new file mode 100644 index 00000000..e69de29b diff --git a/core/driver/sources/src/test/resources/org/virtuslab/ideprobe/dependencies/intellij/maven/com/jetbrains/intellij/idea/artifact/1.0/artifact-1.0.dmg b/core/driver/sources/src/test/resources/org/virtuslab/ideprobe/dependencies/intellij/maven/com/jetbrains/intellij/idea/artifact/1.0/artifact-1.0.dmg new file mode 100644 index 00000000..e69de29b