Ejemplo n.º 1
0
            public void Should_Set_Source_Specified_In_Directive_As_Primary_But_Not_For_Settings()
            {
                var nugetV3Api = "https://api.nuget.org/v3/index.json";
                var nugetV2Api = "https://packages.nuget.org/api/v2";
                var primaryApi = "https://foo.bar/api.json";
                var package    = new PackageReference($"nuget:{primaryApi}?package=First.Package");
                var settings   = new FakeNuGetSettings();

                settings.AddOrUpdate(ConfigurationConstants.PackageSources, new SourceItem("V3", nugetV3Api));
                settings.AddOrUpdate(ConfigurationConstants.PackageSources, new SourceItem("V2", nugetV2Api));

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package, "/Work/packages/");

                Assert.Single(provider.PrimaryRepositories);
                Assert.Contains(provider.PrimaryRepositories, p => p.PackageSource.Source == primaryApi);
                Assert.Equal(3, provider.Repositories.Count());
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == primaryApi);
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == nugetV3Api);
            }
Ejemplo n.º 2
0
            public void Should_Set_Source_From_Settings_If_Cake_Config_Source_Is_Not_Provided()
            {
                var settingsApi    = "https://foo.bar/api.json";
                var package        = new PackageReference($"nuget:?package=First.Package");
                var settings       = Substitute.For <ISettings>();
                var settingSection = Activator.CreateInstance(
                    type: typeof(VirtualSettingSection),
                    bindingAttr: System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance,
                    binder: null,
                    args: new object[]
                {
                    ConfigurationConstants.PackageSources,
                    (IReadOnlyDictionary <string, string>)null,
                    new[]
                    {
                        new SourceItem("foobar", settingsApi)
                    }
                },
                    culture: null);

                settings.GetSection(ConfigurationConstants.PackageSources).Returns(settingSection);

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetRepositories());
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == settingsApi);
            }
            public void Should_Use_Feed_Specified_In_NuGet_Config_If_Available()
            {
                var feed     = "https://foo.bar/api.json";
                var package  = new PackageReference($"nuget:{feed}?package=First.Package");
                var settings = Substitute.For <ISettings>();

                settings.GetSettingValues(ConfigurationConstants.PackageSources, Arg.Any <bool>())
                .Returns(new List <SettingValue>
                {
                    new SettingValue("foobar", feed, false)
                });
                settings.GetNestedValues(ConfigurationConstants.CredentialsSectionName, "foobar")
                .Returns(new Dictionary <string, string>()
                {
                    ["Username"]          = "******",
                    ["ClearTextPassword"] = "******"
                }.ToList());
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetRepositories());
                Assert.Contains(provider.GetRepositories(), p =>
                                p.PackageSource.Source == feed &&
                                p.PackageSource.Credentials.Username == "*****@*****.**" &&
                                p.PackageSource.Credentials.Password == "p455w0rdz");
            }
Ejemplo n.º 4
0
        static CakeAPI()
        {
            var env        = new CakeEnvironment(new CakePlatform(), new CakeRuntime());
            var fileSystem = new FileSystem();

            var verbosity = Verbosity.Normal;

            if (Startup.HasArgument("cake-verbosity"))
            {
                verbosity = Enum.Parse <Verbosity>(Startup.Argument("cake-verbosity"));
            }
            var cakeLog = new CakeBuildLog(new CakeConsole(env), verbosity);

            var cakeConfiguration = new CakeConfiguration(new Dictionary <string, string>());
            var toolRepos         = new ToolRepository(env);

            Globber = new Globber(fileSystem, env);
            var cakeDataService = new CakeDataService();
            var registry        = new WindowsRegistry();
            var toolLocator     = new ToolLocator(env, toolRepos, new ToolResolutionStrategy(fileSystem, env, Globber, cakeConfiguration, cakeLog));
            var cakeArgs        = new CakeArguments(new List <string>().ToLookup(x => x));
            var procRunner      = new ProcessRunner(fileSystem, env, cakeLog, toolLocator, cakeConfiguration);

            Context = new CakeContext(fileSystem, env, Globber, cakeLog, cakeArgs, procRunner, registry, toolLocator, cakeDataService, cakeConfiguration);
        }
            public void Should_Set_Source_Specified_In_Directive_As_Primary_But_Not_For_Settings()
            {
                var nugetV3Api = "https://api.nuget.org/v3/index.json";
                var nugetV2Api = "https://packages.nuget.org/api/v2";
                var primaryApi = "https://foo.bar/api.json";
                var package    = new PackageReference($"nuget:{primaryApi}?package=First.Package");
                var settings   = Substitute.For <ISettings>();

                settings.GetSettingValues(ConfigurationConstants.PackageSources, Arg.Any <bool>())
                .Returns(new List <SettingValue>
                {
                    new SettingValue("V3", nugetV3Api, true),
                    new SettingValue("V2", nugetV2Api, true),
                });
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetPrimaryRepositories());
                Assert.Contains(provider.GetPrimaryRepositories(), p => p.PackageSource.Source == primaryApi);
                Assert.Equal(3, provider.GetRepositories().Count());
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == primaryApi);
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == nugetV3Api);
            }
Ejemplo n.º 6
0
            public void Should_Set_Settings_Source_As_Primary_If_Not_Specified_In_Directive()
            {
                var nugetV3Api     = "https://api.nuget.org/v3/index.json";
                var nugetV2Api     = "https://packages.nuget.org/api/v2";
                var package        = new PackageReference($"nuget:?package=First.Package");
                var settings       = Substitute.For <ISettings>();
                var settingSection = Activator.CreateInstance(
                    type: typeof(VirtualSettingSection),
                    bindingAttr: System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance,
                    binder: null,
                    args: new object[]
                {
                    ConfigurationConstants.PackageSources,
                    (IReadOnlyDictionary <string, string>)null,
                    new[]
                    {
                        new SourceItem("V3", nugetV3Api),
                        new SourceItem("V2", nugetV2Api)
                    }
                },
                    culture: null);

                settings.GetSection(ConfigurationConstants.PackageSources).Returns(settingSection);

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Equal(2, provider.GetPrimaryRepositories().Count());
                Assert.Contains(provider.GetPrimaryRepositories(), p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.GetPrimaryRepositories(), p => p.PackageSource.Source == nugetV3Api);
            }
Ejemplo n.º 7
0
            public void Should_Throw_If_Settings_Is_Null()
            {
                var configuration = new CakeConfiguration(new Dictionary <string, string>());
                var package       = new PackageReference("nuget:?package=First.Package");
                var result        = Record.Exception(() => new NuGetSourceRepositoryProvider(null, configuration, package));

                AssertEx.IsArgumentNullException(result, "settings");
            }
Ejemplo n.º 8
0
            public void Should_Throw_If_PackageReference_Is_Null()
            {
                var configuration = new CakeConfiguration(new Dictionary <string, string>());
                var settings      = Substitute.For <ISettings>();
                var result        = Record.Exception(() => new NuGetSourceRepositoryProvider(settings, configuration, null));

                AssertEx.IsArgumentNullException(result, "package");
            }
Ejemplo n.º 9
0
            public void Should_Not_Throw_For_Null_NuGet_Source_Value_In_CakeConfiguration()
            {
                var package       = new PackageReference("nuget:?package=First.Package");
                var settings      = Substitute.For <ISettings>();
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = null,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Empty(provider.GetRepositories());
            }
Ejemplo n.º 10
0
            public void Should_Use_Feed_Specified_In_NuGet_Config_If_Available()
            {
                var feed                 = "https://foo.bar/api.json";
                var package              = new PackageReference($"nuget:{feed}?package=First.Package");
                var settings             = Substitute.For <ISettings>();
                var packageSourceSection = Activator.CreateInstance(
                    type: typeof(VirtualSettingSection),
                    bindingAttr: System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance,
                    binder: null,
                    args: new object[]
                {
                    ConfigurationConstants.PackageSources,
                    (IReadOnlyDictionary <string, string>)null,
                    new[]
                    {
                        new SourceItem("foobar", feed)
                    }
                },
                    culture: null);
                var credentialSection = Activator.CreateInstance(
                    type: typeof(VirtualSettingSection),
                    bindingAttr: System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance,
                    binder: null,
                    args: new object[]
                {
                    ConfigurationConstants.CredentialsSectionName,
                    (IReadOnlyDictionary <string, string>)null,
                    new[]
                    {
                        new CredentialsItem("foobar", "*****@*****.**", "p455w0rdz", true)
                    }
                },
                    culture: null);

                settings.GetSection(ConfigurationConstants.PackageSources).Returns(packageSourceSection);
                settings.GetSection(ConfigurationConstants.CredentialsSectionName).Returns(credentialSection);

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetRepositories());
                Assert.Contains(provider.GetRepositories(), p =>
                                p.PackageSource.Source == feed &&
                                p.PackageSource.Credentials.Username == "*****@*****.**" &&
                                p.PackageSource.Credentials.Password == "p455w0rdz");
            }
Ejemplo n.º 11
0
            public void Should_Ignore_Trailing_Separator_For_NuGet_Source_Argument()
            {
                var nugetV2Api    = "https://packages.nuget.org/api/v2";
                var package       = new PackageReference("nuget:?package=First.Package");
                var settings      = Substitute.For <ISettings>();
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = nugetV2Api + ";",
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetRepositories());
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == nugetV2Api);
            }
Ejemplo n.º 12
0
        public void SetupBot()
        {
            _logger.Log(Type.Info, "Setting up Cake");
            var config = new DiscordSocketConfig()
            {
                GatewayIntents = GatewayIntents.All
            };

            _client            = new DiscordShardedClient(config);
            _commandHandler    = new CommandHandler(_client, new SetupServices().ReturnProvider());
            _cakeConfiguration = new CakeConfiguration();
            _ = new Database.Init();

            Running = false;
        }
Ejemplo n.º 13
0
            public void Should_Set_Configuration_Source_As_Primary_If_Not_Specified_In_Directive()
            {
                var nugetV3Api    = "https://api.nuget.org/v3/index.json";
                var nugetV2Api    = "https://packages.nuget.org/api/v2";
                var package       = new PackageReference($"nuget:?package=First.Package");
                var settings      = Substitute.For <ISettings>();
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = $"{nugetV3Api};{nugetV2Api}",
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Equal(2, provider.GetPrimaryRepositories().Count());
                Assert.Contains(provider.GetPrimaryRepositories(), p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.GetPrimaryRepositories(), p => p.PackageSource.Source == nugetV3Api);
            }
Ejemplo n.º 14
0
        public CakeFixture()
        {
            var env = FakeEnvironment.CreateUnixEnvironment();

            FileSystem = new FakeFileSystem(env);
            var globber         = new Globber(FileSystem, env);
            var log             = new NullLog();
            var reg             = new WindowsRegistry();
            var config          = new CakeConfiguration(new Dictionary <string, string>());
            var strategy        = new ToolResolutionStrategy(FileSystem, env, globber, config, log);
            var toolLocator     = new ToolLocator(env, new ToolRepository(env), strategy);
            var cakeDataService = new FakeDataService();
            var runner          = new ProcessRunner(FileSystem, env, log, toolLocator, config);
            var args            = new FakeArguments();

            Context = new CakeContext(FileSystem, env, globber, log, args, runner, reg, toolLocator, cakeDataService, config);
        }
Ejemplo n.º 15
0
            public void Should_Split_Multiple_NuGet_Sources_Into_Multiple_Repositories()
            {
                var nugetV3Api    = "https://api.nuget.org/v3/index.json";
                var nugetV2Api    = "https://packages.nuget.org/api/v2";
                var package       = new PackageReference("nuget:?package=First.Package");
                var settings      = Substitute.For <ISettings>();
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = nugetV2Api + ";" + nugetV3Api,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Equal(2, provider.GetRepositories().Count());
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == nugetV3Api);
            }
    public static IScriptHost GetScriptHost()
    {
        IFileSystem      fileSystem  = new FileSystem();
        ICakeDataService data        = new CakeDataService();
        ICakeEnvironment environment = new CakeEnvironment(
            new CakePlatform(),
            new CakeRuntime()
            );
        var                console       = new CakeConsole(environment);
        ICakeLog           log           = new CakeBuildLog(console);
        IGlobber           globber       = new Globber(fileSystem, environment);
        ICakeArguments     arguments     = new CakeArguments(BridgeArgumentParser.GetParsedCommandLine());
        ICakeConfiguration configuration = new CakeConfiguration(new Dictionary <string, string>());
        IToolLocator       tools         = new ToolLocator(
            environment,
            new ToolRepository(environment),
            new ToolResolutionStrategy(
                fileSystem,
                environment,
                globber,
                configuration,
                log
                )
            );
        ICakeContext context = new CakeContext(
            fileSystem,
            environment,
            globber,
            log,
            arguments,
            new ProcessRunner(fileSystem, environment, log, tools, configuration),
            new WindowsRegistry(),
            tools,
            data,
            configuration
            );

        return(new BridgeScriptHost(
                   new CakeEngine(data, log),
                   context,
                   new DefaultExecutionStrategy(log),
                   new CakeReportPrinter(console, context),
                   arguments
                   ));
    }
Ejemplo n.º 17
0
            public void Should_Set_Source_From_Settings_If_Cake_Config_Source_Is_Not_Provided()
            {
                var settingsApi = "https://foo.bar/api.json";
                var package     = new PackageReference($"nuget:?package=First.Package");
                var settings    = new FakeNuGetSettings();

                settings.AddOrUpdate(ConfigurationConstants.PackageSources, new SourceItem("foobar", settingsApi));

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package, "/Work/packages/");

                Assert.Single(provider.Repositories);
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == settingsApi);
            }
Ejemplo n.º 18
0
        internal UrlLoadDirectiveProviderFixture()
        {
            Environment   = FakeEnvironment.CreateUnixEnvironment();
            FileSystem    = new FakeFileSystem(Environment);
            ProcessRunner = Substitute.For <IProcessRunner>();

            LoadedReferences = new Dictionary <string, string>();

            ScriptAnalyzerContext = Substitute.For <IScriptAnalyzerContext>();
            ScriptAnalyzerContext.Root.Returns(new FilePath(System.IO.Directory.GetCurrentDirectory()));
            ScriptAnalyzerContext
            .WhenForAnyArgs(x => x.Analyze(Arg.Any <FilePath>()))
            .Do(c => {
                var fp = c.Arg <FilePath>();
                LoadedReferences[fp.FullPath] = System.IO.File.ReadAllText(fp.FullPath);
            });

            Log    = new FakeLog();
            Config = new CakeConfiguration(new Dictionary <string, string> ());
        }
            public void Should_Set_Source_From_Settings_If_Cake_Config_Source_Is_Not_Provided()
            {
                var settingsApi = "https://foo.bar/api.json";
                var package     = new PackageReference($"nuget:?package=First.Package");
                var settings    = Substitute.For <ISettings>();

                settings.GetSettingValues(ConfigurationConstants.PackageSources, Arg.Any <bool>())
                .Returns(new List <SettingValue>
                {
                    new SettingValue("foobar", settingsApi, true)
                });
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetRepositories());
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == settingsApi);
            }
Ejemplo n.º 20
0
            public void Should_Not_Set_Source_From_Settings_If_Cake_Config_Source_Is_Provided()
            {
                var nugetV3Api  = "https://api.nuget.org/v3/index.json";
                var nugetV2Api  = "https://packages.nuget.org/api/v2";
                var settingsApi = "https://foo.bar/api.json";
                var package     = new PackageReference($"nuget:?package=First.Package");
                var settings    = new FakeNuGetSettings();

                settings.AddOrUpdate(ConfigurationConstants.PackageSources, new SourceItem("foobar", settingsApi));

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = $"{nugetV3Api};{nugetV2Api}",
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package, "/Work/packages/");

                Assert.Equal(2, provider.Repositories.Count());
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == nugetV3Api);
            }
Ejemplo n.º 21
0
            public void Should_Use_Feed_Specified_In_NuGet_Config_If_Available()
            {
                var feed     = "https://foo.bar/api.json";
                var package  = new PackageReference($"nuget:{feed}?package=First.Package");
                var settings = new FakeNuGetSettings();

                settings.AddOrUpdate(ConfigurationConstants.PackageSources, new SourceItem("foobar", feed));
                settings.AddOrUpdate(ConfigurationConstants.CredentialsSectionName, new CredentialsItem("foobar", "*****@*****.**", "p455w0rdz", true, "foo"));

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package, "/Work/packages/");

                Assert.Single(provider.Repositories);
                Assert.Contains(provider.Repositories, p =>
                                p.PackageSource.Source == feed &&
                                p.PackageSource.Credentials.Username == "*****@*****.**" &&
                                p.PackageSource.Credentials.Password == "p455w0rdz");
            }