2 * Copyright 2000-2011 JetBrains s.r.o.
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
17 package jetbrains.buildServer.nuget.tests.agent;
\r
19 import jetbrains.buildServer.RunBuildException;
\r
20 import jetbrains.buildServer.agent.AgentRunningBuild;
\r
21 import jetbrains.buildServer.agent.BuildFinishedStatus;
\r
22 import jetbrains.buildServer.agent.BuildRunnerContext;
\r
23 import jetbrains.buildServer.nuget.agent.parameters.NuGetPublishParameters;
\r
24 import jetbrains.buildServer.nuget.agent.publish.MatchFilesBuildProcess;
\r
25 import jetbrains.buildServer.nuget.tests.Strings;
\r
26 import jetbrains.buildServer.nuget.tests.util.BuildProcessTestCase;
\r
27 import jetbrains.buildServer.util.FileUtil;
\r
28 import org.jmock.Expectations;
\r
29 import org.jmock.Mockery;
\r
30 import org.testng.annotations.BeforeMethod;
\r
31 import org.testng.annotations.Test;
\r
33 import java.io.File;
\r
34 import java.util.ArrayList;
\r
35 import java.util.List;
\r
38 * Created by Eugene Petrenko (eugene.petrenko@gmail.com)
\r
39 * Date: 21.07.11 20:38
\r
41 public class MatchFilesBuildProcessTest extends BuildProcessTestCase {
\r
44 private MatchFilesBuildProcess match;
\r
45 private AgentRunningBuild build;
\r
46 private BuildRunnerContext ctx;
\r
47 private NuGetPublishParameters params;
\r
48 private MatchFilesBuildProcess.Callback cb;
\r
50 private List<String> files;
\r
54 protected void setUp() throws Exception {
\r
58 files = new ArrayList<String>();
\r
59 build = m.mock(AgentRunningBuild.class);
\r
60 ctx = m.mock(BuildRunnerContext.class);
\r
61 params = m.mock(NuGetPublishParameters.class);
\r
62 cb = m.mock(MatchFilesBuildProcess.Callback.class);
\r
64 match = new MatchFilesBuildProcess(ctx, params, cb);
\r
65 root = createTempDir();
\r
67 m.checking(new Expectations() {{
\r
68 allowing(params).getFiles();
\r
69 will(returnValue(files));
\r
70 allowing(ctx).getBuild();
\r
71 will(returnValue(build));
\r
72 allowing(build).getCheckoutDirectory();
\r
73 will(returnValue(root));
\r
78 public void test_match_relative_file() throws RunBuildException {
\r
79 final File dest = new File(root, "aaa.txt");
\r
80 FileUtil.writeFile(dest, "some content");
\r
82 m.checking(new Expectations() {{
\r
83 oneOf(cb).fileFound(dest);
\r
86 files.add("aaa.txt");
\r
87 assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);
\r
89 m.assertIsSatisfied();
\r
93 public void test_match_relative_file_worng_symbols() throws RunBuildException {
\r
94 final File dest = new File(root, "aaa.txt");
\r
95 FileUtil.writeFile(dest, "some content");
\r
97 m.checking(new Expectations() {{
\r
98 oneOf(cb).fileFound(dest);
\r
101 files.add("aaa.txt");
\r
102 files.add(Strings.EXOTIC);
\r
103 assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);
\r
105 m.assertIsSatisfied();
\r
109 public void test_match_relative_file_wildcard() throws RunBuildException {
\r
110 final File dest = new File(root, "q/e/r/t/aaa.txt");
\r
111 FileUtil.createParentDirs(dest);
\r
112 FileUtil.writeFile(dest, "some content");
\r
114 m.checking(new Expectations() {{
\r
115 oneOf(cb).fileFound(dest);
\r
118 files.add("**/*.txt");
\r
119 assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);
\r
121 m.assertIsSatisfied();
\r
125 public void test_match_relative_file_wildcard3() throws RunBuildException {
\r
126 final File dest = new File(root, "q/e/r/t/aaa.txt");
\r
127 FileUtil.createParentDirs(dest);
\r
128 FileUtil.writeFile(dest, "some content");
\r
130 final File dest2 = new File(root, "q/v/i/k/abbb.txt");
\r
131 FileUtil.createParentDirs(dest2);
\r
132 FileUtil.writeFile(dest2, "some content");
\r
134 m.checking(new Expectations() {{
\r
135 oneOf(cb).fileFound(dest);
\r
136 oneOf(cb).fileFound(dest2);
\r
139 files.add("**/*a.txt");
\r
140 files.add("**/*b.txt");
\r
141 assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);
\r
143 m.assertIsSatisfied();
\r
147 public void test_match_relative_file_wildcard2() throws RunBuildException {
\r
148 final File dest = new File(root, "q/e/r/t/aaa.txt");
\r
149 FileUtil.createParentDirs(dest);
\r
150 FileUtil.writeFile(dest, "some content");
\r
152 final File dest2 = new File(root, "q/e/p/t/aaa.txt");
\r
153 FileUtil.createParentDirs(dest2);
\r
154 FileUtil.writeFile(dest2, "some content");
\r
156 final File dest3 = new File(root, "q/e/p/z/bbb.txt");
\r
157 FileUtil.createParentDirs(dest3);
\r
158 FileUtil.writeFile(dest3, "some content");
\r
160 m.checking(new Expectations() {{
\r
161 oneOf(cb).fileFound(dest);
\r
162 oneOf(cb).fileFound(dest2);
\r
165 files.add("**/a*.txt");
\r
166 assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);
\r
168 m.assertIsSatisfied();
\r
173 public void test_match_fullPath_file() throws RunBuildException {
\r
174 final File dest = new File(root, "aaa.txt");
\r
175 FileUtil.writeFile(dest, "some content");
\r
177 m.checking(new Expectations() {{
\r
178 oneOf(cb).fileFound(dest);
\r
181 files.add(FileUtil.getCanonicalFile(dest).getPath());
\r
182 assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);
\r
184 m.assertIsSatisfied();
\r
188 public void test_match_fullPath_file2() throws RunBuildException {
\r
189 final File dest = new File(root, "a/b/c/aaa.txt");
\r
190 FileUtil.createParentDirs(dest);
\r
191 FileUtil.writeFile(dest, "some content");
\r
193 m.checking(new Expectations() {{
\r
194 oneOf(cb).fileFound(dest);
\r
197 files.add(FileUtil.getCanonicalFile(dest).getPath());
\r
198 assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);
\r
200 m.assertIsSatisfied();
\r
204 public void test_match_no_files() {
\r
205 final File dest = new File(root, "aaa.txt");
\r
206 FileUtil.writeFile(dest, "some content");
\r
208 assertRunException(match, "Failed to find files to publish matching");
\r
210 m.assertIsSatisfied();
\r