publish package runner should support windows-style slashes
authorEugene.Petrenko <eugene.petrenko@gmail.com>
Wed, 24 Aug 2011 13:33:27 +0000 (15:33 +0200)
committerEugene.Petrenko <eugene.petrenko@gmail.com>
Wed, 24 Aug 2011 13:33:27 +0000 (15:33 +0200)
nuget-agent/src/jetbrains/buildServer/nuget/agent/runner/publish/MatchFilesBuildProcess.java
nuget-tests/src/jetbrains/buildServer/nuget/tests/agent/MatchFilesBuildProcessTest.java

index e6ed5d3aa452c498ee2de53366e07a0670da1776..d2f60b851f6615c396459c75f766c090152740ef 100644 (file)
@@ -30,7 +30,6 @@ import org.jetbrains.annotations.NotNull;
 import java.io.File;\r
 import java.io.IOException;\r
 import java.util.ArrayList;\r
-import java.util.Iterator;\r
 import java.util.List;\r
 \r
 /**\r
@@ -55,27 +54,28 @@ public class MatchFilesBuildProcess extends BuildProcessBase {
   @NotNull\r
   @Override\r
   protected BuildFinishedStatus waitForImpl() throws RunBuildException {\r
-    final List<String> files = new ArrayList<String>(myParameters.getFiles());\r
 \r
     boolean found = false;\r
 \r
-    for(Iterator<String> it = files.iterator(); it.hasNext();) {\r
-      final String pattern = it.next().trim();\r
+    final List<String> patterns = new ArrayList<String>();\r
+    for (String _pattern : myParameters.getFiles()) {\r
+      final String pattern = _pattern.trim();\r
       if (StringUtil.isEmptyOrSpaces(pattern)) {\r
-        it.remove();\r
         continue;\r
       }\r
 \r
       final File file = new File(pattern);\r
       if (file.isAbsolute()) {\r
         found = true;\r
-        LOG.debug("Found nugkg to push: " + file);\r
+        LOG.debug("Found .nugkg to push: " + file);\r
         myCallback.fileFound(file);\r
-        it.remove();\r
+        continue;\r
       }\r
+\r
+      patterns.add(pattern.replace('\\', '/'));\r
     }\r
 \r
-    final String[] includes = files.toArray(new String[files.size()]);\r
+    final String[] includes = patterns.toArray(new String[patterns.size()]);\r
     AntPatternFileFinder finder = new AntPatternFileFinder(\r
             includes,\r
             new String[0],\r
@@ -96,7 +96,7 @@ public class MatchFilesBuildProcess extends BuildProcessBase {
     }\r
 \r
     if (!found) {\r
-      throw new RunBuildException("Failed to find files to publish matching: " + files + " under " + root + ". No packages to publish. ");\r
+      throw new RunBuildException("Failed to find files to publish matching: " + new ArrayList<String>(myParameters.getFiles()) + " under " + root + ". No packages to publish. ");\r
     }\r
 \r
     return BuildFinishedStatus.FINISHED_SUCCESS;\r
index bdd8264b4fe834b2037a0ec14b9a98b5a9f6e6ef..3fb0dc504660a5822bf67008c40deb1eb9586a36 100644 (file)
@@ -16,6 +16,7 @@
 \r
 package jetbrains.buildServer.nuget.tests.agent;\r
 \r
+import com.intellij.openapi.util.SystemInfo;\r
 import jetbrains.buildServer.RunBuildException;\r
 import jetbrains.buildServer.agent.AgentRunningBuild;\r
 import jetbrains.buildServer.agent.BuildFinishedStatus;\r
@@ -106,6 +107,40 @@ public class MatchFilesBuildProcessTest extends BuildProcessTestCase {
   }\r
 \r
   @Test\r
+  public void test_match_relative_file_windows_slashes() throws RunBuildException {\r
+    if (!SystemInfo.isWindows) return;\r
+    final File dest = new File(root, "a/b/c/d/e/aaa.txt");\r
+    FileUtil.createParentDirs(dest);\r
+    FileUtil.writeFile(dest, "some content");\r
+\r
+    m.checking(new Expectations() {{\r
+      oneOf(cb).fileFound(dest);\r
+    }});\r
+\r
+    files.add("a\\b\\c\\d\\e\\aaa.txt");\r
+    assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
+\r
+    m.assertIsSatisfied();\r
+  }\r
+\r
+  @Test\r
+  public void test_match_relative_file_slashes() throws RunBuildException {\r
+    if (!SystemInfo.isWindows) return;\r
+    final File dest = new File(root, "a/b/c/d/e/aaa.txt");\r
+    FileUtil.createParentDirs(dest);\r
+    FileUtil.writeFile(dest, "some content");\r
+\r
+    m.checking(new Expectations() {{\r
+      oneOf(cb).fileFound(dest);\r
+    }});\r
+\r
+    files.add("a/b/c/d/e/aaa.txt");\r
+    assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
+\r
+    m.assertIsSatisfied();\r
+  }\r
+\r
+  @Test\r
   public void test_match_relative_file_wildcard() throws RunBuildException {\r
     final File dest = new File(root, "q/e/r/t/aaa.txt");\r
     FileUtil.createParentDirs(dest);\r