public void TestMetadataSerDe()
        {
            using var tempDir = new TemporaryDirectory();
            var metadata = new DependencyProviderUtils.Metadata
            {
                AssemblyProbingPaths = new string[] { "/assembly/probe/path" },
                NativeProbingPaths   = new string[] { "/native/probe/path" },
                NuGets = new DependencyProviderUtils.NuGetMetadata[]
                {
                    new DependencyProviderUtils.NuGetMetadata
                    {
                        FileName       = "package.name.1.0.0.nupkg",
                        PackageName    = "package.name",
                        PackageVersion = "1.0.0"
                    }
                }
            };

            string serializedFilePath = Path.Combine(tempDir.Path, "serializedMetadata");

            metadata.Serialize(serializedFilePath);

            DependencyProviderUtils.Metadata deserializedMetadata =
                DependencyProviderUtils.Metadata.Deserialize(serializedFilePath);

            Assert.True(metadata.Equals(deserializedMetadata));
        }
Esempio n. 2
0
        internal DependencyProvider(string metadataFilePath, string srcPath, string dstPath)
        {
            DependencyProviderUtils.Metadata metadata =
                DependencyProviderUtils.Metadata.Deserialize(metadataFilePath);

            string unpackPath = Path.Combine(dstPath, ".nuget", "packages");

            Directory.CreateDirectory(unpackPath);

            UnpackPackages(srcPath, unpackPath, metadata.NuGets);

            _dependencyProvider = CreateDependencyProvider(unpackPath, metadata);
        }
Esempio n. 3
0
        public void TestsUnpackPackages()
        {
            string packageFileName = "package.name.1.0.0.nupkg";
            string packageName     = "package.name";
            string packageVersion  = "1.0.0";

            using var emptyFileDir = new TemporaryDirectory();
            string emptyFileName = "emptyfile";

            File.Create(Path.Combine(emptyFileDir.Path, emptyFileName)).Dispose();

            using var nupkgDir = new TemporaryDirectory();
            ZipFile.CreateFromDirectory(
                emptyFileDir.Path,
                Path.Combine(nupkgDir.Path, packageFileName));

            var metadata = new DependencyProviderUtils.Metadata
            {
                AssemblyProbingPaths = new string[] { "/assembly/probe/path" },
                NativeProbingPaths   = new string[] { "/native/probe/path" },
                NuGets = new DependencyProviderUtils.NuGetMetadata[]
                {
                    new DependencyProviderUtils.NuGetMetadata
                    {
                        FileName       = packageFileName,
                        PackageName    = packageName,
                        PackageVersion = packageVersion
                    }
                }
            };

            using var unpackDir = new TemporaryDirectory();
            string metadataFilePath =
                Path.Combine(nupkgDir.Path, DependencyProviderUtils.CreateFileName(1));

            metadata.Serialize(metadataFilePath);

            // Files located in nupkgDir
            // nuget: package.name.1.0.0.nupkg
            // metadata file: dependencyProviderMetadata_00000000000000000001
            var dependencyProvider =
                new DependencyProvider(metadataFilePath, nupkgDir.Path, unpackDir.Path);
            string expectedPackagePath =
                Path.Combine(unpackDir.Path, ".nuget", "packages", packageName, packageVersion);
            string expectedFilePath = Path.Combine(expectedPackagePath, emptyFileName);

            Assert.True(File.Exists(expectedFilePath));
        }
        public void TestMetadataEquals()
        {
            string expectedAssemblyProbingPath = "/assembly/probe/path";
            string expectedNativeProbingPath   = "/native/probe/path";
            var    expectedNugetMetadata       = new DependencyProviderUtils.NuGetMetadata
            {
                FileName       = "package.name.1.0.0.nupkg",
                PackageName    = "package.name",
                PackageVersion = "1.0.0"
            };

            var metadata = new DependencyProviderUtils.Metadata
            {
                AssemblyProbingPaths = new string[] { expectedAssemblyProbingPath },
                NativeProbingPaths   = new string[] { expectedNativeProbingPath },
                NuGets = new DependencyProviderUtils.NuGetMetadata[] { expectedNugetMetadata }
            };

            Assert.False(metadata.Equals(null));
            Assert.False(metadata.Equals(new DependencyProviderUtils.Metadata()));
            Assert.False(metadata.Equals(new DependencyProviderUtils.Metadata
            {
                AssemblyProbingPaths = new string[] { expectedAssemblyProbingPath },
                NativeProbingPaths   = new string[] { expectedNativeProbingPath, "" },
                NuGets = new DependencyProviderUtils.NuGetMetadata[] { expectedNugetMetadata }
            }));
            Assert.False(metadata.Equals(new DependencyProviderUtils.Metadata
            {
                AssemblyProbingPaths = new string[] { expectedAssemblyProbingPath },
                NativeProbingPaths   = new string[] { expectedNativeProbingPath },
                NuGets = new DependencyProviderUtils.NuGetMetadata[] { expectedNugetMetadata, null }
            }));
            Assert.False(metadata.Equals(new DependencyProviderUtils.Metadata
            {
                AssemblyProbingPaths = new string[] { expectedAssemblyProbingPath, "" },
                NativeProbingPaths   = new string[] { expectedNativeProbingPath },
                NuGets = new DependencyProviderUtils.NuGetMetadata[] { expectedNugetMetadata }
            }));

            Assert.True(metadata.Equals(new DependencyProviderUtils.Metadata
            {
                AssemblyProbingPaths = new string[] { expectedAssemblyProbingPath },
                NativeProbingPaths   = new string[] { expectedNativeProbingPath },
                NuGets = new DependencyProviderUtils.NuGetMetadata[] { expectedNugetMetadata }
            }));
        }
Esempio n. 5
0
        private DepManager.DependencyProvider CreateDependencyProvider(
            string basePath,
            DependencyProviderUtils.Metadata metadata)
        {
            IEnumerable <string> AssemblyProbingPaths()
            {
                foreach (string dependency in metadata.AssemblyProbingPaths)
                {
                    yield return(Path.Combine(basePath, dependency));
                }
            }

            IEnumerable <string> NativeProbingRoots()
            {
                foreach (string dependency in metadata.NativeProbingPaths)
                {
                    yield return(Path.Combine(basePath, dependency));
                }
            }

            return(new DepManager.DependencyProvider(
                       AssemblyProbingPaths,
                       NativeProbingRoots));
        }
Esempio n. 6
0
        public void TestPackageResolver()
        {
            using var tempDir = new TemporaryDirectory();

            string packageName     = "package.name";
            string packageVersion  = "0.1.0";
            string packageRootPath =
                Path.Combine(tempDir.Path, "path", "to", "packages", packageName, packageVersion);
            string packageFrameworkPath = Path.Combine(packageRootPath, "lib", "framework");

            Directory.CreateDirectory(packageRootPath);
            var nugetFile = new FileInfo(
                Path.Combine(packageRootPath, $"{packageName}.{packageVersion}.nupkg"));

            using (File.Create(nugetFile.FullName))
            {
            }

            var assemblyPaths = new List <FileInfo>
            {
                new FileInfo(Path.Combine(packageFrameworkPath, "1.dll")),
                new FileInfo(Path.Combine(packageFrameworkPath, "2.dll"))
            };
            var probingPaths = new List <DirectoryInfo> {
                new DirectoryInfo(packageRootPath)
            };

            var mockPackageRestoreContextWrapper = new Mock <PackageRestoreContextWrapper>();

            mockPackageRestoreContextWrapper
            .SetupGet(m => m.ResolvedPackageReferences)
            .Returns(new ResolvedPackageReference[]
            {
                new ResolvedPackageReference(
                    packageName,
                    packageVersion,
                    assemblyPaths,
                    new DirectoryInfo(packageRootPath),
                    probingPaths)
            });

            var packageResolver = new PackageResolver(mockPackageRestoreContextWrapper.Object);
            IEnumerable <string> actualFiles = packageResolver.GetFiles(tempDir.Path);

            string metadataFilePath =
                Path.Combine(tempDir.Path, DependencyProviderUtils.CreateFileName(1));
            var expectedFiles = new string[]
            {
                nugetFile.FullName,
                metadataFilePath
            };

            Assert.True(expectedFiles.SequenceEqual(actualFiles));
            Assert.True(File.Exists(metadataFilePath));

            DependencyProviderUtils.Metadata actualMetadata =
                DependencyProviderUtils.Metadata.Deserialize(metadataFilePath);
            var expectedMetadata = new DependencyProviderUtils.Metadata
            {
                AssemblyProbingPaths = new string[]
                {
                    Path.Combine(packageName, packageVersion, "lib", "framework", "1.dll"),
                    Path.Combine(packageName, packageVersion, "lib", "framework", "2.dll")
                },
                NativeProbingPaths = new string[]
                {
                    Path.Combine(packageName, packageVersion)
                },
                NuGets = new DependencyProviderUtils.NuGetMetadata[]
                {
                    new DependencyProviderUtils.NuGetMetadata
                    {
                        FileName       = $"{packageName}.{packageVersion}.nupkg",
                        PackageName    = packageName,
                        PackageVersion = packageVersion
                    }
                }
            };

            Assert.True(expectedMetadata.Equals(actualMetadata));
        }