public void NewDisableTestAdapterCommand_should_bind_Text_property_to_CurrentProject_status() { // Arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); var projName = fixture.Create<string>(); { var m = fixture.Freeze<Mock<Project>>(); m.Setup(_ => _.Name).Returns(projName); } var vm = new PrigPackageViewModel(); var menuCommand = PrigPackage.NewDisableTestAdapterCommand(vm); menuCommand.Text = null; // Act vm.CurrentProject.Value = null; var defaultText = menuCommand.Text; vm.CurrentProject.Value = fixture.Freeze<Project>(); var projectSelectedText = menuCommand.Text; // Assert Assert.IsNotNull(defaultText); Assert.AreNotEqual(defaultText, projectSelectedText); Assert.That(projectSelectedText, Is.StringMatching(projName)); }
public virtual void BeforeQueryStatusTestAdapter(PrigPackageViewModel vm) { if (vm.IsTestAdapterEnabled.Value) return; var proj = MonitoringSelectionService.GetCurrentProject(); vm.SetToCurrentProjectIfSupported(proj); }
public Project SetToCurrentProjectIfSupported_(IFixture fixture) { // Arrange var vm = new PrigPackageViewModel(); // Act vm.SetToCurrentProjectIfSupported(fixture.Freeze<Project>()); // Assert fixture.Freeze<Mock<Project>>().VerifyAll(); return vm.CurrentProject.Value; }
public virtual void EditPrigIndirectionSettings(PrigPackageViewModel vm) { var projItem = MonitoringSelectionService.GetSelectedItem<ProjectItem>(); var editorialInclude = Regex.Replace(projItem.Name, @"(.*)\.v\d+\.\d+\.\d+\.v\d+\.\d+\.\d+\.\d+\.prig", "$1"); EditPrigIndirectionSettingsCore(vm, editorialInclude); }
public virtual void AddPrigAssembly(PrigPackageViewModel vm) { AddPrigAssemblyCore(vm, MonitoringSelectionService.GetSelectedItem<Reference5>().Name); }
bool DisableTestAdapterCore(PrigPackageViewModel vm) { vm.BeginProjectWideProcessProgress(ProjectWideProcesses.TestAdapterDisabling); var machinePreq = new MachinePrerequisite(Resources.NuGetRootPackageVersion); machinePreq.ProfilerStatusChecking += profLoc => vm.ReportProfilerStatusCheckingProgress(25u, profLoc); if (!MachineWideInstaller.HasBeenInstalled(machinePreq)) { vm.ShowSkippedProjectWideProcessMessage(SkippedReasons.NotRegisteredYet, null); vm.EndSkippedProjectWideProcessProgress(SkippedReasons.NotRegisteredYet, null); return false; } var command = @" Import-Module ([IO.Path]::Combine($env:URASANDESU_PRIG_PACKAGE_FOLDER, 'tools\Urasandesu.Prig')) Disable-PrigTestAdapter "; var mci = new ManagementCommandInfo(command); mci.CommandExecuting += () => vm.ReportProcessingProjectWideProcessProgress(50u, null); mci.CommandExecuted += () => vm.EndCompletedProjectWideProcessProgress(null); ManagementCommandExecutor.Execute(mci); return true; }
public virtual void UnregisterPrig(PrigPackageViewModel vm) { var umwPkg = new MachineWideUninstallation(Resources.NuGetRootPackageVersion); umwPkg.Preparing += () => vm.BeginMachineWideProcessProgress(MachineWideProcesses.Uninstalling); umwPkg.ProfilerStatusChecking += profLoc => vm.ReportProfilerStatusCheckingProgress(10u, profLoc); umwPkg.DefaultSourceUninstalling += pkgName => vm.ReportDefaultSourceProcessingProgress(20u, pkgName, null); umwPkg.DefaultSourceUninstalled += stdout => vm.ReportDefaultSourceProcessedProgress(30u, stdout); umwPkg.ProfilerUnregistering += profLoc => vm.ReportProfilerProcessingProgress(40u, profLoc); umwPkg.ProfilerUnregistered += stdout => vm.ReportProfilerProcessedProgress(50u, stdout); umwPkg.EnvironmentVariableUnregistering += name => vm.ReportEnvironmentVariableProcessingProgress(60u, name, null); umwPkg.EnvironmentVariableUnregistered += name => vm.ReportEnvironmentVariableProcessedProgress(70u); umwPkg.NuGetSourceUnregistering += name => vm.ReportNuGetSourceProcessingProgress(80u, name, null); umwPkg.NuGetSourceUnregistered += stdout => vm.ReportNuGetSourceProcessedProgress(90u, stdout); umwPkg.Completed += result => { switch (result) { case MachineWideProcessResults.Skipped: vm.ShowSkippedMachineWideProcessMessage(SkippedReasons.AlreadyRegistered); vm.EndSkippedMachineWideProcessProgress(SkippedReasons.AlreadyRegistered); break; case MachineWideProcessResults.Completed: var restarts = vm.ConfirmRestartingVisualStudioToTakeEffect(); vm.EndCompletedMachineWideProcessProgress(); if (!restarts) return; ProcessMixin.RestartCurrentProcess(); break; } }; MachineWideInstaller.Uninstall(umwPkg); }
public virtual void PrepareUnregisteringPrig(PrigPackageViewModel vm) { vm.BeginMachineWideProcessProgress(MachineWideProcesses.Uninstalling); var machinePreq = new MachinePrerequisite(Resources.NuGetRootPackageVersion); machinePreq.ProfilerStatusChecking += profLoc => vm.ReportProfilerStatusCheckingProgress(50u, profLoc); if (!MachineWideInstaller.HasBeenInstalled(machinePreq)) { vm.ShowSkippedMachineWideProcessMessage(SkippedReasons.AlreadyRegistered); vm.EndSkippedMachineWideProcessProgress(SkippedReasons.AlreadyRegistered); return; } if (!WindowsIdentity.GetCurrent().IsElevated()) { vm.ShowVisualStudioHasNotBeenElevatedYetMessage(); if (ProcessMixin.RestartCurrentProcessWith(_ => { _.Verb = "runas"; })) return; vm.EndSkippedMachineWideProcessProgress(SkippedReasons.CanceledByUser); } else { UnregisterPrig(vm); } }
public void EndSkippedProjectWideProcessProgress_should_report_the_progress_to_statusbar( [Values( ProjectWideProcesses.PrigAssemblyAdding, ProjectWideProcesses.PrigIndirectionSettingsEditing, ProjectWideProcesses.PrigAssemblyRemoving, ProjectWideProcesses.TestAdapterEnabling, ProjectWideProcesses.TestAdapterDisabling)] ProjectWideProcesses pwProc) { // Arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); var include = fixture.Create<string>(); var vm = new PrigPackageViewModel(); vm.BeginProjectWideProcessProgress(pwProc); // Act vm.EndSkippedProjectWideProcessProgress(SkippedReasons.NotRegisteredYet, include); // Assert var progState = vm.Statusbar.ProgressState.Value; Assert.AreEqual(0u, progState.Value); Assert.IsNullOrEmpty(progState.Label); Assert.IsNotNullOrEmpty(vm.Statusbar.Text.Value); }
public void ReportPackageReferenceAddedProgress_should_report_the_progress_to_statusbar() { // Arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); var prog = fixture.Create<uint>(); var id = fixture.Create<string>(); { var m = new Mock<IVsPackageMetadata>(MockBehavior.Strict); m.Setup(_ => _.Id).Returns(id); fixture.Inject(m); } var vm = new PrigPackageViewModel(); // Act vm.ReportPackageReferenceAddedProgress(prog, fixture.Freeze<IVsPackageMetadata>()); // Assert var progState = vm.Statusbar.ProgressState.Value; Assert.AreEqual(prog, progState.Value); Assert.That(progState.Label, Is.StringMatching(id)); }
public void ReportPackagePreparingProgress_should_report_the_progress_to_statusbar() { // Arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); var prog = fixture.Create<uint>(); var vm = new PrigPackageViewModel(); // Act vm.ReportPackagePreparingProgress(prog); // Assert var progState = vm.Statusbar.ProgressState.Value; Assert.AreEqual(prog, progState.Value); Assert.IsNotNullOrEmpty(progState.Label); }
public void ShowVisualStudioHasNotBeenElevatedYetMessage_should_show_the_message_to_message_box() { // Arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); var vm = new PrigPackageViewModel(); // Act vm.ShowVisualStudioHasNotBeenElevatedYetMessage(); // Assert var msgBox = vm.MessageBoxParameter.Value; Assert.AreEqual(OLEMSGBUTTON.OLEMSGBUTTON_OK, msgBox.Button); Assert.AreEqual(OLEMSGICON.OLEMSGICON_INFO, msgBox.Icon); Assert.IsNotNullOrEmpty(msgBox.Text); }
public void EndCompletedMachineWideProcessProgress_should_report_the_progress_to_statusbar( [Values(MachineWideProcesses.Installing, MachineWideProcesses.Uninstalling)] MachineWideProcesses mwProc) { // Arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); var vm = new PrigPackageViewModel(); vm.BeginMachineWideProcessProgress(mwProc); // Act vm.EndCompletedMachineWideProcessProgress(); // Assert var progState = vm.Statusbar.ProgressState.Value; Assert.AreEqual(0u, progState.Value); Assert.IsNullOrEmpty(progState.Label); Assert.IsNotNullOrEmpty(vm.Statusbar.Text.Value); }
public void ConfirmRestartingVisualStudioToTakeEffect_should_show_the_message_to_message_box( [Values(MachineWideProcesses.Installing, MachineWideProcesses.Uninstalling)] MachineWideProcesses mwProc, [Values(VSConstants.MessageBoxResult.IDYES, VSConstants.MessageBoxResult.IDNO)] VSConstants.MessageBoxResult response) { // Arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); var vm = new PrigPackageViewModel(); vm.BeginMachineWideProcessProgress(mwProc); vm.MessageBoxParameter.Subscribe(_ => _.Result = response); // Act var result = vm.ConfirmRestartingVisualStudioToTakeEffect(); // Assert Assert.AreEqual(response == VSConstants.MessageBoxResult.IDYES, result); var msgBox = vm.MessageBoxParameter.Value; Assert.AreEqual(OLEMSGBUTTON.OLEMSGBUTTON_YESNO, msgBox.Button); Assert.AreEqual(OLEMSGICON.OLEMSGICON_WARNING, msgBox.Icon); Assert.IsNotNullOrEmpty(msgBox.Text); }
public void ShowSkippedMachineWideProcessMessage_should_show_the_message_to_message_box( [Values(MachineWideProcesses.Installing, MachineWideProcesses.Uninstalling)] MachineWideProcesses mwProc, [Values(SkippedReasons.AlreadyRegistered, SkippedReasons.CanceledByUser)] SkippedReasons reason) { // Arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); var vm = new PrigPackageViewModel(); vm.BeginMachineWideProcessProgress(mwProc); // Act vm.ShowSkippedMachineWideProcessMessage(reason); // Assert var msgBox = vm.MessageBoxParameter.Value; Assert.AreEqual(OLEMSGBUTTON.OLEMSGBUTTON_OK, msgBox.Button); Assert.AreEqual(OLEMSGICON.OLEMSGICON_INFO, msgBox.Icon); Assert.IsNotNullOrEmpty(msgBox.Text); }
public virtual void OnBuildDone(PrigPackageViewModel vm) { if (!vm.HasEnabledTestAdapter()) DisableTestAdapter(vm); else EnableTestAdapterCore(vm); }
public virtual void OnProjectRemoved(PrigPackageViewModel vm, Project proj) { if (!vm.HasEnabledTestAdapter(proj)) return; DisableTestAdapter(vm); }
public void ShowSkippedProjectWideProcessMessage_should_report_the_progress_to_statusbar( [Values( ProjectWideProcesses.PrigAssemblyAdding, ProjectWideProcesses.PrigIndirectionSettingsEditing, ProjectWideProcesses.PrigAssemblyRemoving, ProjectWideProcesses.TestAdapterEnabling, ProjectWideProcesses.TestAdapterDisabling)] ProjectWideProcesses pwProc) { // Arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); var include = fixture.Create<string>(); var vm = new PrigPackageViewModel(); vm.BeginProjectWideProcessProgress(pwProc); // Act vm.ShowSkippedProjectWideProcessMessage(SkippedReasons.NotRegisteredYet, include); // Assert var msgBox = vm.MessageBoxParameter.Value; Assert.AreEqual(OLEMSGBUTTON.OLEMSGBUTTON_OK, msgBox.Button); Assert.AreEqual(OLEMSGICON.OLEMSGICON_WARNING, msgBox.Icon); Assert.IsNotNullOrEmpty(msgBox.Text); }
void RegisterPrig(PrigPackageViewModel vm) { var mwInstl = new MachineWideInstallation(Resources.NuGetRootPackageVersion); mwInstl.Preparing += () => vm.BeginMachineWideProcessProgress(MachineWideProcesses.Installing); mwInstl.ProfilerStatusChecking += profLoc => vm.ReportProfilerStatusCheckingProgress(8u, profLoc); mwInstl.NuGetPackageCreating += pkgName => vm.ReportNuGetPackageCreatingProgress(17u, pkgName); mwInstl.NuGetPackageCreated += stdout => vm.ReportNuGetPackageCreatedProgress(25u, stdout); mwInstl.NuGetSourceRegistering += (path, name) => vm.ReportNuGetSourceProcessingProgress(33u, path, name); mwInstl.NuGetSourceRegistered += stdout => vm.ReportNuGetSourceProcessedProgress(42u, stdout); mwInstl.EnvironmentVariableRegistering += (name, value) => vm.ReportEnvironmentVariableProcessingProgress(50u, name, value); mwInstl.EnvironmentVariableRegistered += (name, value) => vm.ReportEnvironmentVariableProcessedProgress(58u); mwInstl.ProfilerRegistering += profLoc => vm.ReportProfilerProcessingProgress(67u, profLoc); mwInstl.ProfilerRegistered += stdout => vm.ReportProfilerProcessedProgress(75u, stdout); mwInstl.DefaultSourceInstalling += (pkgName, src) => vm.ReportDefaultSourceProcessingProgress(83u, pkgName, src); mwInstl.DefaultSourceInstalled += stdout => vm.ReportDefaultSourceProcessedProgress(92u, stdout); mwInstl.Completed += result => { switch (result) { case MachineWideProcessResults.Skipped: vm.ShowSkippedMachineWideProcessMessage(SkippedReasons.AlreadyRegistered); vm.EndSkippedMachineWideProcessProgress(SkippedReasons.AlreadyRegistered); break; case MachineWideProcessResults.Completed: var restarts = vm.ConfirmRestartingVisualStudioToTakeEffect(); vm.EndCompletedMachineWideProcessProgress(); if (!restarts) return; ProcessMixin.RestartCurrentProcess(); break; } }; MachineWideInstaller.Install(mwInstl); }
public void ConfirmRemovingPrigAssembly_should_show_the_message_to_message_box( [Values(VSConstants.MessageBoxResult.IDYES, VSConstants.MessageBoxResult.IDNO)] VSConstants.MessageBoxResult response) { // Arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); var deletionalInclude = fixture.Create<string>(); var vm = new PrigPackageViewModel(); vm.MessageBoxParameter.Subscribe(_ => _.Result = response); // Act var result = vm.ConfirmRemovingPrigAssembly(deletionalInclude); // Assert Assert.AreEqual(response == VSConstants.MessageBoxResult.IDYES, result); var msgBox = vm.MessageBoxParameter.Value; Assert.AreEqual(OLEMSGBUTTON.OLEMSGBUTTON_YESNO, msgBox.Button); Assert.AreEqual(OLEMSGICON.OLEMSGICON_QUERY, msgBox.Icon); Assert.IsNotNullOrEmpty(msgBox.Text); }
void RemovePrigAssemblyCore(PrigPackageViewModel vm, string deletionalInclude) { vm.BeginProjectWideProcessProgress(ProjectWideProcesses.PrigAssemblyRemoving); var machinePreq = new MachinePrerequisite(Resources.NuGetRootPackageVersion); machinePreq.ProfilerStatusChecking += profLoc => vm.ReportProfilerStatusCheckingProgress(13u, profLoc); if (!MachineWideInstaller.HasBeenInstalled(machinePreq)) { vm.ShowSkippedProjectWideProcessMessage(SkippedReasons.NotRegisteredYet, deletionalInclude); vm.EndSkippedProjectWideProcessProgress(SkippedReasons.NotRegisteredYet, deletionalInclude); return; } if (!vm.ConfirmRemovingPrigAssembly(deletionalInclude)) return; var proj = MonitoringSelectionService.GetCurrentProject(); var pwPkg = new ProjectWidePackage(Resources.NuGetRootPackageId, Resources.NuGetRootPackageVersion, proj); pwPkg.PackagePreparing += () => vm.ReportPackagePreparingProgress(25u); pwPkg.PackageInstalling += metadata => vm.ReportPackageInstallingProgress(50u, metadata); pwPkg.PackageInstalled += metadata => vm.ReportPackageInstalledProgress(50u, metadata); pwPkg.PackageReferenceAdded += metadata => vm.ReportPackageReferenceAddedProgress(50u, metadata); ProjectWideInstaller.Install(pwPkg); var command = string.Format( @" Import-Module ([IO.Path]::Combine($env:URASANDESU_PRIG_PACKAGE_FOLDER, 'tools\Urasandesu.Prig')) Start-PrigSetup -DeletionalInclude {0} -Project $Project ", deletionalInclude); var mci = new ManagementCommandInfo(command, proj); mci.CommandExecuting += () => vm.ReportProcessingProjectWideProcessProgress(75u, deletionalInclude); mci.CommandExecuted += () => { vm.ShowCompletedProjectWideProcessMessage(deletionalInclude); vm.EndCompletedProjectWideProcessProgress(deletionalInclude); }; ManagementCommandExecutor.Execute(mci); }
static MenuCommand NewAddPrigAssemblyCommand(PrigPackageViewModel vm) { var commandId = new CommandID(GuidList.AddPrigAssemblyGroup, (int)PkgCmdIDList.AddPrigAssemblyCommand); var handler = new EventHandler((sender, e) => vm.AddPrigAssemblyCommand.Execute(sender)); var menuCommand = new MenuCommand(handler, commandId); return menuCommand; }
public virtual void AddPrigAssemblyForMSCorLib(PrigPackageViewModel vm) { AddPrigAssemblyCore(vm, "mscorlib"); }
internal static OleMenuCommand NewDisableTestAdapterCommand(PrigPackageViewModel vm) { var commandId = new CommandID(GuidList.MainMenuGroup, (int)PkgCmdIDList.DisableTestAdapterCommand); var handler = new EventHandler((sender, e) => vm.DisableTestAdapterCommand.Execute(sender)); var menuCommand = new OleMenuCommand(handler, commandId); vm.DisableTestAdapterCommand.CanExecuteChanged += (sender, e) => menuCommand.Enabled = ((ICommand)sender).CanExecute(menuCommand); menuCommand.Enabled = false; var text = PrigPackageResources.GetString("DisableTestAdapterMenu"); vm.CurrentProject.Subscribe( proj => menuCommand.Text = proj == null ? text : string.Format(PrigPackageResources.GetString("_0_For_1_MenuFormat"), text, proj.Name)); return menuCommand; }
public virtual void EnableTestAdapter(PrigPackageViewModel vm) { if (EnableTestAdapterCore(vm)) vm.IsTestAdapterEnabled.Value = true; }
static MenuCommand NewUnregisterPrigCommand(PrigPackageViewModel vm) { var commandId = new CommandID(GuidList.RegistrationMenuGroup, (int)PkgCmdIDList.UnregisterPrigCommand); var handler = new EventHandler((sender, e) => vm.UnregisterPrigCommand.Execute(sender)); var menuCommand = new MenuCommand(handler, commandId); return menuCommand; }
public virtual void DisableTestAdapter(PrigPackageViewModel vm) { if (DisableTestAdapterCore(vm)) vm.IsTestAdapterEnabled.Value = false; }
static OleMenuCommand NewRemovePrigAssemblyCommand(PrigPackageViewModel vm) { var commandId = new CommandID(GuidList.EditPrigIndirectionSettingsGroup, (int)PkgCmdIDList.RemovePrigAssemblyCommand); var handler = new EventHandler((sender, e) => vm.RemovePrigAssemblyCommand.Execute(sender)); var menuCommand = new OleMenuCommand(handler, commandId); vm.RemovePrigAssemblyCommand.CanExecuteChanged += (sender, e) => menuCommand.Enabled = ((ICommand)sender).CanExecute(menuCommand); menuCommand.BeforeQueryStatus += (sender, e) => vm.EditPrigIndirectionSettingsBeforeQueryStatusCommand.Execute(sender); vm.IsEditPrigIndirectionSettingsCommandVisible.Subscribe(_ => menuCommand.Visible = _); return menuCommand; }
public virtual void RemovePrigAssembly(PrigPackageViewModel vm) { var projItem = MonitoringSelectionService.GetSelectedItem<ProjectItem>(); var deletionalInclude = Regex.Replace(projItem.Name, @"(.*)\.prig$", "$1"); RemovePrigAssemblyCore(vm, deletionalInclude); }
public virtual void BeforeQueryStatusEditPrigIndirectionSettings(PrigPackageViewModel vm) { var projItem = MonitoringSelectionService.GetSelectedItem<ProjectItem>(); vm.SetEditPrigIndirectionSettingsCommandVisibility(projItem); }