Exemplo n.º 1
0
        public void UpdateCheckerIgnoresInstallUnitWithUnknownDescriptorFactoryId()
        {
            EngineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockNupkgUpdater));

            IInstallUnitDescriptor installDescriptor = new MockInstallUnitDescriptor()
            {
                Details                = new Dictionary <string, string>(),
                FactoryId              = new Guid("AB7803DC-5EC2-49D2-B3C4-EBC2F8B6322B"), // no factory is registered with this Id
                Identifier             = "Fake descriptor",
                MountPointId           = new Guid("40BC6026-D593-4AFE-A79C-F86319FB3BD0"),
                UserReadableIdentifier = "Fake descriptor"
            };

            IUpdateUnitDescriptor updateDescriptor = new UpdateUnitDescriptor(installDescriptor, "FakeDescriptor::1.0.0", "Fake Descriptor Version 1.0.0");

            MockNupkgUpdater.SetMockUpdates(new List <IUpdateUnitDescriptor>()
            {
                updateDescriptor
            });

            TemplateUpdateChecker updateChecker = new TemplateUpdateChecker(EngineEnvironmentSettings);
            IReadOnlyList <IUpdateUnitDescriptor> foundUpdates = updateChecker.CheckForUpdatesAsync(new List <IInstallUnitDescriptor>()
            {
                installDescriptor
            }).Result;

            Assert.Equal(0, foundUpdates.Count);
        }
Exemplo n.º 2
0
        public void UpdateCheckerCorrectlyFindsUpdate()
        {
            EngineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockNupkgUpdater));

            // an updater that isn't related
            Guid unrelatedMountPointId = new Guid("44E776BF-0E75-43E3-97B0-1807B5207D90");
            IInstallUnitDescriptor unrelatedInstallDescriptor = new NupkgInstallUnitDescriptor(unrelatedMountPointId, "unrelatedPackage", "2.0.0");
            IUpdateUnitDescriptor  unrelatedUpdateDescriptor  = new UpdateUnitDescriptor(unrelatedInstallDescriptor, "unrelatedPackage::2.1.0", "Unrelated Package Version 2.1.0");

            // the update that should be found
            Guid mockMountPointId = new Guid("1EB31CA7-28C2-4AAD-B994-32A96A2EACB7");
            IInstallUnitDescriptor testInstallDescriptor = new NupkgInstallUnitDescriptor(mockMountPointId, "testPackage", "1.0.0");
            IUpdateUnitDescriptor  mockUpdateDescriptor  = new UpdateUnitDescriptor(testInstallDescriptor, "testPackage::1.1.0", "Test Package Version 1.0.0");

            MockNupkgUpdater.SetMockUpdates(new List <IUpdateUnitDescriptor>()
            {
                mockUpdateDescriptor, unrelatedUpdateDescriptor
            });

            TemplateUpdateChecker updateChecker = new TemplateUpdateChecker(EngineEnvironmentSettings);
            IReadOnlyList <IUpdateUnitDescriptor> foundUpdates = updateChecker.CheckForUpdatesAsync(new List <IInstallUnitDescriptor>()
            {
                testInstallDescriptor
            }).Result;

            Assert.Equal(1, foundUpdates.Count);
            Assert.Equal(mockMountPointId, foundUpdates[0].InstallUnitDescriptor.MountPointId);
        }
        public async Task UpdateIsFoundAndApplied()
        {
            EngineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockNupkgUpdater));

            IInstallUnitDescriptor installDescriptor = new MockInstallUnitDescriptor()
            {
                Details      = new Dictionary <string, string>(),
                FactoryId    = NupkgInstallUnitDescriptorFactory.FactoryId,
                Identifier   = "MockPackage",
                MountPointId = new Guid("C5A4D83F-7005-4B38-BF47-DFF5CB5F5881"),
            };
            List <IInstallUnitDescriptor> installsToUpdate = new List <IInstallUnitDescriptor>()
            {
                installDescriptor
            };

            IUpdateUnitDescriptor updateDescriptor = new UpdateUnitDescriptor(installDescriptor, "MockPackageToInstall", "Mock Package To Install");

            MockNupkgUpdater.SetMockUpdates(new List <IUpdateUnitDescriptor>()
            {
                updateDescriptor
            });

            // start with nothing "installed", so checking what was installed can happen.
            MockInstaller installer = new MockInstaller();

            CliTemplateUpdater updater = new CliTemplateUpdater(EngineEnvironmentSettings, installer, "new");

            Assert.Empty(installer.Installed);

            bool updateResult = await updater.CheckForUpdatesAsync(installsToUpdate, true);

            Assert.True(updateResult);
            Assert.Single(installer.Installed);
        }
Exemplo n.º 4
0
        public void UpdateIsFoundAndApplied()
        {
            EngineEnvironmentSettings.SettingsLoader.Components.Register(typeof(MockNupkgUpdater));

            IInstallUnitDescriptor installDescriptor = new MockInstallUnitDescriptor()
            {
                Details                = new Dictionary <string, string>(),
                FactoryId              = NupkgInstallUnitDescriptorFactory.FactoryId,
                Identifier             = "MockPackage",
                MountPointId           = new Guid("C5A4D83F-7005-4B38-BF47-DFF5CB5F5881"),
                UserReadableIdentifier = "Mock Package"
            };
            List <IInstallUnitDescriptor> installsToUpdate = new List <IInstallUnitDescriptor>()
            {
                installDescriptor
            };

            IUpdateUnitDescriptor updateDescriptor = new UpdateUnitDescriptor(installDescriptor, "MockPackageToInstall", "Mock Package To Install");

            MockNupkgUpdater.SetMockUpdates(new List <IUpdateUnitDescriptor>()
            {
                updateDescriptor
            });

            // start with nothing "installed", so checking what was installed can happen.
            MockInstaller installer = new MockInstaller();

            TemplateUpdateCoordinator coordinator = new TemplateUpdateCoordinator(EngineEnvironmentSettings, installer);

            Assert.Empty(installer.Installed);
            coordinator.UpdateTemplates(installsToUpdate, () => Console.ReadLine(), true);
            Assert.Single(installer.Installed);
            Assert.Contains(updateDescriptor.InstallString, installer.Installed);
        }
Exemplo n.º 5
0
        public async Task <IReadOnlyList <IUpdateUnitDescriptor> > CheckForUpdatesAsync(IReadOnlyList <IInstallUnitDescriptor> descriptorsToCheck)
        {
            await EnsureInitializedAsync();

            IReadOnlyDictionary <string, IInstallUnitDescriptor> installedPackToInstallDescriptorMap = descriptorsToCheck.ToDictionary(d => d.Identifier, d => d);

            List <IUpdateUnitDescriptor> updateList = new List <IUpdateUnitDescriptor>();

            foreach (ITemplateSearchSource searchSource in _templateSearchSourceList)
            {
                IReadOnlyDictionary <string, PackToTemplateEntry> candidateUpdatePackMatchList = await searchSource.CheckForTemplatePackMatchesAsync(installedPackToInstallDescriptorMap.Keys.ToList());

                foreach (KeyValuePair <string, PackToTemplateEntry> candidateUpdatePackMatch in candidateUpdatePackMatchList)
                {
                    string packName = candidateUpdatePackMatch.Key;

                    if (installedPackToInstallDescriptorMap.TryGetValue(packName, out IInstallUnitDescriptor installDescriptor) &&
                        (installDescriptor is NupkgInstallUnitDescriptor nupkgInstallDescriptor))
                    {
                        string installString = $"{packName}::{candidateUpdatePackMatch.Value.Version}"; // the package::version that will be installed
                        string displayString = $"{packName}::{nupkgInstallDescriptor.Version}";         // the package::version currently installed
                        IUpdateUnitDescriptor updateDescriptor = new UpdateUnitDescriptor(installDescriptor, installString, displayString);
                        updateList.Add(updateDescriptor);
                    }
                }
            }

            return(updateList);
        }