import jetbrains.buildServer.nuget.agent.parameters.NuGetParameters;\r
import jetbrains.buildServer.nuget.agent.parameters.PackagesParametersFactory;\r
import jetbrains.buildServer.nuget.agent.parameters.PackagesInstallParameters;\r
+import jetbrains.buildServer.nuget.agent.parameters.PackagesUpdateParameters;\r
import jetbrains.buildServer.nuget.agent.util.DelegatingBuildProcess;\r
import jetbrains.buildServer.nuget.agent.util.impl.CompositeBuildProcessImpl;\r
import jetbrains.buildServer.nuget.common.DotNetConstants;\r
import jetbrains.buildServer.nuget.common.PackagesConstants;\r
import jetbrains.buildServer.util.FileUtil;\r
import org.jetbrains.annotations.NotNull;\r
+import org.jetbrains.annotations.Nullable;\r
\r
import java.io.File;\r
\r
final CompositeBuildProcessImpl process = new CompositeBuildProcessImpl();\r
final NuGetParameters parameters = myParametersFactory.loadNuGetParameters(context);\r
final PackagesInstallParameters installParameters = myParametersFactory.loadInstallPackagesParameters(context, parameters);\r
+ final PackagesUpdateParameters updateParameters = myParametersFactory.loadUpdatePackagesParameters(context, parameters);\r
\r
if (installParameters == null) {\r
throw new RunBuildException("NuGet install packages must be enabled");\r
final LocateNuGetConfigBuildProcess locate = new LocateNuGetConfigBuildProcess(\r
parameters,\r
context.getBuild().getBuildLogger(),\r
- createLocateCallback(context, process, installParameters)\r
+ createLocateCallback(context, process, installParameters, updateParameters)\r
);\r
process.pushBuildProcess(locate);\r
\r
@NotNull\r
private Callback createLocateCallback(@NotNull final BuildRunnerContext context,\r
@NotNull final CompositeBuildProcessImpl process,\r
- @NotNull final PackagesInstallParameters parameters) {\r
+ @NotNull final PackagesInstallParameters installParameters,\r
+ @Nullable final PackagesUpdateParameters updateParameters) {\r
return new Callback() {\r
public void onPackagesConfigFound(@NotNull final File config,\r
@NotNull final File targetFolder) {\r
\r
@NotNull\r
public BuildProcess startImpl() throws RunBuildException {\r
+ if (updateParameters != null) {\r
+ process.pushBuildProcess(\r
+ createUpdateCallback(context, updateParameters, config, targetFolder));\r
+ }\r
+\r
String pathToLog = FileUtil.getRelativePath(context.getBuild().getCheckoutDirectory(), config);\r
if (pathToLog == null) pathToLog = config.getPath();\r
logger.activityStarted("install", "Installing NuGet packages for " + pathToLog, "nuget");\r
\r
+\r
return myInstallActionFactory.createInstall(context,\r
- parameters,\r
+ installParameters,\r
config,\r
targetFolder)\r
;\r
};\r
}\r
\r
+ @NotNull\r
+ private BuildProcess createUpdateCallback(@NotNull final BuildRunnerContext context,\r
+ @NotNull final PackagesUpdateParameters parameters,\r
+ @NotNull final File config,\r
+ @NotNull final File targetFolder) {\r
+ return\r
+ new DelegatingBuildProcess(\r
+ new DelegatingBuildProcess.Action() {\r
+ private final BuildProgressLogger logger = context.getBuild().getBuildLogger();\r
+\r
+ @NotNull\r
+ public BuildProcess startImpl() throws RunBuildException {\r
+ String pathToLog = FileUtil.getRelativePath(context.getBuild().getCheckoutDirectory(), config);\r
+ if (pathToLog == null) pathToLog = config.getPath();\r
+ logger.activityStarted("update", "Updating NuGet packages for " + pathToLog, "nuget");\r
+\r
+ return myInstallActionFactory.createUpdate(context,\r
+ parameters,\r
+ config,\r
+ targetFolder)\r
+ ;\r
+ }\r
+\r
+ public void finishedImpl() {\r
+ logger.activityFinished("update", "nuget");\r
+ }\r
+ }\r
+ );\r
+ }\r
+\r
@NotNull\r
public AgentBuildRunnerInfo getRunnerInfo() {\r
return this;\r
oneOf(myProcessFactory).executeCommandLine(\r
ctx,\r
nuget,\r
- Arrays.asList("update", myConfig.getPath(), "-RepositoryPath", myTarget.getPath()),\r
+ Arrays.asList("update", myConfig.getPath(), "-Verbose", "-RepositoryPath", myTarget.getPath()),\r
myConfig.getParentFile()\r
);\r
}});\r
oneOf(myProcessFactory).executeCommandLine(\r
ctx,\r
nuget,\r
- Arrays.asList("update", myConfig.getPath(), "-RepositoryPath", myTarget.getPath(), "-Id", "aaa", "-Id", "bbb"),\r
+ Arrays.asList("update", myConfig.getPath(), "-Verbose", "-RepositoryPath", myTarget.getPath(), "-Id", "aaa", "-Id", "bbb"),\r
myConfig.getParentFile()\r
);\r
}});\r
oneOf(myProcessFactory).executeCommandLine(\r
ctx,\r
nuget,\r
- Arrays.asList("update", myConfig.getPath(), "-Safe", "-RepositoryPath", myTarget.getPath()),\r
+ Arrays.asList("update", myConfig.getPath(), "-Safe", "-Verbose", "-RepositoryPath", myTarget.getPath()),\r
myConfig.getParentFile()\r
);\r
}});\r
oneOf(myProcessFactory).executeCommandLine(\r
ctx,\r
nuget,\r
- Arrays.asList("update", myConfig.getPath(), "-RepositoryPath", myTarget.getPath(), "-Source", "aaa", "-Source", "bbb"),\r
+ Arrays.asList("update", myConfig.getPath(), "-Verbose", "-RepositoryPath", myTarget.getPath(), "-Source", "aaa", "-Source", "bbb"),\r
myConfig.getParentFile()\r
);\r
}});\r
import jetbrains.buildServer.nuget.agent.parameters.PackagesInstallParameters;\r
import jetbrains.buildServer.nuget.agent.install.PackagesInstallerRunner;\r
import jetbrains.buildServer.nuget.agent.install.impl.NuGetActionFactoryImpl;\r
+import jetbrains.buildServer.nuget.agent.parameters.PackagesUpdateParameters;\r
import jetbrains.buildServer.nuget.agent.util.BuildProcessBase;\r
import jetbrains.buildServer.nuget.agent.util.CommandlineBuildProcessFactory;\r
import jetbrains.buildServer.nuget.tests.util.BuildProcessTestCase;\r
private BuildRunnerContext myContext;\r
private BuildProgressLogger myLogger;\r
private PackagesParametersFactory myParametersFactory;\r
- private PackagesInstallParameters myParameters;\r
+ private PackagesInstallParameters myInstall;\r
+ private PackagesUpdateParameters myUpdate;\r
private NuGetParameters myNuGet;\r
private BuildProcess myMockProcess;\r
\r
myContext = m.mock(BuildRunnerContext.class);\r
myLogger = m.mock(BuildProgressLogger.class);\r
myParametersFactory = m.mock(PackagesParametersFactory.class);\r
- myParameters = m.mock(PackagesInstallParameters.class);\r
+ myInstall = m.mock(PackagesInstallParameters.class);\r
+ myUpdate = m.mock(PackagesUpdateParameters.class);\r
myMockProcess = m.mock(BuildProcess.class);\r
myNuGet = m.mock(NuGetParameters.class);\r
\r
allowing(myLogger).activityStarted(with(equal("install")), with(any(String.class)), with(any(String.class)));\r
allowing(myLogger).activityFinished(with(equal("install")), with(any(String.class)));\r
\r
- allowing(myParameters).getNuGetParameters(); will(returnValue(myNuGet));\r
+ allowing(myInstall).getNuGetParameters(); will(returnValue(myNuGet));\r
+ allowing(myUpdate).getNuGetParameters(); will(returnValue(myNuGet));\r
}});\r
}\r
\r
public void test_01_online_sources() throws RunBuildException {\r
ArchiveUtil.unpackZip(getTestDataPath("test-01.zip"), "", myRoot);\r
\r
- fetchPackages(new File(myRoot, "sln1-lib.sln"), Collections.<String>emptyList(), false);\r
+ fetchPackages(new File(myRoot, "sln1-lib.sln"), Collections.<String>emptyList(), false, false);\r
+\r
+ List<File> packageses = Arrays.asList(new File(myRoot, "packages").listFiles());\r
+ System.out.println("installed packageses = " + packageses);\r
+\r
+ Assert.assertTrue(new File(myRoot, "packages/NUnit.2.5.7.10213").isDirectory());\r
+ Assert.assertTrue(new File(myRoot, "packages/NInject.2.2.1.4").isDirectory());\r
+ Assert.assertTrue(new File(myRoot, "packages/Machine.Specifications.0.4.13.0").isDirectory());\r
+ Assert.assertEquals(4, packageses.size());\r
+ }\r
+\r
+ @Test\r
+ public void test_01_online_sources_update() throws RunBuildException {\r
+ ArchiveUtil.unpackZip(getTestDataPath("test-01.zip"), "", myRoot);\r
+\r
+ m.checking(new Expectations(){{\r
+ allowing(myLogger).activityStarted(with(equal("update")), with(any(String.class)), with(equal("nuget")));\r
+ allowing(myLogger).activityFinished(with(equal("update")), with(equal("nuget")));\r
+\r
+ allowing(myUpdate).getUseSafeUpdate(); will(returnValue(false));\r
+ allowing(myUpdate).getPackagesToUpdate(); will(returnValue(Collections.<String>emptyList()));\r
+ }});\r
+\r
+ fetchPackages(new File(myRoot, "sln1-lib.sln"), Collections.<String>emptyList(), false, true);\r
+\r
+\r
+ List<File> packageses = Arrays.asList(new File(myRoot, "packages").listFiles());\r
+ System.out.println("installed packageses = " + packageses);\r
+\r
+ Assert.assertTrue(new File(myRoot, "packages/NUnit.2.5.7.10213").isDirectory());\r
+ Assert.assertTrue(new File(myRoot, "packages/NInject.2.2.1.4").isDirectory());\r
+ Assert.assertTrue(new File(myRoot, "packages/Machine.Specifications.0.4.13.0").isDirectory());\r
+ Assert.assertEquals(4, packageses.size());\r
+ }\r
+\r
+ @Test\r
+ public void test_01_online_sources_update_safe() throws RunBuildException {\r
+ ArchiveUtil.unpackZip(getTestDataPath("test-01.zip"), "", myRoot);\r
+\r
+ m.checking(new Expectations(){{\r
+ allowing(myLogger).activityStarted(with(equal("update")), with(any(String.class)), with(equal("nuget")));\r
+ allowing(myLogger).activityFinished(with(equal("update")), with(equal("nuget")));\r
+\r
+ allowing(myUpdate).getUseSafeUpdate(); will(returnValue(true));\r
+ allowing(myUpdate).getPackagesToUpdate(); will(returnValue(Collections.<String>emptyList()));\r
+ }});\r
+\r
+ fetchPackages(new File(myRoot, "sln1-lib.sln"), Collections.<String>emptyList(), false, true);\r
+\r
\r
List<File> packageses = Arrays.asList(new File(myRoot, "packages").listFiles());\r
System.out.println("installed packageses = " + packageses);\r
public void test_01_online_sources_ecludeVersion() throws RunBuildException {\r
ArchiveUtil.unpackZip(getTestDataPath("test-01.zip"), "", myRoot);\r
\r
- fetchPackages(new File(myRoot, "sln1-lib.sln"), Collections.<String>emptyList(), true);\r
+ fetchPackages(new File(myRoot, "sln1-lib.sln"), Collections.<String>emptyList(), true, false);\r
\r
List<File> packageses = Arrays.asList(new File(myRoot, "packages").listFiles());\r
System.out.println("installed packageses = " + packageses);\r
File sourcesDir = new File(myRoot, "js");\r
ArchiveUtil.unpackZip(getTestDataPath("test-01-sources.zip"), "", sourcesDir);\r
\r
- fetchPackages(new File(myRoot, "sln1-lib.sln"), Arrays.asList("file:///" + sourcesDir.getPath()), false);\r
+ fetchPackages(new File(myRoot, "sln1-lib.sln"), Arrays.asList("file:///" + sourcesDir.getPath()), false, false);\r
\r
List<File> packageses = Arrays.asList(new File(myRoot, "packages").listFiles());\r
System.out.println("installed packageses = " + packageses);\r
Assert.assertEquals(4, packageses.size());\r
}\r
\r
- private void fetchPackages(final File sln, final List<String> sources, final boolean excludeVersion) throws RunBuildException {\r
+ private void fetchPackages(final File sln,\r
+ final List<String> sources,\r
+ final boolean excludeVersion,\r
+ final boolean update) throws RunBuildException {\r
m.checking(new Expectations() {{\r
allowing(myParametersFactory).loadNuGetParameters(myContext); will(returnValue(myNuGet));\r
- allowing(myParametersFactory).loadInstallPackagesParameters(myContext, myNuGet); will(returnValue(myParameters));\r
+ allowing(myParametersFactory).loadInstallPackagesParameters(myContext, myNuGet); will(returnValue(myInstall));\r
\r
allowing(myNuGet).getNuGetExeFile(); will(returnValue(getPathToNuGet()));\r
allowing(myNuGet).getSolutionFile(); will(returnValue(sln));\r
allowing(myNuGet).getNuGetPackageSources(); will(returnValue(sources));\r
- allowing(myParameters).getExcludeVersion(); will(returnValue(excludeVersion));\r
+ allowing(myInstall).getExcludeVersion(); will(returnValue(excludeVersion));\r
+ allowing(myParametersFactory).loadUpdatePackagesParameters(myContext, myNuGet); will(returnValue(update ? myUpdate : null));\r
}});\r
\r
BuildProcess proc = new PackagesInstallerRunner(\r