From d70990b31897a4bf5a4f72b5adb0f5ade76ad98b Mon Sep 17 00:00:00 2001 From: "Eugene.Petrenko" Date: Sat, 9 Jul 2011 16:35:34 +0400 Subject: [PATCH] support -ExcludeVersion nuget parameter --- .../install/PackagesInstallParameters.java | 7 ++++++ .../NuGetInstallPackageActionFactoryImpl.java | 3 +++ .../PackageInstallParametersFactoryImpl.java | 13 +++++++---- .../common/PackagesInstallerConstants.java | 1 + .../resources/install/editInstallPackage.jsp | 23 +++++++++++++------ .../resources/install/viewInstallPackage.jsp | 4 ++++ .../nuget/server/install/InstallBean.java | 1 + .../NuGetInstallPackageActionFactoryTest.java | 22 ++++++++++++++++++ .../InstallPackageIntegtatoinTest.java | 23 ++++++++++++++++--- 9 files changed, 83 insertions(+), 14 deletions(-) diff --git a/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/PackagesInstallParameters.java b/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/PackagesInstallParameters.java index 4e424ba..11f1289 100644 --- a/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/PackagesInstallParameters.java +++ b/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/PackagesInstallParameters.java @@ -47,4 +47,11 @@ public interface PackagesInstallParameters { */ @NotNull Collection getNuGetPackageSources(); + + /** + * @return true if pacakges are expected to be installed + * without version + * numbers in directory names + */ + boolean getExcludeVersion(); } diff --git a/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/impl/NuGetInstallPackageActionFactoryImpl.java b/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/impl/NuGetInstallPackageActionFactoryImpl.java index 2f7185c..1eaa437 100644 --- a/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/impl/NuGetInstallPackageActionFactoryImpl.java +++ b/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/impl/NuGetInstallPackageActionFactoryImpl.java @@ -47,6 +47,9 @@ public class NuGetInstallPackageActionFactoryImpl implements NuGetInstallPackage final List argz = new ArrayList(); argz.add("install"); argz.add(FileUtil.getCanonicalFile(packagesConfig).getPath()); //path to package + if (params.getExcludeVersion()) { + argz.add("-ExcludeVersion"); + } argz.add("-OutputDirectory"); argz.add(FileUtil.getCanonicalFile(targetFolder).getPath()); diff --git a/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/impl/PackageInstallParametersFactoryImpl.java b/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/impl/PackageInstallParametersFactoryImpl.java index 58d60ed..79b324a 100644 --- a/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/impl/PackageInstallParametersFactoryImpl.java +++ b/nuget-agent/src/jetbrains/buildServer/nuget/agent/install/impl/PackageInstallParametersFactoryImpl.java @@ -20,7 +20,6 @@ import jetbrains.buildServer.RunBuildException; import jetbrains.buildServer.agent.BuildRunnerContext; import jetbrains.buildServer.nuget.agent.install.PackageInstallParametersFactory; import jetbrains.buildServer.nuget.agent.install.PackagesInstallParameters; -import jetbrains.buildServer.nuget.common.PackagesInstallerConstants; import jetbrains.buildServer.util.FileUtil; import jetbrains.buildServer.util.StringUtil; import org.jetbrains.annotations.NotNull; @@ -32,6 +31,8 @@ import java.util.Collection; import java.util.Collections; import java.util.List; +import static jetbrains.buildServer.nuget.common.PackagesInstallerConstants.*; + /** * Created by Eugene Petrenko (eugene.petrenko@gmail.com) * Date: 07.07.11 18:09 @@ -57,17 +58,17 @@ public class PackageInstallParametersFactoryImpl implements PackageInstallParame @NotNull public File getSolutionFile() throws RunBuildException { - return resolvePath(PackagesInstallerConstants.SLN_PATH, "Visual Studio .sln file"); + return resolvePath(SLN_PATH, "Visual Studio .sln file"); } @NotNull public File getNuGetExeFile() throws RunBuildException { - return resolvePath(PackagesInstallerConstants.NUGET_PATH, "nuget.exe"); + return resolvePath(NUGET_PATH, "nuget.exe"); } @NotNull public Collection getNuGetPackageSources() { - String sources = context.getRunnerParameters().get(PackagesInstallerConstants.NUGET_SOURCES); + String sources = context.getRunnerParameters().get(NUGET_SOURCES); if (sources == null) return Collections.emptyList(); List list = new ArrayList(); @@ -80,6 +81,10 @@ public class PackageInstallParametersFactoryImpl implements PackageInstallParame return Collections.unmodifiableList(list); } + + public boolean getExcludeVersion() { + return !StringUtil.isEmptyOrSpaces(context.getRunnerParameters().get(NUGET_EXCLUDE_VERSION)); + } }; } } diff --git a/nuget-common/src/jetbrains/buildServer/nuget/common/PackagesInstallerConstants.java b/nuget-common/src/jetbrains/buildServer/nuget/common/PackagesInstallerConstants.java index e686fca..f442f3e 100644 --- a/nuget-common/src/jetbrains/buildServer/nuget/common/PackagesInstallerConstants.java +++ b/nuget-common/src/jetbrains/buildServer/nuget/common/PackagesInstallerConstants.java @@ -26,5 +26,6 @@ public interface PackagesInstallerConstants { public static final String NUGET_PATH = "nuget.path"; public static final String NUGET_SOURCES = "nuget.sources"; + public static final String NUGET_EXCLUDE_VERSION = "nuget.excludeVersion"; public static final String SLN_PATH = "sln.path"; } diff --git a/nuget-server/resources/install/editInstallPackage.jsp b/nuget-server/resources/install/editInstallPackage.jsp index cb0c7b3..f7e547f 100644 --- a/nuget-server/resources/install/editInstallPackage.jsp +++ b/nuget-server/resources/install/editInstallPackage.jsp @@ -43,11 +43,20 @@ - - Path to solution file - - - Specify path to Visual Studio solution file (.sln) - - + + Path to solution file + + + Specify path to Visual Studio solution file (.sln) + + + + Options + + + Exclude version from package folder names + Makes NuGet exlude package version from package folders. Equivalent of -ExcludeVersion commandline argument + + + diff --git a/nuget-server/resources/install/viewInstallPackage.jsp b/nuget-server/resources/install/viewInstallPackage.jsp index 672d397..ce99f15 100644 --- a/nuget-server/resources/install/viewInstallPackage.jsp +++ b/nuget-server/resources/install/viewInstallPackage.jsp @@ -29,3 +29,7 @@
Path to .sln:
+ +
+ Exclude Version: +
diff --git a/nuget-server/src/jetbrains/buildServer/nuget/server/install/InstallBean.java b/nuget-server/src/jetbrains/buildServer/nuget/server/install/InstallBean.java index 59dd28f..b7388b8 100644 --- a/nuget-server/src/jetbrains/buildServer/nuget/server/install/InstallBean.java +++ b/nuget-server/src/jetbrains/buildServer/nuget/server/install/InstallBean.java @@ -26,4 +26,5 @@ public class InstallBean { public String getNuGetPathKey() { return PackagesInstallerConstants.NUGET_PATH; } public String getNuGetSourcesKey() { return PackagesInstallerConstants.NUGET_SOURCES; } public String getSolutionPathKey() { return PackagesInstallerConstants.SLN_PATH; } + public String getExcludeVersionKey() { return PackagesInstallerConstants.NUGET_EXCLUDE_VERSION;} } diff --git a/nuget-tests/src/jetbrains/buildServer/nuget/tests/agent/NuGetInstallPackageActionFactoryTest.java b/nuget-tests/src/jetbrains/buildServer/nuget/tests/agent/NuGetInstallPackageActionFactoryTest.java index b23b292..90d6ab9 100644 --- a/nuget-tests/src/jetbrains/buildServer/nuget/tests/agent/NuGetInstallPackageActionFactoryTest.java +++ b/nuget-tests/src/jetbrains/buildServer/nuget/tests/agent/NuGetInstallPackageActionFactoryTest.java @@ -65,6 +65,7 @@ public class NuGetInstallPackageActionFactoryTest extends BaseTestCase { m.checking(new Expectations(){{ allowing(ps).getNuGetPackageSources(); will(returnValue(Collections.emptyList())); allowing(ps).getNuGetExeFile(); will(returnValue(nuget)); + allowing(ps).getExcludeVersion(); will(returnValue(false)); oneOf(myProcessFactory).executeCommandLine( ctx, @@ -78,12 +79,33 @@ public class NuGetInstallPackageActionFactoryTest extends BaseTestCase { m.assertIsSatisfied(); } + @Test + public void test_no_sources_excludeVersion() throws RunBuildException, IOException { + final File nuget = createTempFile(); + m.checking(new Expectations(){{ + allowing(ps).getNuGetPackageSources(); will(returnValue(Collections.emptyList())); + allowing(ps).getNuGetExeFile(); will(returnValue(nuget)); + allowing(ps).getExcludeVersion(); will(returnValue(true)); + + oneOf(myProcessFactory).executeCommandLine( + ctx, + nuget, + Arrays.asList("install", myConfig.getPath(), "-ExcludeVersion", "-OutputDirectory", myTarget.getPath()), + myConfig.getParentFile() + ); + }}); + + i.createBuildProcess(ctx, ps, myConfig, myTarget); + m.assertIsSatisfied(); + } + @Test public void test_sources() throws RunBuildException, IOException { final File nuget = createTempFile(); m.checking(new Expectations(){{ allowing(ps).getNuGetPackageSources(); will(returnValue(Arrays.asList("aaa", "bbb"))); allowing(ps).getNuGetExeFile(); will(returnValue(nuget)); + allowing(ps).getExcludeVersion(); will(returnValue(false)); oneOf(myProcessFactory).executeCommandLine( ctx, diff --git a/nuget-tests/src/jetbrains/buildServer/nuget/tests/integration/InstallPackageIntegtatoinTest.java b/nuget-tests/src/jetbrains/buildServer/nuget/tests/integration/InstallPackageIntegtatoinTest.java index 9c09a3d..a5835b7 100644 --- a/nuget-tests/src/jetbrains/buildServer/nuget/tests/integration/InstallPackageIntegtatoinTest.java +++ b/nuget-tests/src/jetbrains/buildServer/nuget/tests/integration/InstallPackageIntegtatoinTest.java @@ -92,7 +92,7 @@ public class InstallPackageIntegtatoinTest extends BuildProcessTestCase { public void test_01_online_sources() throws RunBuildException { ArchiveUtil.unpackZip(getTestDataPath("test-01.zip"), "", myRoot); - fetchPackages(new File(myRoot, "sln1-lib.sln"), Collections.emptyList()); + fetchPackages(new File(myRoot, "sln1-lib.sln"), Collections.emptyList(), false); List packageses = Arrays.asList(new File(myRoot, "packages").listFiles()); System.out.println("installed packageses = " + packageses); @@ -103,13 +103,28 @@ public class InstallPackageIntegtatoinTest extends BuildProcessTestCase { Assert.assertEquals(4, packageses.size()); } + @Test + public void test_01_online_sources_ecludeVersion() throws RunBuildException { + ArchiveUtil.unpackZip(getTestDataPath("test-01.zip"), "", myRoot); + + fetchPackages(new File(myRoot, "sln1-lib.sln"), Collections.emptyList(), true); + + List packageses = Arrays.asList(new File(myRoot, "packages").listFiles()); + System.out.println("installed packageses = " + packageses); + + Assert.assertTrue(new File(myRoot, "packages/NUnit").isDirectory()); + Assert.assertTrue(new File(myRoot, "packages/NInject").isDirectory()); + Assert.assertTrue(new File(myRoot, "packages/Machine.Specifications").isDirectory()); + Assert.assertEquals(4, packageses.size()); + } + @Test(enabled = false, dependsOnGroups = "Need to understand how to check NuGet uses only specified sources") public void test_01_local_sources() throws RunBuildException { ArchiveUtil.unpackZip(getTestDataPath("test-01.zip"), "", myRoot); File sourcesDir = new File(myRoot, "js"); ArchiveUtil.unpackZip(getTestDataPath("test-01-sources.zip"), "", sourcesDir); - fetchPackages(new File(myRoot, "sln1-lib.sln"), Arrays.asList("file:///" + sourcesDir.getPath())); + fetchPackages(new File(myRoot, "sln1-lib.sln"), Arrays.asList("file:///" + sourcesDir.getPath()), false); List packageses = Arrays.asList(new File(myRoot, "packages").listFiles()); System.out.println("installed packageses = " + packageses); @@ -120,7 +135,7 @@ public class InstallPackageIntegtatoinTest extends BuildProcessTestCase { Assert.assertEquals(4, packageses.size()); } - private void fetchPackages(final File sln, final List sources) throws RunBuildException { + private void fetchPackages(final File sln, final List sources, final boolean excludeVersion) throws RunBuildException { m.checking(new Expectations() {{ allowing(myParametersFactory).loadParameters(myContext); will(returnValue(myParameters)); @@ -131,6 +146,8 @@ public class InstallPackageIntegtatoinTest extends BuildProcessTestCase { will(returnValue(sln)); allowing(myParameters).getNuGetPackageSources(); will(returnValue(sources)); + allowing(myParameters).getExcludeVersion(); + will(returnValue(excludeVersion)); }}); BuildProcess proc = new PackagesInstallerRunner( -- 2.23.3