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.BaseTestCase;
\r
20 import jetbrains.buildServer.RunBuildException;
\r
21 import jetbrains.buildServer.agent.BuildProcess;
\r
22 import jetbrains.buildServer.agent.BuildRunnerContext;
\r
23 import jetbrains.buildServer.nuget.agent.install.NuGetActionFactory;
\r
24 import jetbrains.buildServer.nuget.agent.install.PackagesInstallerBuilder;
\r
25 import jetbrains.buildServer.nuget.agent.parameters.NuGetParameters;
\r
26 import jetbrains.buildServer.nuget.agent.parameters.PackagesInstallParameters;
\r
27 import jetbrains.buildServer.nuget.agent.parameters.PackagesUpdateParameters;
\r
28 import jetbrains.buildServer.nuget.agent.util.BuildProcessContinuation;
\r
29 import jetbrains.buildServer.nuget.common.PackagesUpdateMode;
\r
30 import org.jmock.Expectations;
\r
31 import org.jmock.Mockery;
\r
32 import org.testng.annotations.BeforeMethod;
\r
33 import org.testng.annotations.Test;
\r
35 import java.io.File;
\r
38 * Created by Eugene Petrenko (eugene.petrenko@gmail.com)
\r
39 * Date: 18.07.11 20:26
\r
41 public class PackagesInstallerBuilderTest extends BaseTestCase {
\r
43 private PackagesInstallerBuilder builderUpdate;
\r
44 private PackagesInstallerBuilder builderInstall;
\r
45 private NuGetActionFactory factory;
\r
46 private BuildProcessContinuation install;
\r
47 private BuildProcessContinuation update;
\r
48 private BuildProcessContinuation postUpdate;
\r
49 private BuildRunnerContext context;
\r
50 private NuGetParameters nugetSettings;
\r
51 private PackagesInstallParameters installParameters;
\r
52 private PackagesUpdateParameters updateParameters;
\r
53 private File myTaget;
\r
55 private File myConfig;
\r
56 private File myConfig2;
\r
60 protected void setUp() throws Exception {
\r
63 final File root = createTempDir();
\r
64 myTaget = new File(root, "packages"){{mkdirs();}};
\r
65 mySln = new File(root, "project.sln") {{createNewFile();}};
\r
66 myConfig = new File(new File(root, "project"){{mkdirs();}}, "packages.config"){{createNewFile();}};
\r
67 myConfig2 = new File(new File(root, "project2"){{mkdirs();}}, "packages.config"){{createNewFile();}};
\r
70 factory = m.mock(NuGetActionFactory.class);
\r
71 install = m.mock(BuildProcessContinuation.class, "install");
\r
72 update = m.mock(BuildProcessContinuation.class, "update");
\r
73 postUpdate = m.mock(BuildProcessContinuation.class, "post-install");
\r
74 context = m.mock(BuildRunnerContext.class);
\r
75 installParameters = m.mock(PackagesInstallParameters.class);
\r
76 updateParameters = m.mock(PackagesUpdateParameters.class);
\r
77 nugetSettings = m.mock(NuGetParameters.class);
\r
79 builderUpdate = new PackagesInstallerBuilder(
\r
88 builderInstall = new PackagesInstallerBuilder(
\r
97 m.checking(new Expectations(){{
\r
98 allowing(installParameters).getNuGetParameters(); will(returnValue(nugetSettings));
\r
99 allowing(updateParameters).getNuGetParameters(); will(returnValue(nugetSettings));
\r
104 public void test_install() throws RunBuildException {
\r
105 final BuildProcess bp = m.mock(BuildProcess.class);
\r
106 m.checking(new Expectations(){{
\r
107 oneOf(factory).createInstall(context, installParameters, myConfig, myTaget);
\r
108 will(returnValue(bp));
\r
110 oneOf(install).pushBuildProcess(bp);
\r
113 builderInstall.onSolutionFileFound(mySln, myTaget);
\r
114 builderInstall.onPackagesConfigFound(myConfig, myTaget);
\r
118 public void test_install_may() throws RunBuildException {
\r
119 final BuildProcess bp1 = m.mock(BuildProcess.class, "bp-install-1");
\r
120 final BuildProcess bp2 = m.mock(BuildProcess.class, "bp-install-2");
\r
121 m.checking(new Expectations(){{
\r
122 oneOf(factory).createInstall(context, installParameters, myConfig, myTaget);
\r
123 will(returnValue(bp1));
\r
124 oneOf(factory).createInstall(context, installParameters, myConfig2, myTaget);
\r
125 will(returnValue(bp2));
\r
127 oneOf(install).pushBuildProcess(bp1);
\r
128 oneOf(install).pushBuildProcess(bp2);
\r
131 builderInstall.onSolutionFileFound(mySln, myTaget);
\r
132 builderInstall.onPackagesConfigFound(myConfig, myTaget);
\r
133 builderInstall.onPackagesConfigFound(myConfig2, myTaget);
\r
137 public void test_install_update_per_sln() throws RunBuildException {
\r
138 final BuildProcess bpInstall = m.mock(BuildProcess.class, "bp-install");
\r
139 final BuildProcess bpUpdate = m.mock(BuildProcess.class, "bp-update");
\r
140 final BuildProcess bpPostInstall = m.mock(BuildProcess.class, "bp-post-install");
\r
142 m.checking(new Expectations(){{
\r
143 allowing(updateParameters).getUpdateMode();
\r
144 will(returnValue(PackagesUpdateMode.FOR_SLN));
\r
146 oneOf(factory).createInstall(context, installParameters, myConfig, myTaget);
\r
147 will(returnValue(bpInstall));
\r
149 oneOf(factory).createUpdate(context, updateParameters, mySln, myTaget);
\r
150 will(returnValue(bpUpdate));
\r
152 oneOf(factory).createInstall(context, installParameters, myConfig, myTaget);
\r
153 will(returnValue(bpPostInstall));
\r
155 oneOf(update).pushBuildProcess(bpUpdate);
\r
156 oneOf(install).pushBuildProcess(bpInstall);
\r
157 oneOf(postUpdate).pushBuildProcess(bpPostInstall);
\r
161 builderUpdate.onSolutionFileFound(mySln, myTaget);
\r
162 builderUpdate.onPackagesConfigFound(myConfig, myTaget);
\r
166 public void test_install_update_per_sln_many() throws RunBuildException {
\r
167 final BuildProcess bpInstall1 = m.mock(BuildProcess.class, "bp-install-1");
\r
168 final BuildProcess bpInstall2 = m.mock(BuildProcess.class, "bp-install-2");
\r
169 final BuildProcess bpUpdate = m.mock(BuildProcess.class, "bp-update");
\r
170 final BuildProcess bpPostInstall1 = m.mock(BuildProcess.class, "bp-post-install-1");
\r
171 final BuildProcess bpPostInstall2 = m.mock(BuildProcess.class, "bp-post-install-2");
\r
173 m.checking(new Expectations(){{
\r
174 allowing(updateParameters).getUpdateMode();
\r
175 will(returnValue(PackagesUpdateMode.FOR_SLN));
\r
177 oneOf(factory).createInstall(context, installParameters, myConfig, myTaget);
\r
178 will(returnValue(bpInstall1));
\r
180 oneOf(factory).createInstall(context, installParameters, myConfig2, myTaget);
\r
181 will(returnValue(bpInstall2));
\r
183 oneOf(factory).createUpdate(context, updateParameters, mySln, myTaget);
\r
184 will(returnValue(bpUpdate));
\r
186 oneOf(factory).createInstall(context, installParameters, myConfig, myTaget);
\r
187 will(returnValue(bpPostInstall1));
\r
188 oneOf(factory).createInstall(context, installParameters, myConfig2, myTaget);
\r
189 will(returnValue(bpPostInstall2));
\r
191 oneOf(update).pushBuildProcess(bpUpdate);
\r
192 oneOf(install).pushBuildProcess(bpInstall1);
\r
193 oneOf(install).pushBuildProcess(bpInstall2);
\r
194 oneOf(postUpdate).pushBuildProcess(bpPostInstall1);
\r
195 oneOf(postUpdate).pushBuildProcess(bpPostInstall2);
\r
199 builderUpdate.onSolutionFileFound(mySln, myTaget);
\r
200 builderUpdate.onPackagesConfigFound(myConfig, myTaget);
\r
201 builderUpdate.onPackagesConfigFound(myConfig2, myTaget);
\r
204 public void test_install_update_per_config() throws RunBuildException {
\r
205 final BuildProcess bpInstall = m.mock(BuildProcess.class, "bp-install");
\r
206 final BuildProcess bpUpdate = m.mock(BuildProcess.class, "bp-update");
\r
207 final BuildProcess bpPostInstall = m.mock(BuildProcess.class, "bp-post-install");
\r
209 m.checking(new Expectations(){{
\r
210 allowing(updateParameters).getUpdateMode();
\r
211 will(returnValue(PackagesUpdateMode.FOR_EACH_PACKAGES_CONFIG));
\r
213 oneOf(factory).createInstall(context, installParameters, myConfig, myTaget);
\r
214 will(returnValue(bpInstall));
\r
216 oneOf(factory).createUpdate(context, updateParameters, myConfig, myTaget);
\r
217 will(returnValue(bpUpdate));
\r
219 oneOf(factory).createInstall(context, installParameters, myConfig, myTaget);
\r
220 will(returnValue(bpPostInstall));
\r
222 oneOf(update).pushBuildProcess(bpUpdate);
\r
223 oneOf(install).pushBuildProcess(bpInstall);
\r
224 oneOf(postUpdate).pushBuildProcess(bpPostInstall);
\r
228 builderUpdate.onSolutionFileFound(mySln, myTaget);
\r
229 builderUpdate.onPackagesConfigFound(myConfig, myTaget);
\r
233 public void test_install_update_per_config_many() throws RunBuildException {
\r
234 final BuildProcess bpInstall1 = m.mock(BuildProcess.class, "bp-install-1");
\r
235 final BuildProcess bpInstall2 = m.mock(BuildProcess.class, "bp-install-2");
\r
236 final BuildProcess bpUpdate1 = m.mock(BuildProcess.class, "bp-update-1");
\r
237 final BuildProcess bpUpdate2 = m.mock(BuildProcess.class, "bp-update-2");
\r
238 final BuildProcess bpPostInstall1 = m.mock(BuildProcess.class, "bp-post-install-1");
\r
239 final BuildProcess bpPostInstall2 = m.mock(BuildProcess.class, "bp-post-install-2");
\r
241 m.checking(new Expectations(){{
\r
242 allowing(updateParameters).getUpdateMode();
\r
243 will(returnValue(PackagesUpdateMode.FOR_EACH_PACKAGES_CONFIG));
\r
245 oneOf(factory).createInstall(context, installParameters, myConfig, myTaget);
\r
246 will(returnValue(bpInstall1));
\r
247 oneOf(factory).createInstall(context, installParameters, myConfig2, myTaget);
\r
248 will(returnValue(bpInstall2));
\r
250 oneOf(factory).createUpdate(context, updateParameters, myConfig, myTaget);
\r
251 will(returnValue(bpUpdate1));
\r
252 oneOf(factory).createUpdate(context, updateParameters, myConfig2, myTaget);
\r
253 will(returnValue(bpUpdate2));
\r
255 oneOf(factory).createInstall(context, installParameters, myConfig, myTaget);
\r
256 will(returnValue(bpPostInstall1));
\r
257 oneOf(factory).createInstall(context, installParameters, myConfig2, myTaget);
\r
258 will(returnValue(bpPostInstall2));
\r
260 oneOf(update).pushBuildProcess(bpUpdate1);
\r
261 oneOf(update).pushBuildProcess(bpUpdate2);
\r
262 oneOf(install).pushBuildProcess(bpInstall1);
\r
263 oneOf(install).pushBuildProcess(bpInstall2);
\r
264 oneOf(postUpdate).pushBuildProcess(bpPostInstall1);
\r
265 oneOf(postUpdate).pushBuildProcess(bpPostInstall2);
\r
268 builderUpdate.onSolutionFileFound(mySln, myTaget);
\r
269 builderUpdate.onPackagesConfigFound(myConfig, myTaget);
\r
270 builderUpdate.onPackagesConfigFound(myConfig2, myTaget);
\r