internal NugetResolver(VersionMatchingStrategies assemblyMatchingStrategy, VersionMatchingStrategies packageMatchingStrategy, IEnumerable <DirectoryInfo> caches) : base(assemblyMatchingStrategy)
        {
            Throw.IfNot.Enum.IsDefined <VersionMatchingStrategies>(packageMatchingStrategy, nameof(packageMatchingStrategy), $"Given strategy is not defined {packageMatchingStrategy.Format()}");

            PackageMatchingStrategy = packageMatchingStrategy;
            NugetCaches             = caches ?? GetCaches();
        }
Esempio n. 2
0
        internal static IEnumerable <INugetResolverData> GetAssemblyCandidatesFromCache(
            AssemblyName assemblyName, DirectoryInfo cacheDir,
            IEnumerable <RuntimeInfo> validRuntimes,
            VersionMatchingStrategies assemblyMatchingStrategy,
            VersionMatchingStrategies packageMatchingStrategy)
        {
            List <INugetResolverData> files = new List <INugetResolverData>();

            if (TryGetPackage(assemblyName.Name, cacheDir, out DirectoryInfo packageDir))
            {
                foreach (FileInfo file in packageDir.EnumerateFiles($"{assemblyName.Name}.dll", SearchOption.AllDirectories))
                {
                    if (_factory.TryCreate(out INugetResolverData data, file) &&
                        assemblyName.Name == data.AssemblyName.Name &&
                        assemblyName.Version.Matches(data.AssemblyName.Version, assemblyMatchingStrategy) &&
                        assemblyName.Version.Matches((Version)data.PackageVersion, packageMatchingStrategy) &&
                        AssemblyHelper.ValidateArchitecture(data.AssemblyName) &&
                        validRuntimes.Contains(data.PackageTargetFramework))
                    {
                        files.Add(data);
                    }
                }
            }

            return(files
                   .OrderByDescending(d => d.PackageVersion)
                   .ThenByDescending(d => d.PackageTargetFramework, new RuntimeInfoFeatureComparer()));
        }
        void VersionsMatch(VersionMatchingStrategies strategy, Version requested, Version found, Boolean expected)
        {
            Boolean result = default;

            Test.IfNot.Action.ThrowsException(() => result = requested.Matches(found, strategy), out Exception _);

            Test.If.Value.IsEqual(result, expected);
        }
            public IEnumerable <IDefaultResolverData> Resolve(AssemblyName assemblyName, DirectoryInfo searchDir, SearchOption searchOption, VersionMatchingStrategies strategy)
            {
                AssemblyName     = assemblyName;
                SearchDir        = searchDir;
                SearchOption     = searchOption;
                MatchingStrategy = strategy;

                return(new IDefaultResolverData[] { null });
            }
            public IEnumerable <INugetResolverData> Resolve(AssemblyName assemblyName, IEnumerable <DirectoryInfo> cacheDirs, RuntimeInfo current, VersionMatchingStrategies assemblyMatchingStrategy, VersionMatchingStrategies packageMatchingStrategy)
            {
                AssemblyName             = assemblyName;
                CacheDir                 = cacheDirs;
                Current                  = current;
                AssemblyMatchingStrategy = assemblyMatchingStrategy;
                PackageMatchingStrategy  = packageMatchingStrategy;

                return(new INugetResolverData[] { null });
            }
        void CreateResolver_Throws(VersionMatchingStrategies in1, VersionMatchingStrategies in2, String paramName, String message)
        {
            var            creator = Factory.Instance.NugetResolver();
            INugetResolver obj     = default;

            Test.If.Action.ThrowsException(() => creator.Create(out obj, in1, in2), out ArgumentException ex);

            Test.If.Object.IsNull(obj);
            Test.If.Value.IsEqual(ex.ParamName, paramName);
            Test.If.String.Contains(ex.Message, message);
        }
        void TryCreateResolver_DoesNotThrow(VersionMatchingStrategies in1, VersionMatchingStrategies in2)
        {
            var            creator = Factory.Instance.NugetResolver();
            Boolean        result  = default;
            INugetResolver obj     = default;

            Test.IfNot.Action.ThrowsException(() => result = creator.TryCreate(out obj, in1, in2), out Exception _);

            Test.If.Value.IsFalse(result);
            Test.If.Object.IsNull(obj);
        }
        void CreateResolver(VersionMatchingStrategies in1, VersionMatchingStrategies in2)
        {
            var            creator = Factory.Instance.NugetResolver();
            INugetResolver obj     = default;

            Test.IfNot.Action.ThrowsException(() => creator.Create(out obj, in1, in2), out Exception _);

            Test.IfNot.Object.IsNull(obj);
            Test.If.Value.IsEqual(obj.AssemblyMatchingStrategy, in1);
            Test.If.Value.IsEqual(obj.PackageMatchingStrategy, in2);
            Test.If.Enumerable.Matches(obj.NugetCaches.Select(_ => _.FullName), NugetResolver.GetCaches().Select(_ => _.FullName));
        }
        internal static Boolean Matches(this Version requested, Version found, VersionMatchingStrategies strategy)
        {
            if (requested == null || found == null)
            {
                return(false);
            }

            return(strategy switch {
                VersionMatchingStrategies.Strict => _strictComparer.Equals(requested, found),
                VersionMatchingStrategies.SemVer => _semVerComparer.Equals(requested, found),
                _ => false,
            });
Esempio n. 10
0
        void CreateResolver(VersionMatchingStrategies in1, SearchOption in2)
        {
            var creator          = Factory.Instance.DefaultResolver();
            IDefaultResolver obj = default;

            Test.IfNot.Action.ThrowsException(() => creator.Create(out obj, in1, in2), out Exception _);

            Test.IfNot.Object.IsNull(obj);
            Test.If.Value.IsEqual(obj.AssemblyMatchingStrategy, in1);
            Test.If.Value.IsEqual(obj.SearchOption, in2);
            Test.If.Object.IsOfExactType <CoreDefaultResolver>(((DefaultResolver)obj).CoreResolver);
        }
        void TryCreateResolverWithCaches(VersionMatchingStrategies in1, VersionMatchingStrategies in2)
        {
            var            creator = Factory.Instance.NugetResolver();
            Boolean        result  = default;
            INugetResolver obj     = default;

            Test.IfNot.Action.ThrowsException(() => result = creator.TryCreate(out obj, in1, in2, new DirectoryInfo[] { Statics.FakeNugetCache }), out Exception _);

            Test.If.Value.IsTrue(result);
            Test.IfNot.Object.IsNull(obj);
            Test.If.Value.IsEqual(obj.AssemblyMatchingStrategy, in1);
            Test.If.Value.IsEqual(obj.PackageMatchingStrategy, in2);
            Test.If.Enumerable.Matches(obj.NugetCaches.Select(_ => _.FullName), new String[] { Statics.FakeNugetCache.FullName });
        }
Esempio n. 12
0
        void TryCreateResolverWithExOut(VersionMatchingStrategies in1, SearchOption in2)
        {
            var              creator = Factory.Instance.DefaultResolver();
            Boolean          result  = default;
            IDefaultResolver obj     = default;
            Exception        ex      = default;

            Test.IfNot.Action.ThrowsException(() => result = creator.TryCreate(out obj, in1, in2, out ex), out Exception _);

            Test.If.Value.IsTrue(result);
            Test.If.Object.IsNull(ex);
            Test.IfNot.Object.IsNull(obj);
            Test.If.Value.IsEqual(obj.AssemblyMatchingStrategy, in1);
            Test.If.Value.IsEqual(obj.SearchOption, in2);
            Test.If.Object.IsOfExactType <CoreDefaultResolver>(((DefaultResolver)obj).CoreResolver);
        }
        void TryCreateResolverWithExOut(VersionMatchingStrategies in1, VersionMatchingStrategies in2)
        {
            var            creator = Factory.Instance.NugetResolver();
            Boolean        result  = default;
            INugetResolver obj     = default;
            Exception      ex      = default;

            Test.IfNot.Action.ThrowsException(() => result = creator.TryCreate(out obj, in1, in2, out ex), out Exception _);

            Test.If.Value.IsTrue(result);
            Test.If.Object.IsNull(ex);
            Test.IfNot.Object.IsNull(obj);
            Test.If.Value.IsEqual(obj.AssemblyMatchingStrategy, in1);
            Test.If.Value.IsEqual(obj.PackageMatchingStrategy, in2);
            Test.If.Enumerable.Matches(obj.NugetCaches.Select(_ => _.FullName), NugetResolver.GetCaches().Select(_ => _.FullName));
        }
        void TryCreateResolverWithExOutWithCaches_DoesNotThrow(VersionMatchingStrategies in1, VersionMatchingStrategies in2, String paramName, String message)
        {
            var            creator = Factory.Instance.NugetResolver();
            Boolean        result  = default;
            INugetResolver obj     = default;
            Exception      ex      = default;

            Test.IfNot.Action.ThrowsException(() => result = creator.TryCreate(out obj, in1, in2, new DirectoryInfo[] { Statics.FakeNugetCache }, out ex), out Exception _);

            Test.If.Value.IsFalse(result);
            Test.IfNot.Object.IsNull(ex);
            Test.If.Object.IsOfExactType <ArgumentException>(ex);
            Test.If.Value.IsEqual(((ArgumentException)ex).ParamName, paramName);
            Test.If.String.Contains(ex.Message, message);
            Test.If.Object.IsNull(obj);
        }
Esempio n. 15
0
        public IEnumerable <INugetResolverData> Resolve(
            AssemblyName assemblyName,
            IEnumerable <DirectoryInfo> cacheDirs,
            RuntimeInfo current,
            VersionMatchingStrategies assemblyMatchingStrategy,
            VersionMatchingStrategies packageMatchingStrategy)
        {
            List <INugetResolverData> files = new List <INugetResolverData>();

            if (RuntimesHelper.TryGetLoadableRuntimes(current, out IEnumerable <RuntimeInfo> validRuntimes))
            {
                cacheDirs.Foreach(cache => files.AddRange(GetAssemblyCandidatesFromCache(assemblyName, cache, validRuntimes, assemblyMatchingStrategy, packageMatchingStrategy)));
            }

            return(files
                   .OrderByDescending(d => d.PackageVersion)
                   .ThenByDescending(d => d.PackageTargetFramework, new RuntimeInfoFeatureComparer()));
        }
 public override void Create(out IDefaultResolver obj, VersionMatchingStrategies assemblyMatchingStrategy, SearchOption searchOption)
 => _resolverCreator.Create(out obj, assemblyMatchingStrategy, searchOption);
 void ResolveByStrategies(AssemblyName input1, DirectoryInfo input2, SearchOption input3, VersionMatchingStrategies input4, (IEnumerable <FileInfo> contained, IEnumerable <FileInfo> notcontained) expected)
        internal DefaultResolver(VersionMatchingStrategies assemblyMatchingStrategy, SearchOption searchOption) : base(assemblyMatchingStrategy)
        {
            Throw.IfNot.Enum.IsDefined <SearchOption>(searchOption, nameof(searchOption), $"Given search option is not defined {searchOption.Format()}");

            SearchOption = searchOption;
        }
 internal AssemblyResolver(VersionMatchingStrategies assemblyMatchingStrategy) : base(assemblyMatchingStrategy)
 {
 }
 public override Boolean TryCreate(out INugetResolver obj, VersionMatchingStrategies assemblyMatchingStrategy, VersionMatchingStrategies packageMatchingStrategy, IEnumerable <DirectoryInfo> caches, out Exception ex)
 => _resolverWithCacheCreator.TryCreate(out obj, assemblyMatchingStrategy, packageMatchingStrategy, caches, out ex);
 public override void Create(out INugetResolver obj, VersionMatchingStrategies assemblyMatchingStrategy, VersionMatchingStrategies packageMatchingStrategy, IEnumerable <DirectoryInfo> caches)
 => _resolverWithCacheCreator.Create(out obj, assemblyMatchingStrategy, packageMatchingStrategy, caches);
 public override Boolean TryCreate(out INugetResolver obj, VersionMatchingStrategies assemblyMatchingStrategy, VersionMatchingStrategies packageMatchingStrategy, out Exception ex)
 => _resolverCreator.TryCreate(out obj, assemblyMatchingStrategy, packageMatchingStrategy, out ex);
Esempio n. 23
0
        internal AssemblyResolver(VersionMatchingStrategies assemblyMatchingStrategy)
        {
            Throw.IfNot.Enum.IsDefined <VersionMatchingStrategies>(assemblyMatchingStrategy, nameof(assemblyMatchingStrategy), $"Given strategy is not defined {assemblyMatchingStrategy.Format()}");

            AssemblyMatchingStrategy = assemblyMatchingStrategy;
        }
 public override void Create(out INugetResolver obj, VersionMatchingStrategies assemblyMatchingStrategy, VersionMatchingStrategies packageMatchingStrategy)
 => _resolverCreator.Create(out obj, assemblyMatchingStrategy, packageMatchingStrategy);
 public override Boolean TryCreate(out IDefaultResolver obj, VersionMatchingStrategies assemblyMatchingStrategy, SearchOption searchOption, out Exception ex)
 => _resolverCreator.TryCreate(out obj, assemblyMatchingStrategy, searchOption, out ex);
        public IEnumerable <IDefaultResolverData> Resolve(AssemblyName assemblyName, DirectoryInfo searchDir, SearchOption searchOption, VersionMatchingStrategies assemblyMatchingStrategy)
        {
            List <IDefaultResolverData> files = new List <IDefaultResolverData>();

            if (assemblyName != null && searchDir != null)
            {
                foreach (FileInfo file in searchDir.EnumerateFiles($"{assemblyName.Name}.dll", searchOption))
                {
                    if (_factory.TryCreate(out IDefaultResolverData data, file) &&
                        assemblyName.Name == data.AssemblyName.Name &&
                        assemblyName.Version.Matches(data.AssemblyName.Version, assemblyMatchingStrategy) &&
                        AssemblyHelper.ValidateArchitecture(data.AssemblyName))
                    {
                        files.Add(data);
                    }
                }
            }

            return(files);
        }
Esempio n. 27
0
 internal NugetResolver(VersionMatchingStrategies assemblyMatchingStrategy, VersionMatchingStrategies packageMatchingStrategy) : this(assemblyMatchingStrategy, packageMatchingStrategy, null)
 {
 }