--- /dev/null
+/*\r
+ * Copyright 2000-2011 JetBrains s.r.o.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package jetbrains.buildServer.nuget.tests.agent;\r
+\r
+import jetbrains.buildServer.agent.AgentRunningBuild;\r
+import jetbrains.buildServer.agent.BuildFinishedStatus;\r
+import jetbrains.buildServer.agent.BuildRunnerContext;\r
+import jetbrains.buildServer.nuget.agent.parameters.NuGetPublishParameters;\r
+import jetbrains.buildServer.nuget.agent.publish.MatchFilesBuildProcess;\r
+import jetbrains.buildServer.nuget.tests.util.BuildProcessTestCase;\r
+import jetbrains.buildServer.util.FileUtil;\r
+import org.jmock.Expectations;\r
+import org.jmock.Mockery;\r
+import org.testng.annotations.BeforeMethod;\r
+import org.testng.annotations.Test;\r
+\r
+import java.io.File;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+/**\r
+ * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
+ * Date: 21.07.11 20:38\r
+ */\r
+public class MatchFilesBuildProcessTest extends BuildProcessTestCase {\r
+ private Mockery m;\r
+\r
+ private MatchFilesBuildProcess match;\r
+ private AgentRunningBuild build;\r
+ private BuildRunnerContext ctx;\r
+ private NuGetPublishParameters params;\r
+ private MatchFilesBuildProcess.Callback cb;\r
+ private File root;\r
+ private List<String> files;\r
+\r
+ @BeforeMethod\r
+ @Override\r
+ protected void setUp() throws Exception {\r
+ super.setUp();\r
+\r
+ m = new Mockery();\r
+ files = new ArrayList<String>();\r
+ build = m.mock(AgentRunningBuild.class);\r
+ ctx = m.mock(BuildRunnerContext.class);\r
+ params = m.mock(NuGetPublishParameters.class);\r
+ cb = m.mock(MatchFilesBuildProcess.Callback.class);\r
+\r
+ match = new MatchFilesBuildProcess(ctx, params, cb);\r
+ root = createTempDir();\r
+\r
+ m.checking(new Expectations(){{\r
+ allowing(params).getFiles(); will(returnValue(files));\r
+ allowing(ctx).getBuild(); will(returnValue(build));\r
+ allowing(build).getCheckoutDirectory(); will(returnValue(root));\r
+ }});\r
+ }\r
+\r
+ @Test\r
+ public void test_match_relative_file() {\r
+ final File dest = new File(root, "aaa.txt");\r
+ FileUtil.writeFile(dest, "some content");\r
+\r
+ files.add("aaa.txt");\r
+ assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
+ }\r
+\r
+ @Test\r
+ public void test_match_relative_file_wildcard() {\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
+ files.add("**/*.txt");\r
+ assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
+ }\r
+\r
+\r
+ @Test\r
+ public void test_match_fullPath_file() {\r
+ final File dest = new File(root, "aaa.txt");\r
+ FileUtil.writeFile(dest, "some content");\r
+\r
+ files.add(FileUtil.getCanonicalFile(dest).getPath());\r
+ assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
+ }\r
+\r
+ @Test\r
+ public void test_match_fullPath_file2() {\r
+ final File dest = new File(root, "a/b/c/aaa.txt");\r
+ FileUtil.createParentDirs(dest);\r
+ FileUtil.writeFile(dest, "some content");\r
+\r
+ files.add(FileUtil.getCanonicalFile(dest).getPath());\r
+ assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
+ }\r
+\r
+ @Test\r
+ public void test_match_no_files() {\r
+ final File dest = new File(root, "aaa.txt");\r
+ FileUtil.writeFile(dest, "some content");\r
+\r
+ assertRunException(match, "fick");\r
+ }\r
+}\r