extract interfaces, more tests
authorEugene Petrenko <eugene.petrenko@gmail.com>
Mon, 15 Aug 2011 22:18:46 +0000 (02:18 +0400)
committerEugene Petrenko <eugene.petrenko@gmail.com>
Mon, 15 Aug 2011 22:18:46 +0000 (02:18 +0400)
nuget-server/src/META-INF/build-server-plugin-nuget-tools.xml
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/AvailableToolsState.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/AvailableToolsStateImpl.java [new file with mode: 0644]
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/InstallLogger.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/NuGetToolsInstaller.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/ToolPaths.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/ToolPathsImpl.java [new file with mode: 0644]
nuget-tests/src/jetbrains/buildServer/nuget/tests/server/tools/NuGetToolsInstallerTest.java [new file with mode: 0644]
nuget-tests/src/testng-nuget-fast.xml

index cb6746aa94de500a3b98eae8d3f9a482d95da27c..990310cca576a4d74ae3ffb541829cb182255ffd 100644 (file)
@@ -8,11 +8,11 @@
   <bean class="jetbrains.buildServer.nuget.server.toolRegistry.tab.InstalledToolsController"/>\r
   <bean class="jetbrains.buildServer.nuget.server.toolRegistry.tab.InstallToolController"/>\r
 \r
-  <bean class="jetbrains.buildServer.nuget.server.toolRegistry.impl.AvailableToolsState"/>\r
+  <bean class="jetbrains.buildServer.nuget.server.toolRegistry.impl.AvailableToolsStateImpl"/>\r
   <bean class="jetbrains.buildServer.nuget.server.toolRegistry.impl.NuGetToolManagerImpl"/>\r
   <bean class="jetbrains.buildServer.nuget.server.toolRegistry.impl.NuGetToolsInstaller"/>\r
   <bean class="jetbrains.buildServer.nuget.server.toolRegistry.impl.ToolsRegistry"/>\r
   <bean class="jetbrains.buildServer.nuget.server.toolRegistry.impl.ToolPacker"/>\r
-  <bean class="jetbrains.buildServer.nuget.server.toolRegistry.impl.ToolPaths"/>\r
+  <bean class="jetbrains.buildServer.nuget.server.toolRegistry.impl.ToolPathsImpl"/>\r
   <bean class="jetbrains.buildServer.nuget.server.toolRegistry.impl.PluginNaming"/>\r
 </beans>
\ No newline at end of file
index 4c6c07b90bb713acb621da367d0336093f87555a..1319e1f8e61ec7bde3a52e476bd68bf3d06c7fac 100644 (file)
-/*\r
- * Copyright 2000-2011 JetBrains s.r.o.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
 package jetbrains.buildServer.nuget.server.toolRegistry.impl;\r
 \r
-import jetbrains.buildServer.nuget.server.feed.reader.FeedConstants;\r
 import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
-import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader;\r
 import jetbrains.buildServer.nuget.server.toolRegistry.FetchException;\r
 import jetbrains.buildServer.nuget.server.toolRegistry.NuGetTool;\r
 import jetbrains.buildServer.nuget.server.toolRegistry.ToolsPolicy;\r
-import jetbrains.buildServer.util.CollectionsUtil;\r
-import jetbrains.buildServer.util.Converter;\r
-import jetbrains.buildServer.util.TimeService;\r
-import jetbrains.buildServer.util.filters.Filter;\r
 import org.jetbrains.annotations.NotNull;\r
 import org.jetbrains.annotations.Nullable;\r
 \r
-import java.io.IOException;\r
 import java.util.Collection;\r
 \r
 /**\r
  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
- * Date: 15.08.11 16:33\r
+ * Date: 16.08.11 2:07\r
  */\r
-public class AvailableToolsState {\r
-  private static final long TIMEOUT = 1000 * 60 * 15; //15 min\r
-\r
-  private final NuGetFeedReader myReader;\r
-  private final TimeService myTime;\r
-  private Collection<InstallableTool> myTools;\r
-  private long lastRequest = 0;\r
-\r
-  public AvailableToolsState(@NotNull final NuGetFeedReader reader,\r
-                             @NotNull final TimeService time) {\r
-    myReader = reader;\r
-    myTime = time;\r
-  }\r
-\r
+public interface AvailableToolsState {\r
   @Nullable\r
-  public FeedPackage findTool(@NotNull final String id) {\r
-    final Collection<InstallableTool> tools = myTools;\r
-    if (tools != null) {\r
-      for (InstallableTool tool : tools) {\r
-        if(tool.getPackage().getAtomId().equals(id)) {\r
-          return tool.getPackage();\r
-        }\r
-      }\r
-    }\r
-    return null;\r
-  }\r
+  FeedPackage findTool(@NotNull String id);\r
 \r
   @NotNull\r
-  public Collection<? extends NuGetTool> getAvailable(ToolsPolicy policy) throws FetchException {\r
-    Collection<InstallableTool> nuGetTools = myTools;\r
-    if (policy == ToolsPolicy.FetchNew\r
-            || nuGetTools == null\r
-            || lastRequest + TIMEOUT < myTime.now()) {\r
-      myTools = null;\r
-      myTools = nuGetTools = fetchAvailable();\r
-      lastRequest = myTime.now();\r
-    }\r
-    return nuGetTools;\r
-  }\r
-\r
-  private Collection<InstallableTool> fetchAvailable() throws FetchException {\r
-    try {\r
-      final Collection<FeedPackage> packages = myReader.queryPackageVersions(FeedConstants.FEED_URL, FeedConstants.NUGET_COMMANDLINE);\r
-      return CollectionsUtil.filterAndConvertCollection(\r
-              packages,\r
-              new Converter<InstallableTool, FeedPackage>() {\r
-                public InstallableTool createFrom(@NotNull FeedPackage source) {\r
-                  return new InstallableTool(source);\r
-                }\r
-              },\r
-              new Filter<FeedPackage>() {\r
-                public boolean accept(@NotNull FeedPackage data) {\r
-                  final String[] version = data.getInfo().getVersion().split("\\.");\r
-                  if (version.length < 2) return false;\r
-                  int major = parse(version[0]);\r
-                  if (major < 1) return false;\r
-\r
-                  int minor = parse(version[1]);\r
-                  if (minor < 4) return false;\r
-\r
-                  return true;\r
-                }\r
-\r
-                private int parse(String s) {\r
-                  try {\r
-                    return Integer.parseInt(s.trim());\r
-                  } catch (Exception e) {\r
-                    return -1;\r
-                  }\r
-                }\r
-              }\r
-      );\r
-\r
-    } catch (IOException e) {\r
-      throw new FetchException(e.getMessage(), e);\r
-    }\r
-  }\r
-\r
-  private static class InstallableTool implements NuGetTool {\r
-    private final FeedPackage myPackage;\r
-\r
-    private InstallableTool(@NotNull final FeedPackage aPackage) {\r
-      myPackage = aPackage;\r
-    }\r
-\r
-    @NotNull\r
-    public String getId() {\r
-      return myPackage.getAtomId();\r
-    }\r
-\r
-    @NotNull\r
-    public String getVersion() {\r
-      return myPackage.getInfo().getVersion();\r
-    }\r
-\r
-    @NotNull\r
-    public FeedPackage getPackage() {\r
-      return myPackage;\r
-    }\r
-  }\r
-\r
+  Collection<? extends NuGetTool> getAvailable(ToolsPolicy policy) throws FetchException;\r
 }\r
diff --git a/nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/AvailableToolsStateImpl.java b/nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/AvailableToolsStateImpl.java
new file mode 100644 (file)
index 0000000..ec5b13c
--- /dev/null
@@ -0,0 +1,140 @@
+/*\r
+ * Copyright 2000-2011 JetBrains s.r.o.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package jetbrains.buildServer.nuget.server.toolRegistry.impl;\r
+\r
+import jetbrains.buildServer.nuget.server.feed.reader.FeedConstants;\r
+import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
+import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader;\r
+import jetbrains.buildServer.nuget.server.toolRegistry.FetchException;\r
+import jetbrains.buildServer.nuget.server.toolRegistry.NuGetTool;\r
+import jetbrains.buildServer.nuget.server.toolRegistry.ToolsPolicy;\r
+import jetbrains.buildServer.util.CollectionsUtil;\r
+import jetbrains.buildServer.util.Converter;\r
+import jetbrains.buildServer.util.TimeService;\r
+import jetbrains.buildServer.util.filters.Filter;\r
+import org.jetbrains.annotations.NotNull;\r
+import org.jetbrains.annotations.Nullable;\r
+\r
+import java.io.IOException;\r
+import java.util.Collection;\r
+\r
+/**\r
+ * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
+ * Date: 15.08.11 16:33\r
+ */\r
+public class AvailableToolsStateImpl implements AvailableToolsState {\r
+  private static final long TIMEOUT = 1000 * 60 * 15; //15 min\r
+\r
+  private final NuGetFeedReader myReader;\r
+  private final TimeService myTime;\r
+  private Collection<InstallableTool> myTools;\r
+  private long lastRequest = 0;\r
+\r
+  public AvailableToolsStateImpl(@NotNull final NuGetFeedReader reader,\r
+                                 @NotNull final TimeService time) {\r
+    myReader = reader;\r
+    myTime = time;\r
+  }\r
+\r
+  @Nullable\r
+  public FeedPackage findTool(@NotNull final String id) {\r
+    final Collection<InstallableTool> tools = myTools;\r
+    if (tools != null) {\r
+      for (InstallableTool tool : tools) {\r
+        if(tool.getPackage().getAtomId().equals(id)) {\r
+          return tool.getPackage();\r
+        }\r
+      }\r
+    }\r
+    return null;\r
+  }\r
+\r
+  @NotNull\r
+  public Collection<? extends NuGetTool> getAvailable(ToolsPolicy policy) throws FetchException {\r
+    Collection<InstallableTool> nuGetTools = myTools;\r
+    if (policy == ToolsPolicy.FetchNew\r
+            || nuGetTools == null\r
+            || lastRequest + TIMEOUT < myTime.now()) {\r
+      myTools = null;\r
+      myTools = nuGetTools = fetchAvailable();\r
+      lastRequest = myTime.now();\r
+    }\r
+    return nuGetTools;\r
+  }\r
+\r
+  private Collection<InstallableTool> fetchAvailable() throws FetchException {\r
+    try {\r
+      final Collection<FeedPackage> packages = myReader.queryPackageVersions(FeedConstants.FEED_URL, FeedConstants.NUGET_COMMANDLINE);\r
+      return CollectionsUtil.filterAndConvertCollection(\r
+              packages,\r
+              new Converter<InstallableTool, FeedPackage>() {\r
+                public InstallableTool createFrom(@NotNull FeedPackage source) {\r
+                  return new InstallableTool(source);\r
+                }\r
+              },\r
+              new Filter<FeedPackage>() {\r
+                public boolean accept(@NotNull FeedPackage data) {\r
+                  final String[] version = data.getInfo().getVersion().split("\\.");\r
+                  if (version.length < 2) return false;\r
+                  int major = parse(version[0]);\r
+                  if (major < 1) return false;\r
+\r
+                  int minor = parse(version[1]);\r
+                  if (minor < 4) return false;\r
+\r
+                  return true;\r
+                }\r
+\r
+                private int parse(String s) {\r
+                  try {\r
+                    return Integer.parseInt(s.trim());\r
+                  } catch (Exception e) {\r
+                    return -1;\r
+                  }\r
+                }\r
+              }\r
+      );\r
+\r
+    } catch (IOException e) {\r
+      throw new FetchException(e.getMessage(), e);\r
+    }\r
+  }\r
+\r
+  private static class InstallableTool implements NuGetTool {\r
+    private final FeedPackage myPackage;\r
+\r
+    private InstallableTool(@NotNull final FeedPackage aPackage) {\r
+      myPackage = aPackage;\r
+    }\r
+\r
+    @NotNull\r
+    public String getId() {\r
+      return myPackage.getAtomId();\r
+    }\r
+\r
+    @NotNull\r
+    public String getVersion() {\r
+      return myPackage.getInfo().getVersion();\r
+    }\r
+\r
+    @NotNull\r
+    public FeedPackage getPackage() {\r
+      return myPackage;\r
+    }\r
+  }\r
+\r
+}\r
index e45f85dcc00c11c3623e3cbc86d3dcf09ee5997a..57e045bf0ea2bf0f537289f134c3e95f0a003727 100644 (file)
@@ -49,11 +49,11 @@ public interface InstallLogger {
 \r
   void agentToolPackFinished(@NotNull FeedPackage tool);\r
 \r
-  void agentToolPubslishStarted(@NotNull FeedPackage tool, @NotNull File agentTool);\r
+  void agentToolPublishStarted(@NotNull FeedPackage tool, @NotNull File agentTool);\r
 \r
   void agentToolPublishFailed(@NotNull FeedPackage tool, @NotNull File agentTool, @NotNull Exception e);\r
 \r
-  void agentToolPuglishFinished(@NotNull FeedPackage tool, @NotNull File agentTool);\r
+  void agentToolPublishFinished(@NotNull FeedPackage tool, @NotNull File agentTool);\r
 \r
   void finished(@NotNull String packageId, @Nullable FeedPackage tool);\r
 }\r
index 28e695ca6687c9773682f549b7c6c2a2cbd297b4..2d244bce5210296cc944b79d403a17fb600a081e 100644 (file)
@@ -77,7 +77,7 @@ public class NuGetToolsInstaller {
 \r
   @NotNull\r
   private File registerAgentPlugins(InstallLogger logger, FeedPackage tool, File agentTool) {\r
-    logger.agentToolPubslishStarted(tool, agentTool);\r
+    logger.agentToolPublishStarted(tool, agentTool);\r
 \r
     try {\r
       final File dest = myNaming.getAgetToolFilePath(tool);\r
@@ -90,7 +90,7 @@ public class NuGetToolsInstaller {
       logger.agentToolPublishFailed(tool, agentTool, e);\r
       throw new ProcessedException();\r
     } finally {\r
-      logger.agentToolPuglishFinished(tool, agentTool);\r
+      logger.agentToolPublishFinished(tool, agentTool);\r
     }\r
   }\r
 \r
index 2d2298b324b2bc9c581bc4f567b387208f2e71db..aa85ebf2147cf49afa8e0b5b59c334363e8ece4c 100644 (file)
@@ -1,48 +1,16 @@
-/*\r
- * Copyright 2000-2011 JetBrains s.r.o.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
 package jetbrains.buildServer.nuget.server.toolRegistry.impl;\r
 \r
-import jetbrains.buildServer.plugins.bean.PluginInfo;\r
-import jetbrains.buildServer.web.openapi.PluginDescriptor;\r
 import org.jetbrains.annotations.NotNull;\r
 \r
 import java.io.File;\r
 \r
 /**\r
  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
- * Date: 15.08.11 20:47\r
+ * Date: 16.08.11 2:00\r
  */\r
-public class ToolPaths {\r
-  private final File myPluginRoot;\r
-\r
-  public ToolPaths(@NotNull final PluginDescriptor paths) {\r
-    myPluginRoot = ((PluginInfo)paths).getPluginRoot();\r
-  }\r
-\r
+public interface ToolPaths {\r
   @NotNull\r
-  public File getTools() {\r
-    final File file = new File(myPluginRoot, "tools");\r
-    file.mkdirs();\r
-    return file;\r
-  }\r
+  File getTools();\r
 \r
-  public File getAgentPluginsPath() {\r
-    final File file = new File(myPluginRoot, "agent");\r
-    file.mkdirs();\r
-    return file;\r
-  }\r
+  File getAgentPluginsPath();\r
 }\r
diff --git a/nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/ToolPathsImpl.java b/nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/ToolPathsImpl.java
new file mode 100644 (file)
index 0000000..b578807
--- /dev/null
@@ -0,0 +1,48 @@
+/*\r
+ * Copyright 2000-2011 JetBrains s.r.o.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package jetbrains.buildServer.nuget.server.toolRegistry.impl;\r
+\r
+import jetbrains.buildServer.plugins.bean.PluginInfo;\r
+import jetbrains.buildServer.web.openapi.PluginDescriptor;\r
+import org.jetbrains.annotations.NotNull;\r
+\r
+import java.io.File;\r
+\r
+/**\r
+ * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
+ * Date: 15.08.11 20:47\r
+ */\r
+public class ToolPathsImpl implements ToolPaths {\r
+  private final File myPluginRoot;\r
+\r
+  public ToolPathsImpl(@NotNull final PluginDescriptor paths) {\r
+    myPluginRoot = ((PluginInfo)paths).getPluginRoot();\r
+  }\r
+\r
+  @NotNull\r
+  public File getTools() {\r
+    final File file = new File(myPluginRoot, "tools");\r
+    file.mkdirs();\r
+    return file;\r
+  }\r
+\r
+  public File getAgentPluginsPath() {\r
+    final File file = new File(myPluginRoot, "agent");\r
+    file.mkdirs();\r
+    return file;\r
+  }\r
+}\r
diff --git a/nuget-tests/src/jetbrains/buildServer/nuget/tests/server/tools/NuGetToolsInstallerTest.java b/nuget-tests/src/jetbrains/buildServer/nuget/tests/server/tools/NuGetToolsInstallerTest.java
new file mode 100644 (file)
index 0000000..f0e0b3e
--- /dev/null
@@ -0,0 +1,113 @@
+/*\r
+ * Copyright 2000-2011 JetBrains s.r.o.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package jetbrains.buildServer.nuget.tests.server.tools;\r
+\r
+import jetbrains.buildServer.BaseTestCase;\r
+import jetbrains.buildServer.nuget.common.PackageInfo;\r
+import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
+import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader;\r
+import jetbrains.buildServer.nuget.server.toolRegistry.impl.*;\r
+import org.jmock.Expectations;\r
+import org.jmock.Mockery;\r
+import org.testng.annotations.BeforeMethod;\r
+import org.testng.annotations.Test;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+\r
+/**\r
+ * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
+ * Date: 16.08.11 1:59\r
+ */\r
+public class NuGetToolsInstallerTest extends BaseTestCase {\r
+  private NuGetToolsInstaller myInstaller;\r
+  private File myToolsPath;\r
+  private File myPluginsPath;\r
+  private ToolPaths myPaths;\r
+  private NuGetFeedReader myFeed;\r
+  private InstallLogger myLogger;\r
+  private AvailableToolsState myState;\r
+  private Mockery m;\r
+\r
+  @BeforeMethod\r
+  @Override\r
+  protected void setUp() throws Exception {\r
+    super.setUp();\r
+\r
+    m = new Mockery();\r
+    myPaths = m.mock(ToolPaths.class);\r
+    myFeed = m.mock(NuGetFeedReader.class);\r
+    myLogger = m.mock(InstallLogger.class);\r
+    myState = m.mock(AvailableToolsState.class);\r
+\r
+    myInstaller = new NuGetToolsInstaller(\r
+            myPaths,\r
+            myFeed,\r
+            myState,\r
+            new ToolPacker(),\r
+            new PluginNaming(myPaths)\r
+    );\r
+\r
+    m.checking(new Expectations(){{\r
+      allowing(myPaths).getTools(); will(returnValue(myToolsPath));\r
+      allowing(myPaths).getAgentPluginsPath(); will(returnValue(myPluginsPath));\r
+    }});\r
+  }\r
+\r
+  @Test\r
+  public void test_noPackageFound() {\r
+    m.checking(new Expectations() {{\r
+      oneOf(myState).findTool("pkd"); will(returnValue(null));\r
+      oneOf(myLogger).started("pkd");\r
+      oneOf(myLogger).packageNotFound("pkd");\r
+      oneOf(myLogger).finished(with(equal("pkd")), with(any(FeedPackage.class)));\r
+    }});\r
+    myInstaller.installNuGet("pkd", myLogger);\r
+\r
+    m.assertIsSatisfied();\r
+  }\r
+\r
+  @Test\r
+  public void test_packageFound() throws IOException {\r
+    final FeedPackage pkd = feedPackage();\r
+    m.checking(new Expectations() {{\r
+      oneOf(myState).findTool("pkd");  will(returnValue(pkd));\r
+      oneOf(myFeed).downloadPackage(with(equal(pkd)), with(any(File.class)));\r
+\r
+      oneOf(myLogger).started("pkd");\r
+      oneOf(myLogger).packageDownloadStarted(pkd);\r
+      oneOf(myLogger).packageDownloadFinished(with(equal(pkd)), with(any(File.class)));\r
+      oneOf(myLogger).packageUnpackStarted(with(equal(pkd)), with(any(File.class)));\r
+      oneOf(myLogger).packageUnpackFinished(with(equal(pkd)), with(any(File.class)), with(any(File.class)));\r
+\r
+      oneOf(myLogger).agentToolPublishStarted(with(equal(pkd)), with(any(File.class)));\r
+      oneOf(myLogger).agentToolPublishFinished(with(equal(pkd)), with(any(File.class)));\r
+\r
+      oneOf(myLogger).agentToolPackStarted(with(equal(pkd)), with(any(File.class)));\r
+      oneOf(myLogger).agentToolPackFinished(with(equal(pkd)));\r
+\r
+      oneOf(myLogger).finished(with(equal("pkd")), with(pkd));\r
+    }});\r
+    myInstaller.installNuGet("pkd", myLogger);\r
+\r
+    m.assertIsSatisfied();\r
+  }\r
+\r
+  private FeedPackage feedPackage() {\r
+    return new FeedPackage("atomId", new PackageInfo("pkd", "1.2.3.4"), false, "", "download-url");\r
+  }\r
+}\r
index d915c12afe8c977c9e5ebfdb127e12b7563c45e4..22db85a9833e210800c867fca2ebf153b561a6d2 100644 (file)
@@ -30,6 +30,7 @@
       <class name="jetbrains.buildServer.nuget.tests.server.feed.reader.FeedGetMethodFactoryTest"/>\r
 \r
       <class name="jetbrains.buildServer.nuget.tests.server.tools.ToolPackerTest"/>\r
+      <class name="jetbrains.buildServer.nuget.tests.server.tools.NuGetToolsInstallerTest"/>\r
     </classes>\r
   </test>\r
 </suite>\r