Beispiel #1
0
        public void GetSynchronizeOffers_WhenMultipleBoundTargetForMultiplePackages_ShouldDoNothing()
        {
            var synchronizer = new VersionsSynchronizer();
            var actual       = synchronizer.GetSynchronizeOffers(new[]
            {
                new PackageMeta("", true, new PackageInfo
                {
                    Name         = "A1",
                    Dependencies = new []
                    {
                        new Dependency
                        {
                            Name    = "B1",
                            Version = new VersionTarget(new VersionFilter(3, null, null), new VersionFilter(4, null, null))
                        }
                    }
                }),
                new PackageMeta("", true, new PackageInfo
                {
                    Name         = "A2",
                    Dependencies = new []
                    {
                        new Dependency
                        {
                            Name    = "B2",
                            Version = new VersionTarget(new VersionFilter(1, null, null), new VersionFilter(2, null, null))
                        }
                    }
                })
            })
                               .ToArray();

            Assert.That(actual, Is.Empty);
        }
Beispiel #2
0
        public void GetSynchronizeOffers_WhenMultipleBoundTarget_ShouldSyncBottomAndUpperBounds()
        {
            var synchronizer = new VersionsSynchronizer();
            var actual       = synchronizer.GetSynchronizeOffers(new[]
            {
                new PackageMeta("", true, new PackageInfo
                {
                    Name         = "A1",
                    Dependencies = new []
                    {
                        new Dependency
                        {
                            Name    = "B",
                            Version = new VersionTarget(new VersionFilter(3, null, null), new VersionFilter(4, null, null))
                        }
                    }
                }),
                new PackageMeta("", true, new PackageInfo
                {
                    Name         = "A2",
                    Dependencies = new []
                    {
                        new Dependency
                        {
                            Name    = "B",
                            Version = new VersionTarget(new VersionFilter(1, null, null), new VersionFilter(2, null, null))
                        }
                    }
                })
            })
                               .ToArray();

            Assert.That(actual, Has.Length.EqualTo(1));
            Assert.That(
                actual,
                Has.Some.Matches <VersionsSynchronizer.SynchronizeVersionOffer>(
                    x => x.SourceMeta.PackageInfo.Name == "A2" &&
                    x.DependencyToUpdate == "B" &&
                    x.NewDependencyTarget.TargetRange.Lower == new VersionFilter(3, null, null) &&
                    x.NewDependencyTarget.TargetRange.Upper == new VersionFilter(4, null, null)));
        }
Beispiel #3
0
        private static void HandleVersionSynchronization(PackageMeta[] localPackages)
        {
            var versionsSynchronizer = new VersionsSynchronizer();

            var versionSynchronizationOffers = versionsSynchronizer.GetSynchronizeOffers(localPackages).ToArray();

            foreach (var synchronizationOffer in versionSynchronizationOffers)
            {
                var userAnswer = ConsoleAsk($"{synchronizationOffer.Description}. " +
                                            $"Source package: {synchronizationOffer.SourceMeta.PackageInfo.Name}. " +
                                            $"Dependency: {synchronizationOffer.DependencyToUpdate}. " +
                                            $"Offer update from: {synchronizationOffer.SourceMeta.PackageInfo.Dependencies.First(x => x.Name == synchronizationOffer.DependencyToUpdate)} " +
                                            $"Offer update to: {synchronizationOffer.NewDependencyTarget}");

                if (userAnswer)
                {
                    var newPackageInfo = new PackageInfo
                    {
                        Name         = synchronizationOffer.SourceMeta.PackageInfo.Name,
                        Version      = synchronizationOffer.SourceMeta.PackageInfo.Version,
                        Dependencies = synchronizationOffer
                                       .SourceMeta
                                       .PackageInfo
                                       .Dependencies
                                       .Select(x => x.Name != synchronizationOffer.DependencyToUpdate
                                ? new Dependency {
                            Name = x.Name, Version = x.Version
                        }
                                : new Dependency {
                            Name = x.Name, Version = synchronizationOffer.NewDependencyTarget
                        })
                                       .ToArray()
                    };

                    File.WriteAllText(synchronizationOffer.SourceMeta.Path, JsonConvert.SerializeObject(newPackageInfo, Formatting.Indented));
                }
            }
        }