Ejemplo n.º 1
0
        private static async Task <bool> ApplyActionAsync(ProjectSystemReferenceUpdate referenceUpdate, AbstractReferenceHandler referenceHandler,
                                                          ConfiguredProject selectedConfiguredProject, CancellationToken cancellationToken)
        {
            bool wasUpdated = false;

            cancellationToken.ThrowIfCancellationRequested();

            if (referenceUpdate.Action == ProjectSystemUpdateAction.SetTreatAsUsed ||
                referenceUpdate.Action == ProjectSystemUpdateAction.UnsetTreatAsUsed)
            {
                wasUpdated =
                    await referenceHandler.UpdateReferenceAsync(selectedConfiguredProject, referenceUpdate, cancellationToken);
            }
            else
            {
                if (await referenceHandler.CanRemoveReferenceAsync(selectedConfiguredProject, referenceUpdate, cancellationToken))
                {
                    await referenceHandler.RemoveReferenceAsync(selectedConfiguredProject, referenceUpdate.ReferenceInfo);

                    wasUpdated = true;
                }
            }

            return(wasUpdated);
        }
Ejemplo n.º 2
0
        public async Task UpdateReferencesAsync_GetUpdateReferenceOperationAsync_FailedToCreateOperation()
        {
            var referenceCleanupService = Setup();
            var referenceUpdate1        =
                new ProjectSystemReferenceUpdate((ProjectSystemUpdateAction)3, new ProjectSystemReferenceInfo(ProjectSystemReferenceType.Package, "UnknownPackage", true));

            var operation = await referenceCleanupService.GetUpdateReferenceOperationAsync(_projectPath1, referenceUpdate1, CancellationToken.None);

            Assert.Equal(ReferenceCleanupService.NullCommand, operation);
        }
Ejemplo n.º 3
0
        public async Task UpdateReferenceAsync_TryUpdateReferenceAsync_ShouldThrowException()
        {
            var referenceCleanupService = Setup();
            var referenceUpdate1        =
                new ProjectSystemReferenceUpdate(ProjectSystemUpdateAction.Remove, new ProjectSystemReferenceInfo(ProjectSystemReferenceType.Package, _package3, true));

            await Assert.ThrowsAsync <NotImplementedException>(() =>
                                                               referenceCleanupService.TryUpdateReferenceAsync(_projectPath1, referenceUpdate1, CancellationToken.None)
                                                               );
        }
        public async Task UpdateReferencesAsync_RemovePackages_CannotRemovePackageThatDoesntExist()
        {
            var referenceCleanupService = Setup();
            var referenceUpdate1        =
                new ProjectSystemReferenceUpdate(ProjectSystemUpdateAction.Remove, new ProjectSystemReferenceInfo(ProjectSystemReferenceType.Package, "UnknownPackage", true));

            bool wasUpdated = await referenceCleanupService.TryUpdateReferenceAsync(_projectPath1, referenceUpdate1, CancellationToken.None);

            _packageServicesMock1 !.Verify(c => c.RemoveAsync(It.IsAny <string>()), Times.Never);
            Assert.False(wasUpdated);
        }
        public async Task UpdateReferencesAsync_RemovePackages_RemovedPackageMarkedAsUnused()
        {
            var referenceCleanupService = Setup();
            var referenceUpdate1        =
                new ProjectSystemReferenceUpdate(ProjectSystemUpdateAction.Remove, new ProjectSystemReferenceInfo(ProjectSystemReferenceType.Package, _package3, true));

            bool wasUpdated = await referenceCleanupService.TryUpdateReferenceAsync(_projectPath1, referenceUpdate1, CancellationToken.None);

            _packageServicesMock1 !.Verify(c => c.RemoveAsync(_package3), Times.Once);
            Assert.True(wasUpdated);
        }
        public async Task UpdateReferencesAsync_RemovePackages_CannotRemovedPackageIsNotInReferences()
        {
            var referenceCleanupService = Setup();
            var referenceUpdate1        =
                new ProjectSystemReferenceUpdate(ProjectSystemUpdateAction.Remove, new ProjectSystemReferenceInfo(ProjectSystemReferenceType.Package, _package1, true));

            bool wasUpdated = await referenceCleanupService.TryUpdateReferenceAsync(_projectPath1, referenceUpdate1, CancellationToken.None);

            _packageServicesMock1 !.Verify(c => c.RemoveAsync(_package1), Times.Never);
            Assert.False(wasUpdated);
        }
        public async Task UpdateReferenceAsync_TreatAsUsed_ReferencesChangedToTreatAsUnused()
        {
            s_item = null;
            var referenceCleanupService = Setup();
            var referenceUpdate1        =
                new ProjectSystemReferenceUpdate(ProjectSystemUpdateAction.UnsetTreatAsUsed, new ProjectSystemReferenceInfo(ProjectSystemReferenceType.Package, _package3, true));

            bool wasUpdated = await referenceCleanupService.TryUpdateReferenceAsync(_projectPath1, referenceUpdate1, CancellationToken.None);

            s_item !.As <IProjectItem>().Verify(c => c.Metadata.SetPropertyValueAsync(ProjectReference.TreatAsUsedProperty, PropertySerializer.SimpleTypes.ToString(false), null), Times.Once);
            Assert.True(wasUpdated);
        }
Ejemplo n.º 8
0
        public async Task <bool> TryUpdateReferenceAsync(string projectPath, ProjectSystemReferenceUpdate referenceUpdate, CancellationToken cancellationToken)
        {
            bool wasUpdated = false;

            cancellationToken.ThrowIfCancellationRequested();

            var activeConfiguredProject = await GetActiveConfiguredProjectByPathAsync(projectPath, cancellationToken);

            var referenceHandler = s_mapReferenceTypeToHandler[referenceUpdate.ReferenceInfo.ReferenceType];

            if (referenceHandler != null)
            {
                wasUpdated = await ApplyActionAsync(referenceUpdate, referenceHandler, activeConfiguredProject, cancellationToken);
            }

            return(wasUpdated);
        }
Ejemplo n.º 9
0
 public RemoveReferenceCommand(AbstractReferenceHandler abstractReferenceHandler, ConfiguredProject selectedConfiguredProject, ProjectSystemReferenceUpdate referenceUpdate)
 {
     _referenceHandler          = abstractReferenceHandler;
     _selectedConfiguredProject = selectedConfiguredProject;
     _itemSpecification         = referenceUpdate.ReferenceInfo.ItemSpecification;
 }
Ejemplo n.º 10
0
 public Task <bool> TryUpdateReferenceAsync(string projectPath,
                                            ProjectSystemReferenceUpdate referenceUpdate, CancellationToken cancellationToken)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 11
0
 private static IProjectSystemUpdateReferenceOperation?CreateCommand(ProjectSystemReferenceUpdate referenceUpdate,
                                                                     AbstractReferenceHandler referenceHandler,
                                                                     ConfiguredProject selectedConfiguredProject, CancellationToken cancellationToken) =>
 referenceUpdate.Action switch
 {
Ejemplo n.º 12
0
        /// <summary>
        /// Gets an operation that can update the project’s references by removing or marking references as
        /// TreatAsUsed in the project file.
        /// </summary>
        public async Task <IProjectSystemUpdateReferenceOperation> GetUpdateReferenceOperationAsync(string projectPath, ProjectSystemReferenceUpdate referenceUpdate,
                                                                                                    CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var activeConfiguredProject = await GetActiveConfiguredProjectByPathAsync(projectPath, cancellationToken);

            var referenceHandler = s_mapReferenceTypeToHandler[referenceUpdate.ReferenceInfo.ReferenceType];

            IProjectSystemUpdateReferenceOperation?command = null;

            if (referenceHandler != null)
            {
                command = CreateCommand(referenceUpdate, referenceHandler, activeConfiguredProject, cancellationToken);
            }

            return(command ?? NullCommand);
        }