c0577441510f056c65ee31793c74c7e10a6c5c5b
[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.util.BuildProcessTestCase;\r
26 import jetbrains.buildServer.util.FileUtil;\r
27 import org.jmock.Expectations;\r
28 import org.jmock.Mockery;\r
29 import org.testng.annotations.BeforeMethod;\r
30 import org.testng.annotations.Test;\r
31 \r
32 import java.io.File;\r
33 import java.util.ArrayList;\r
34 import java.util.List;\r
35 \r
36 /**\r
37  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
38  * Date: 21.07.11 20:38\r
39  */\r
40 public class MatchFilesBuildProcessTest extends BuildProcessTestCase {\r
41   private Mockery m;\r
42 \r
43   private MatchFilesBuildProcess match;\r
44   private AgentRunningBuild build;\r
45   private BuildRunnerContext ctx;\r
46   private NuGetPublishParameters params;\r
47   private MatchFilesBuildProcess.Callback cb;\r
48   private File root;\r
49   private List<String> files;\r
50 \r
51   @BeforeMethod\r
52   @Override\r
53   protected void setUp() throws Exception {\r
54     super.setUp();\r
55 \r
56     m = new Mockery();\r
57     files = new ArrayList<String>();\r
58     build = m.mock(AgentRunningBuild.class);\r
59     ctx = m.mock(BuildRunnerContext.class);\r
60     params = m.mock(NuGetPublishParameters.class);\r
61     cb = m.mock(MatchFilesBuildProcess.Callback.class);\r
62 \r
63     match = new MatchFilesBuildProcess(ctx, params, cb);\r
64     root = createTempDir();\r
65 \r
66     m.checking(new Expectations(){{\r
67       allowing(params).getFiles(); will(returnValue(files));\r
68       allowing(ctx).getBuild(); will(returnValue(build));\r
69       allowing(build).getCheckoutDirectory(); will(returnValue(root));\r
70     }});\r
71   }\r
72 \r
73   @Test\r
74   public void test_match_relative_file() throws RunBuildException {\r
75     final File dest = new File(root, "aaa.txt");\r
76     FileUtil.writeFile(dest, "some content");\r
77 \r
78     m.checking(new Expectations(){{\r
79       oneOf(cb).fileFound(dest);\r
80     }});\r
81 \r
82     files.add("aaa.txt");\r
83     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
84 \r
85     m.assertIsSatisfied();\r
86   }\r
87 \r
88   @Test\r
89   public void test_match_relative_file_wildcard() throws RunBuildException {\r
90     final File dest = new File(root, "q/e/r/t/aaa.txt");\r
91     FileUtil.createParentDirs(dest);\r
92     FileUtil.writeFile(dest, "some content");\r
93 \r
94     m.checking(new Expectations(){{\r
95       oneOf(cb).fileFound(dest);\r
96     }});\r
97 \r
98     files.add("**/*.txt");\r
99     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
100 \r
101     m.assertIsSatisfied();\r
102   }\r
103 \r
104 \r
105   @Test\r
106   public void test_match_fullPath_file() throws RunBuildException {\r
107     final File dest = new File(root, "aaa.txt");\r
108     FileUtil.writeFile(dest, "some content");\r
109 \r
110     m.checking(new Expectations(){{\r
111       oneOf(cb).fileFound(dest);\r
112     }});\r
113 \r
114     files.add(FileUtil.getCanonicalFile(dest).getPath());\r
115     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
116 \r
117     m.assertIsSatisfied();\r
118   }\r
119 \r
120   @Test\r
121   public void test_match_fullPath_file2() throws RunBuildException {\r
122     final File dest = new File(root, "a/b/c/aaa.txt");\r
123     FileUtil.createParentDirs(dest);\r
124     FileUtil.writeFile(dest, "some content");\r
125 \r
126     m.checking(new Expectations(){{\r
127       oneOf(cb).fileFound(dest);\r
128     }});\r
129 \r
130     files.add(FileUtil.getCanonicalFile(dest).getPath());\r
131     assertRunSuccessfully(match, BuildFinishedStatus.FINISHED_SUCCESS);\r
132 \r
133     m.assertIsSatisfied();\r
134   }\r
135 \r
136   @Test\r
137   public void test_match_no_files() {\r
138     final File dest = new File(root, "aaa.txt");\r
139     FileUtil.writeFile(dest, "some content");\r
140 \r
141     assertRunException(match, "Failed to find files to publish matching");\r
142 \r
143     m.assertIsSatisfied();\r
144   }\r
145 }\r