more matcher tests
[teamcity/dotNetPackagesSupport.git] / nuget-tests / src / jetbrains / buildServer / nuget / tests / agent / MatchFilesBuildProcessTest.java
1 /*\r
2  * Copyright 2000-2011 JetBrains s.r.o.\r
3  *\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
7  *\r
8  * http://www.apache.org/licenses/LICENSE-2.0\r
9  *\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
15  */\r
16 \r
17 package jetbrains.buildServer.nuget.tests.agent;\r
18 \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
32 \r
33 import java.io.File;\r
34 import java.util.ArrayList;\r
35 import java.util.List;\r
36 \r
37 /**\r
38  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
39  * Date: 21.07.11 20:38\r
40  */\r
41 public class MatchFilesBuildProcessTest extends BuildProcessTestCase {\r
42   private Mockery m;\r
43 \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
49   private File root;\r
50   private List<String> files;\r
51 \r
52   @BeforeMethod\r
53   @Override\r
54   protected void setUp() throws Exception {\r
55     super.setUp();\r
56 \r
57     m = new Mockery();\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
63 \r
64     match = new MatchFilesBuildProcess(ctx, params, cb);\r
65     root = createTempDir();\r
66 \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
74     }});\r
75   }\r
76 \r
77   @Test\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
81 \r
82     m.checking(new Expectations() {{\r
83       oneOf(cb).fileFound(dest);\r
84     }});\r
85 \r
86     files.add("aaa.txt");\r
87     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
88 \r
89     m.assertIsSatisfied();\r
90   }\r
91 \r
92   @Test\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
96 \r
97     m.checking(new Expectations() {{\r
98       oneOf(cb).fileFound(dest);\r
99     }});\r
100 \r
101     files.add("aaa.txt");\r
102     files.add(Strings.EXOTIC);\r
103     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
104 \r
105     m.assertIsSatisfied();\r
106   }\r
107 \r
108   @Test\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
113 \r
114     m.checking(new Expectations() {{\r
115       oneOf(cb).fileFound(dest);\r
116     }});\r
117 \r
118     files.add("**/*.txt");\r
119     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
120 \r
121     m.assertIsSatisfied();\r
122   }\r
123 \r
124   @Test\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
129 \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
133 \r
134     m.checking(new Expectations() {{\r
135       oneOf(cb).fileFound(dest);\r
136       oneOf(cb).fileFound(dest2);\r
137     }});\r
138 \r
139     files.add("**/*a.txt");\r
140     files.add("**/*b.txt");\r
141     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
142 \r
143     m.assertIsSatisfied();\r
144   }\r
145 \r
146   @Test\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
151 \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
155 \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
159 \r
160     m.checking(new Expectations() {{\r
161       oneOf(cb).fileFound(dest);\r
162       oneOf(cb).fileFound(dest2);\r
163     }});\r
164 \r
165     files.add("**/a*.txt");\r
166     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
167 \r
168     m.assertIsSatisfied();\r
169   }\r
170 \r
171 \r
172   @Test\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
176 \r
177     m.checking(new Expectations() {{\r
178       oneOf(cb).fileFound(dest);\r
179     }});\r
180 \r
181     files.add(FileUtil.getCanonicalFile(dest).getPath());\r
182     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
183 \r
184     m.assertIsSatisfied();\r
185   }\r
186 \r
187   @Test\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
192 \r
193     m.checking(new Expectations() {{\r
194       oneOf(cb).fileFound(dest);\r
195     }});\r
196 \r
197     files.add(FileUtil.getCanonicalFile(dest).getPath());\r
198     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
199 \r
200     m.assertIsSatisfied();\r
201   }\r
202 \r
203   @Test\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
207 \r
208     assertRunException(match, "Failed to find files to publish matching");\r
209 \r
210     m.assertIsSatisfied();\r
211   }\r
212 }\r