91aed588c78bcf7c09a3199796cfd7e31af40a2d
[teamcity/dotNetPackagesSupport.git] / nuget-tests / src / jetbrains / buildServer / nuget / tests / agent / LocateNuGetConfigBuildProcessTest.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.BuildFinishedStatus;\r
21 import jetbrains.buildServer.agent.BuildProgressLogger;\r
22 import jetbrains.buildServer.nuget.agent.install.LocateNuGetConfigBuildProcess;\r
23 import jetbrains.buildServer.nuget.agent.parameters.NuGetParameters;\r
24 import jetbrains.buildServer.nuget.tests.util.BuildProcessTestCase;\r
25 import jetbrains.buildServer.util.FileUtil;\r
26 import org.jmock.Expectations;\r
27 import org.jmock.Mockery;\r
28 import org.testng.annotations.BeforeMethod;\r
29 import org.testng.annotations.Test;\r
30 \r
31 import java.io.File;\r
32 \r
33 /**\r
34  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
35  * Date: 07.07.11 20:49\r
36  */\r
37 public class LocateNuGetConfigBuildProcessTest extends BuildProcessTestCase {\r
38   private File myRoot;\r
39   private Mockery m;\r
40   private BuildProgressLogger log;\r
41   private NuGetParameters ps;\r
42   private LocateNuGetConfigBuildProcess.Callback cb;\r
43   private LocateNuGetConfigBuildProcess proc;\r
44 \r
45   @BeforeMethod\r
46   @Override\r
47   protected void setUp() throws Exception {\r
48     super.setUp();\r
49     myRoot = createTempDir();\r
50     m = new Mockery();\r
51     log = m.mock(BuildProgressLogger.class);\r
52     ps = m.mock(NuGetParameters.class);\r
53     cb = m.mock(LocateNuGetConfigBuildProcess.Callback.class);\r
54     proc = new LocateNuGetConfigBuildProcess(ps, log, cb);\r
55   }\r
56 \r
57   @Test\r
58   public void test_no_solutionFile() throws RunBuildException {\r
59     m.checking(new Expectations() {{\r
60       allowing(ps).getSolutionFile();\r
61       will(returnValue(new File(myRoot, "foo.sln")));\r
62     }});\r
63 \r
64     assertRunException(proc, "Failed to find");\r
65     m.assertIsSatisfied();\r
66   }\r
67 \r
68   @Test\r
69   public void test_only_solutionFile() throws RunBuildException {\r
70     final File sln = new File(myRoot, "foo.sln");\r
71 \r
72     FileUtil.writeFile(sln, "Fake solution file");\r
73     m.checking(new Expectations() {{\r
74       allowing(ps).getSolutionFile();\r
75       will(returnValue(sln));\r
76     }});\r
77 \r
78     assertRunException(proc, "Failed to find repositories.config");\r
79     m.assertIsSatisfied();\r
80   }\r
81 \r
82   @Test\r
83   public void test_solutionFile_packages_empty() throws RunBuildException {\r
84     final File sln = new File(myRoot, "foo.sln");\r
85     final File packages = new File(sln, "../packages");\r
86     packages.mkdirs();\r
87 \r
88     FileUtil.writeFile(sln, "Fake solution file");\r
89     m.checking(new Expectations() {{\r
90       allowing(ps).getSolutionFile();\r
91       will(returnValue(sln));\r
92     }});\r
93 \r
94     assertRunException(proc, "Failed to find repositories.config");\r
95     m.assertIsSatisfied();\r
96   }\r
97 \r
98   @Test\r
99   public void test_solutionFile_repositories_config_empty() throws RunBuildException {\r
100     final File sln = new File(myRoot, "foo.sln");\r
101     final File packages = new File(sln.getParentFile(), "packages");\r
102     packages.mkdirs();\r
103     final File repositories = new File(packages, "repositories.config");\r
104 \r
105     FileUtil.writeFile(repositories, "<foo />");\r
106 \r
107     FileUtil.writeFile(sln, "Fake solution file");\r
108     m.checking(new Expectations() {{\r
109       allowing(ps).getSolutionFile();\r
110       will(returnValue(sln));\r
111 \r
112       allowing(log).message(with(new StartsWithMatcher("Found packages folder: ")));\r
113       allowing(log).message(with(new StartsWithMatcher("Found list of packages.config files: ")));\r
114       allowing(log).warning(with(new StartsWithMatcher("No packages.config files were found under solution.")));\r
115     }});\r
116 \r
117     assertRunSuccessfully(proc, BuildFinishedStatus.FINISHED_SUCCESS);\r
118     m.assertIsSatisfied();\r
119   }\r
120   @Test\r
121   public void test_solutionFile_repositories_config_empty2() throws RunBuildException {\r
122     final File sln = new File(myRoot, "foo.sln");\r
123     final File packages = new File(sln.getParentFile(), "packages");\r
124     packages.mkdirs();\r
125     final File repositories = new File(packages, "repositories.config");\r
126 \r
127     FileUtil.writeFile(repositories, "<foo /");\r
128 \r
129     FileUtil.writeFile(sln, "Fake solution file");\r
130     m.checking(new Expectations() {{\r
131       allowing(ps).getSolutionFile();\r
132       will(returnValue(sln));\r
133 \r
134       allowing(log).message(with(new StartsWithMatcher("Found packages folder: ")));\r
135       allowing(log).message(with(new StartsWithMatcher("Found list of packages.config files: ")));\r
136       allowing(log).warning(with(new StartsWithMatcher("No packages.config files were found under solution.")));\r
137     }});\r
138 \r
139     assertRunException(proc, "Failed to parse repositories.config at ");\r
140     m.assertIsSatisfied();\r
141   }\r
142 \r
143   @Test\r
144   public void test_solutionFile_repositories_config_no_packages_config() throws RunBuildException {\r
145     final File sln = new File(myRoot, "foo.sln");\r
146     final File packages = new File(sln.getParentFile(), "packages");\r
147     packages.mkdirs();\r
148     final File repositories = new File(packages, "repositories.config");\r
149 \r
150     FileUtil.writeFile(repositories,\r
151             "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +\r
152             "<repositories>\n" +\r
153             "  <repository path=\"..\\Mvc\\packages.config\" />\n" +\r
154             "  <repository path=\"c:\\Mvc2\\packages.config\" />\n" +\r
155             "</repositories>");\r
156 \r
157     FileUtil.writeFile(sln, "Fake solution file");\r
158     m.checking(new Expectations() {{\r
159       allowing(ps).getSolutionFile();\r
160       will(returnValue(sln));\r
161 \r
162       oneOf(cb).onPackagesConfigFound(new File(myRoot, "Mvc/packages.config"), packages);\r
163       oneOf(cb).onPackagesConfigFound(new File("c:\\Mvc2/packages.config"), packages);\r
164 \r
165       allowing(log).message(with(new StartsWithMatcher("Found packages folder: ")));\r
166       allowing(log).message(with(new StartsWithMatcher("Found list of packages.config files: ")));\r
167       allowing(log).warning(with(new StartsWithMatcher("No packages.config files were found under solution.")));\r
168     }});\r
169 \r
170     assertRunSuccessfully(proc, BuildFinishedStatus.FINISHED_SUCCESS);\r
171     m.assertIsSatisfied();\r
172   }\r
173 \r
174 }\r