示例#1
0
        protected NuGetFixture()
        {
            Environment = FakeEnvironment.CreateUnixEnvironment();

            Process = Substitute.For <IProcess>();
            Process.GetExitCode().Returns(0);
            ProcessRunner = Substitute.For <IProcessRunner>();
            ProcessRunner.Start(Arg.Any <FilePath>(), Arg.Any <ProcessSettings>()).Returns(Process);

            Globber = Substitute.For <IGlobber>();
            Globber.Match("./tools/**/nuget.exe").Returns(new[] { (FilePath)"/Working/tools/NuGet.exe" });
            Globber.Match("./tools/**/NuGet.exe").Returns(new[] { (FilePath)"/Working/tools/NuGet.exe" });

            NuGetToolResolver = Substitute.For <INuGetToolResolver>();

            Log        = Substitute.For <ICakeLog>();
            FileSystem = new FakeFileSystem(Environment);

            // By default, there is a default tool.
            NuGetToolResolver.ResolvePath().Returns("/Working/tools/NuGet.exe");
            FileSystem.CreateFile("/Working/tools/NuGet.exe");

            // Set standard output.
            Process.GetStandardOutput().Returns(new string[0]);
        }
示例#2
0
        public void GivenDefaultToolDoNotExist()
        {
            var toolPath = new FilePath("/Working/tools/NuGet.exe");

            FileSystem.EnsureFileDoNotExist(toolPath);
            NuGetToolResolver.ResolvePath().Returns("/NonWorking/tools/NuGet.exe");
        }
示例#3
0
            public void Should_Resolve_In_Correct_Order()
            {
                // Given
                var environment = Substitute.For <ICakeEnvironment>();

                environment.WorkingDirectory.Returns("/Working");
                environment.IsUnix().Returns(false);
                environment.GetEnvironmentVariable("NUGET_EXE").Returns(c => null);
                environment.GetEnvironmentVariable("path").Returns(c => null);
                var fileSystem = new FakeFileSystem(environment);
                var globber    = Substitute.For <IGlobber>();

                globber.GetFiles("./tools/**/NuGet.exe").Returns(new FilePath[] { });
                var resolver = new NuGetToolResolver(fileSystem, environment, globber);

                // When
                Record.Exception(() => resolver.ResolvePath());

                // Then
                Received.InOrder(() =>
                {
                    // 1. Look in the tools directory.
                    globber.GetFiles("./tools/**/NuGet.exe");
                    // 2. Look for the environment variable NUGET_EXE.
                    environment.GetEnvironmentVariable("NUGET_EXE");
                    // 3. Panic and look in the path variable.
                    environment.GetEnvironmentVariable("path");
                });
            }
示例#4
0
        public static void NuGetInstall(this ICakeContext context, string packageId, NuGetInstallSettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var resolver = new NuGetToolResolver(context.FileSystem, context.Environment, context.Tools);
            var runner   = new NuGetInstaller(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            runner.Install(packageId, settings);
        }
示例#5
0
        public static void NuGetRemoveSource(this ICakeContext context, string name, string source, NuGetSourcesSettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var resolver = new NuGetToolResolver(context.FileSystem, context.Environment, context.Tools);
            var runner   = new NuGetSources(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            runner.RemoveSource(name, source, settings);
        }
示例#6
0
        public static void NuGetPush(this ICakeContext context, FilePath packageFilePath, NuGetPushSettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var resolver = new NuGetToolResolver(context.FileSystem, context.Environment, context.Tools);
            var packer   = new NuGetPusher(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver, context.Log);

            packer.Push(packageFilePath, settings);
        }
示例#7
0
        public static void NuGetInit(this ICakeContext context, string source, string destination, NuGetInitSettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var resolver = new NuGetToolResolver(context.FileSystem, context.Environment, context.Tools);
            var runner   = new NuGetIniter(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            runner.Init(source, destination, settings);
        }
示例#8
0
        public static void NuGetUpdate(this ICakeContext context, FilePath targetFile, NuGetUpdateSettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var resolver = new NuGetToolResolver(context.FileSystem, context.Environment, context.Tools);
            var runner   = new NuGetUpdater(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            runner.Update(targetFile, settings);
        }
示例#9
0
        public static void NuGetSetApiKey(this ICakeContext context, string apiKey, string source, NuGetSetApiKeySettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var resolver = new NuGetToolResolver(context.FileSystem, context.Environment, context.Tools);
            var runner   = new NuGetSetApiKey(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            runner.SetApiKey(apiKey, source, settings);
        }
示例#10
0
        public static void NuGetSetProxy(this ICakeContext context, string proxy, string username, string password, NuGetSetProxySettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var resolver = new NuGetToolResolver(context.FileSystem, context.Environment, context.Tools);
            var runner   = new NuGetSetProxy(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            runner.SetProxy(proxy, username, password, settings);
        }
示例#11
0
        public static void NuGetPack(this ICakeContext context, FilePath filePath, NuGetPackSettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var resolver = new NuGetToolResolver(context.FileSystem, context.Environment, context.Tools);
            var packer   = new NuGetPacker(context.FileSystem, context.Environment, context.ProcessRunner, context.Log, context.Tools, resolver);

            packer.Pack(filePath, settings);
        }
示例#12
0
        public static void NuGetInstallFromConfig(this ICakeContext context, FilePath packageConfigPath, NuGetInstallSettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var resolver = new NuGetToolResolver(context.FileSystem, context.Environment, context.Tools);
            var runner   = new NuGetInstaller(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            runner.InstallFromConfig(packageConfigPath, settings);
        }
示例#13
0
        public static bool NuGetHasSource(this ICakeContext context, string source, NuGetSourcesSettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var resolver = new NuGetToolResolver(context.FileSystem, context.Environment, context.Tools);
            var runner   = new NuGetSources(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            return(runner.HasSource(source, settings));
        }
示例#14
0
            public void Should_Be_Able_To_Resolve_Path_From_The_Tools_Directory()
            {
                // Given
                var environment = FakeEnvironment.CreateUnixEnvironment();
                var fileSystem  = new FakeFileSystem(environment);
                var globber     = Substitute.For <IGlobber>();

                globber.Match("./tools/**/NuGet.exe").Returns(p => new FilePath[] { "/root/tools/nuget.exe" });
                fileSystem.CreateFile("/root/tools/nuget.exe");
                var resolver = new NuGetToolResolver(fileSystem, environment, globber);

                // When
                var result = resolver.ResolvePath();

                // Then
                Assert.Equal("/root/tools/nuget.exe", result.FullPath);
            }
示例#15
0
            public void Should_Be_Able_To_Resolve_Path_Via_NuGet_Environment_Variable()
            {
                // Given
                var globber     = Substitute.For <IGlobber>();
                var environment = Substitute.For <ICakeEnvironment>();

                environment.WorkingDirectory.Returns("/Working");
                environment.IsUnix().Returns(false);
                environment.GetEnvironmentVariable("NUGET_EXE").Returns("/programs/nuget.exe");
                var fileSystem = new FakeFileSystem(environment);

                fileSystem.CreateFile("/programs/nuget.exe");
                var resolver = new NuGetToolResolver(fileSystem, environment, globber);

                // When
                var result = resolver.ResolvePath();

                // Then
                Assert.Equal("/programs/nuget.exe", result.FullPath);
            }
示例#16
0
            public void Should_Throw_If_NuGet_Exe_Could_Not_Be_Found()
            {
                // Given
                var environment = Substitute.For <ICakeEnvironment>();

                environment.WorkingDirectory.Returns("/Working");
                environment.IsUnix().Returns(false);
                environment.GetEnvironmentVariable("NUGET_EXE").Returns(c => null);
                environment.GetEnvironmentVariable("path").Returns(c => null);
                var fileSystem = new FakeFileSystem(environment);
                var globber    = Substitute.For <IGlobber>();

                globber.GetFiles("./tools/**/NuGet.exe").Returns(new FilePath[] { });
                var resolver = new NuGetToolResolver(fileSystem, environment, globber);

                // When
                var result = Record.Exception(() => resolver.ResolvePath());

                // Assert
                Assert.IsCakeException(result, "Could not locate nuget.exe.");
            }
示例#17
0
        public void CreatePackagesForAllNuSpecOutputToArtifactsFolder(string fullVersion)
        {
            var files = _globber.GetFiles("./**/*.nuspec").ToList();

            if (files.Count == 0)
            {
                throw new Exception("No .nuspec files found to create packages from");
            }

            var nuGetToolResolver = new NuGetToolResolver(_fileSystem, _environment, _tools);
            var packer            = new NuGetPacker(_fileSystem, _environment, _processRunner, _log, _tools, nuGetToolResolver);

            var output    = new DirectoryPath("./Artifacts");
            var directory = _fileSystem.GetDirectory(output);

            if (!directory.Exists)
            {
                directory.Create();
            }

            var nuGetPackSettings = new NuGetPackSettings
            {
                Version                   = fullVersion,
                OutputDirectory           = output.FullPath,
                IncludeReferencedProjects = true,
                Properties                = new Dictionary <string, string> {
                    { "Configuration", Configuration }
                },
            };

            foreach (var nuspec in files)
            {
                _log.Information(nuspec.FullPath);
                var csproj = nuspec.ChangeExtension(".csproj");
                _log.Information(csproj.FullPath);
                packer.Pack(csproj.FullPath, nuGetPackSettings);
            }
        }
示例#18
0
        public FilePath Resolve()
        {
            var resolver = new NuGetToolResolver(FileSystem, Environment, Tools);

            return(resolver.ResolvePath());
        }