fix matcher test
authorEugene Petrenko <eugene.petrenko@gmail.com>
Thu, 21 Jul 2011 21:11:46 +0000 (01:11 +0400)
committerEugene Petrenko <eugene.petrenko@gmail.com>
Thu, 21 Jul 2011 21:11:46 +0000 (01:11 +0400)
nuget-agent/src/jetbrains/buildServer/nuget/agent/publish/MatchFilesBuildProcess.java
nuget-tests/src/jetbrains/buildServer/nuget/tests/agent/MatchFilesBuildProcessTest.java

index 4bc1adc35e20e4bb856ded31507af5bc93520fcd..803f235c2f29b170d531d67a79ef601883fff519 100644 (file)
@@ -24,11 +24,14 @@ import jetbrains.buildServer.agent.BuildRunnerContext;
 import jetbrains.buildServer.agent.util.AntPatternFileFinder;\r
 import jetbrains.buildServer.nuget.agent.parameters.NuGetPublishParameters;\r
 import jetbrains.buildServer.nuget.agent.util.BuildProcessBase;\r
+import jetbrains.buildServer.util.StringUtil;\r
 import org.jetbrains.annotations.NotNull;\r
 \r
 import java.io.File;\r
 import java.io.IOException;\r
-import java.util.Collection;\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.List;\r
 \r
 /**\r
  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
@@ -52,7 +55,26 @@ public class MatchFilesBuildProcess extends BuildProcessBase {
   @NotNull\r
   @Override\r
   protected BuildFinishedStatus waitForImpl() throws RunBuildException {\r
-    final Collection<String> files = myParameters.getFiles();\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
+      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
+        myCallback.fileFound(file);\r
+        it.remove();\r
+      }\r
+    }\r
+\r
     final String[] includes = files.toArray(new String[files.size()]);\r
     AntPatternFileFinder finder = new AntPatternFileFinder(\r
             includes,\r
@@ -60,21 +82,23 @@ public class MatchFilesBuildProcess extends BuildProcessBase {
             SystemInfo.isFileSystemCaseSensitive\r
     );\r
 \r
+    final File root = myContext.getBuild().getCheckoutDirectory();\r
     try {\r
-      final File root = myContext.getBuild().getCheckoutDirectory();\r
       final File[] result = finder.findFiles(root);\r
-      if (result.length == 0) {\r
-        throw new RunBuildException("Failed to find files to publish matching: " + files + " under " + root + ". No packages to publish. ");\r
-      }\r
 \r
       for (File file : result) {\r
         LOG.debug("Found nugkg to push: " + file);\r
+        found = true;\r
         myCallback.fileFound(file);\r
       }\r
     } catch (IOException e) {\r
       throw new RunBuildException("Failed to find packages to publish. " + e.getMessage(), e);\r
     }\r
 \r
+    if (!found) {\r
+      throw new RunBuildException("Failed to find files to publish matching: " + files + " under " + root + ". No packages to publish. ");\r
+    }\r
+\r
     return BuildFinishedStatus.FINISHED_SUCCESS;\r
   }\r
 \r
index c17e2eebfdc5a510d49cb46342aa78893c71a375..c0577441510f056c65ee31793c74c7e10a6c5c5b 100644 (file)
@@ -16,6 +16,7 @@
 \r
 package jetbrains.buildServer.nuget.tests.agent;\r
 \r
+import jetbrains.buildServer.RunBuildException;\r
 import jetbrains.buildServer.agent.AgentRunningBuild;\r
 import jetbrains.buildServer.agent.BuildFinishedStatus;\r
 import jetbrains.buildServer.agent.BuildRunnerContext;\r
@@ -70,42 +71,66 @@ public class MatchFilesBuildProcessTest extends BuildProcessTestCase {
   }\r
 \r
   @Test\r
-  public void test_match_relative_file() {\r
+  public void test_match_relative_file() throws RunBuildException {\r
     final File dest = new File(root, "aaa.txt");\r
     FileUtil.writeFile(dest, "some content");\r
 \r
+    m.checking(new Expectations(){{\r
+      oneOf(cb).fileFound(dest);\r
+    }});\r
+\r
     files.add("aaa.txt");\r
     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
+\r
+    m.assertIsSatisfied();\r
   }\r
 \r
   @Test\r
-  public void test_match_relative_file_wildcard() {\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
     FileUtil.writeFile(dest, "some content");\r
 \r
+    m.checking(new Expectations(){{\r
+      oneOf(cb).fileFound(dest);\r
+    }});\r
+\r
     files.add("**/*.txt");\r
     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
+\r
+    m.assertIsSatisfied();\r
   }\r
 \r
 \r
   @Test\r
-  public void test_match_fullPath_file() {\r
+  public void test_match_fullPath_file() throws RunBuildException {\r
     final File dest = new File(root, "aaa.txt");\r
     FileUtil.writeFile(dest, "some content");\r
 \r
+    m.checking(new Expectations(){{\r
+      oneOf(cb).fileFound(dest);\r
+    }});\r
+\r
     files.add(FileUtil.getCanonicalFile(dest).getPath());\r
     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
+\r
+    m.assertIsSatisfied();\r
   }\r
 \r
   @Test\r
-  public void test_match_fullPath_file2() {\r
+  public void test_match_fullPath_file2() throws RunBuildException {\r
     final File dest = new File(root, "a/b/c/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(FileUtil.getCanonicalFile(dest).getPath());\r
     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
+\r
+    m.assertIsSatisfied();\r
   }\r
 \r
   @Test\r
@@ -113,6 +138,8 @@ public class MatchFilesBuildProcessTest extends BuildProcessTestCase {
     final File dest = new File(root, "aaa.txt");\r
     FileUtil.writeFile(dest, "some content");\r
 \r
-    assertRunException(match, "fick");\r
+    assertRunException(match, "Failed to find files to publish matching");\r
+\r
+    m.assertIsSatisfied();\r
   }\r
 }\r