示例#1
0
        private CompositionContainer Initialize()
        {
            var assemblyName = Assembly.GetEntryAssembly().FullName;

            var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            var catalog = new AggregateCatalog(
                new AssemblyCatalog(Assembly.Load(assemblyName)),
                new DirectoryCatalog(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "NuGet*.dll"));

            var container = new CompositionContainer(catalog);

            var settings = Settings.LoadDefaultSettings(null, null, null);

            container.ComposeExportedValue(settings);

            var sourceRepositoryProvider = new SourceRepositoryProvider(settings, Repository.Provider.GetVisualStudio());

            container.ComposeExportedValue <ISourceRepositoryProvider>(sourceRepositoryProvider);

            var testSolutionManager = new TestSolutionManager(@"c:\temp\test");
            var projectA            = testSolutionManager.AddNewMSBuildProject("projectA");

            container.ComposeExportedValue <ISolutionManager>(testSolutionManager);

            var sourceControlManager         = new TestSourceControlManager();
            var sourceControlManagerProvider = new TestSourceControlManagerProvider(sourceControlManager);

            container.ComposeExportedValue <ISourceControlManagerProvider>(sourceControlManagerProvider);

            container.ComposeParts(this);
            return(container);
        }
        public async Task InstallPackageAsync_WithSourceControlDisabled()
        {
            // Arrange
            var packageIdentity = new PackageIdentity("packageA", new NuGetVersion("1.0.0"));

            using (var randomTestSourcePath = TestDirectory.Create())
                using (var randomTestDestinationPath = TestDirectory.Create())
                {
                    var packageFileInfo = TestPackagesGroupedByFolder.GetLegacyTestPackage(
                        randomTestSourcePath,
                        packageIdentity.Id,
                        packageIdentity.Version.ToNormalizedString());

                    // Create a nuget.config file with source control disabled
                    File.WriteAllText(
                        Path.Combine(randomTestSourcePath, "nuget.config"),
                        @"<?xml version=""1.0"" encoding=""utf-8""?>
<configuration>
  <solution>
    <add key=""disableSourceControlIntegration"" value=""true"" />
  </solution >
</configuration>");

                    var settings = new Settings(randomTestSourcePath);

                    var folderNuGetProject  = new FolderNuGetProject(randomTestDestinationPath);
                    var packagePathResolver = new PackagePathResolver(randomTestDestinationPath);
                    var packageInstallPath  = packagePathResolver.GetInstallPath(packageIdentity);
                    var nupkgFilePath
                        = Path.Combine(packageInstallPath, packagePathResolver.GetPackageFileName(packageIdentity));
                    var testSourceControlManager = new TestSourceControlManager(settings);
                    var testNuGetProjectContext  = new TestNuGetProjectContext()
                    {
                        SourceControlManagerProvider = new TestSourceControlManagerProvider(testSourceControlManager)
                    };

                    var token = CancellationToken.None;
                    using (var packageStream = GetDownloadResourceResult(packageFileInfo))
                    {
                        // Act
                        await folderNuGetProject.InstallPackageAsync(
                            packageIdentity,
                            packageStream,
                            testNuGetProjectContext,
                            token);
                    }

                    // Assert
                    Assert.True(File.Exists(nupkgFilePath));

                    Assert.Equal(0, testSourceControlManager.PendAddedFiles.Count);
                }
        }
        public async Task InstallPackageAsync_WithSourceControlEnabled()
        {
            // Arrange
            var packageIdentity = new PackageIdentity("packageA", new NuGetVersion("1.0.0"));

            using (var randomTestSourcePath = TestDirectory.Create())
                using (var randomTestDestinationPath = TestDirectory.Create())
                {
                    var packageFileInfo = TestPackagesGroupedByFolder.GetLegacyTestPackage(
                        randomTestSourcePath,
                        packageIdentity.Id,
                        packageIdentity.Version.ToNormalizedString());

                    var folderNuGetProject  = new FolderNuGetProject(randomTestDestinationPath);
                    var packagePathResolver = new PackagePathResolver(randomTestDestinationPath);
                    var packageInstallPath  = packagePathResolver.GetInstallPath(packageIdentity);
                    var nupkgFilePath
                        = Path.Combine(packageInstallPath, packagePathResolver.GetPackageFileName(packageIdentity));
                    var testSourceControlManager = new TestSourceControlManager();
                    var testNuGetProjectContext  = new TestNuGetProjectContext()
                    {
                        SourceControlManagerProvider = new TestSourceControlManagerProvider(testSourceControlManager)
                    };

                    var token = CancellationToken.None;
                    using (var packageStream = GetDownloadResourceResult(packageFileInfo))
                    {
                        // Act
                        await folderNuGetProject.InstallPackageAsync(
                            packageIdentity,
                            packageStream,
                            testNuGetProjectContext,
                            token);
                    }

                    // Assert
                    Assert.True(File.Exists(nupkgFilePath));

                    Assert.Equal(5, testSourceControlManager.PendAddedFiles.Count);
                    Assert.True(testSourceControlManager.PendAddedFiles.Contains(nupkgFilePath));
                    var expectedEntries = new[]
                    {
                        "lib/test.dll",
                        "lib/net40/test40.dll",
                        "lib/net40/test40b.dll",
                        "lib/net45/test45.dll"
                    };

                    Assert.All(
                        expectedEntries.Select(e => Path.Combine(packageInstallPath, e.Replace('/', Path.DirectorySeparatorChar))),
                        item => Assert.Contains(item, testSourceControlManager.PendAddedFiles));
                }
        }