public void TestGetAliasOf() { var mockPackage = MockGeneralPackage(); var packageAlias = new PackageAlias(mockPackage.Object, "1.2", "1.2.0.0"); Assert.AreSame(mockPackage.Object, packageAlias.GetAliasOf()); }
public void TestGetVersionPretty() { var mockPackage = MockGeneralPackage(); var packageAlias = new PackageAlias(mockPackage.Object, "1.2", "1.2.0.0"); Assert.AreEqual("1.2.0.0", packageAlias.GetVersionPretty()); }
public void TestMarkAliasUninstall() { package.Setup((o) => o.GetPackageType()).Returns("foo"); package.Setup((o) => o.GetName()).Returns("foobar"); var packageAlias = new PackageAlias(package.Object, "1.2.0.0", "1.2"); var operationAliasUninstalled = new OperationMarkPackageAliasUninstall(packageAlias); manager.Execute(repository.Object, operationAliasUninstalled); repository.Verify((o) => o.RemovePackage(It.IsAny <IPackage>())); }
public void TestGetRequiresDev() { var mockPackage = MockGeneralPackage(); var packageAlias = new PackageAlias(mockPackage.Object, "1.2", "1.2.0.0"); Assert.AreEqual(1, packageAlias.GetRequiresDev().Length); Assert.AreEqual( "foobarbaz requiresDev bar == 1.2", packageAlias.GetRequiresDev()[0].GetPrettyString(mockPackage.Object)); }
public void TestGetStability() { var mockPackage = MockGeneralPackage(); var packageAlias = new PackageAlias(mockPackage.Object, "1.2", "1.2.0.0"); Assert.AreEqual(Stabilities.Stable, packageAlias.GetStability()); packageAlias = new PackageAlias(mockPackage.Object, "1.2-beta", "1.2.0.0-beta"); Assert.AreEqual(Stabilities.Beta, packageAlias.GetStability()); }
public void TestGetReplaces() { var mockPackage = MockGeneralPackage(); var packageAlias = new PackageAlias(mockPackage.Object, "1.2", "1.2.0.0"); Assert.AreEqual(2, packageAlias.GetProvides().Length); Assert.AreEqual( "foobarbaz replaces bar == 1.0", packageAlias.GetReplaces()[0].GetPrettyString(mockPackage.Object)); Assert.AreEqual( "foobarbaz replaces bar == 1.2", packageAlias.GetReplaces()[1].GetPrettyString(mockPackage.Object)); }
public void TestEqualWithPackageAlias() { var mockPackage1 = new Mock <BasePackage>("foo") { CallBase = true, }; mockPackage1.Setup((o) => o.GetVersion()).Returns("1.0"); var aliasPackage = new PackageAlias(mockPackage1.Object, "2.0", "2.0.0.0"); Assert.IsTrue(mockPackage1.Object.Equals(aliasPackage)); Assert.IsTrue(aliasPackage.Equals(mockPackage1.Object)); }
public void TestGetHashingWithPackageAlias() { var mockPackage1 = new Mock <BasePackage>("fooBar") { CallBase = true, }; mockPackage1.Setup((o) => o.GetVersion()).Returns(() => "1.2"); var mockPackage2 = new Mock <BasePackage>("fooBar") { CallBase = true, }; mockPackage2.Setup((o) => o.GetVersion()).Returns(() => "1.2"); var packageAlias = new PackageAlias(mockPackage2.Object, "2.0", "2.0.0.0"); Assert.IsTrue(mockPackage1.Object.GetHashCode() == packageAlias.GetHashCode()); }
public void TestIsPackageInstalledWithPackageAlias() { var managerMock = new Mock <InstallationManager>() { CallBase = true, }; manager = managerMock.Object; package.Setup((o) => o.GetPackageType()).Returns("foo"); package.Setup((o) => o.GetName()).Returns("foobar"); var packageAlias = new PackageAlias(package.Object, "1.2.0.0", "1.2"); repository.Setup((o) => o.HasPackage(packageAlias)).Returns(true); repository.Setup((o) => o.HasPackage(package.Object)).Returns(true); installer.Setup((o) => o.IsSupports("foo")).Returns(true); installer.Setup((o) => o.IsInstalled(repository.Object, package.Object)) .Returns(true); manager.AddInstaller(installer.Object); Assert.AreEqual(true, manager.IsPackageInstalled(repository.Object, packageAlias)); managerMock.Verify((o) => o.IsPackageInstalled(repository.Object, package.Object)); }
public void TestWhiteListWithPackageAlias() { var pool = new Pool(); pool.SetWhiteList(new HashSet <int>() { 2, }); var packageFirst = MockPackage("foo", "1.0.0.0"); var aliasPackage = new PackageAlias(packageFirst, "1.2", "1.2.0.0"); var repository = MockRepository(aliasPackage, packageFirst); pool.AddRepository(repository); var packages = pool.WhatProvides("foo"); Assert.AreEqual(2, packages.Length); Assert.AreEqual("1.2.0.0", packages[0].GetVersionPretty()); Assert.AreEqual("1.2", packages[0].GetVersion()); Assert.AreSame(packageFirst, ((PackageAlias)packages[0]).GetAliasOf()); Assert.AreEqual("1.0.0.0", packages[1].GetVersion()); }
/// <summary> /// Adds a repository and its packages to this package pool. /// </summary> /// <param name="repository">A package repository.</param> /// <param name="rootAliases">An array of the root required aliases.</param> public void AddRepository(IRepository repository, ConfigAlias[] rootAliases = null) { IRepository[] repos; if (repository is RepositoryComposite repositoryComposite) { repos = repositoryComposite.GetRepositories(); } else { repos = new[] { repository }; } rootAliases = rootAliases ?? Array.Empty <ConfigAlias>(); void AddPackageByNameExact(IPackage package) { if (!packageByNameExact.TryGetValue( package.GetName(), out IDictionary <int, IPackage> mapping)) { packageByNameExact[package.GetName()] = mapping = new Dictionary <int, IPackage>(); } mapping[package.Id] = package; } void AddPackageByName(string name, IPackage package) { if (!packageByName.TryGetValue(name, out IList <IPackage> list)) { packageByName[name] = list = new List <IPackage>(); } list.Add(package); } foreach (var repo in repos) { repositories.Add(repo); var exempt = repo is RepositoryPlatform || repo is IRepositoryInstalled; if (repo is ILazyload repositoryLazyload && repositoryLazyload.IsLazyLoad) { lazyloadRepositories.Add(repositoryLazyload); continue; } foreach (var package in repo.GetPackages()) { var names = package.GetNames(); var stability = package.GetStability(); if (!(exempt || IsPackageAcceptable(stability, names))) { continue; } package.Id = id++; packages.Add(package); AddPackageByNameExact(package); foreach (var name in names) { AddPackageByName(name, package); } var packageName = package.GetName(); var alias = ConfigAlias.FindAlias(rootAliases, packageName, package.GetVersion()); if (alias == null) { continue; } var originalPackage = package; if (originalPackage is PackageAlias packageAlias) { originalPackage = packageAlias.GetAliasOf(); } packageAlias = new PackageAlias(originalPackage, alias.AliasNormalized, alias.Alias); packageAlias.SetRootPackageAlias(true); packageAlias.Id = id++; if (originalPackage.GetRepository() is RepositoryArray repositoryArray) { repositoryArray.AddPackage(packageAlias); } else if (originalPackage.GetRepository() is IRepositoryWriteable repositoryWriteable) { repositoryWriteable.AddPackage(packageAlias); } else { throw new RuntimeException($"The repository is must be {nameof(RepositoryArray)} or {nameof(IRepositoryWriteable)} in package {originalPackage}"); } packages.Add(packageAlias); AddPackageByNameExact(packageAlias); foreach (var name in packageAlias.GetNames()) { AddPackageByName(name, packageAlias); } } } }
private void MarkPackageAliasUninstall(PackageAlias package, Rule reason) { transaction.AddLast(new OperationMarkPackageAliasUninstall(package, reason)); }
/// <summary> /// Initializes a new instance of the <see cref="OperationMarkPackageAliasUninstall"/> class. /// </summary> /// <param name="package">The mark uninstall package instance.</param> /// <param name="reason">Why uninstall the package.</param> public OperationMarkPackageAliasUninstall(PackageAlias package, Rule reason = null) : base(reason) { this.package = package; }