Skip to content

Commit d42c28f

Browse files
committed
Merge branch 'Issue1830' of https://github.com/Hosch250/Rubberduck
2 parents 20f8033 + fdc2204 commit d42c28f

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

RetailCoder.VBE/UI/Command/RunAllTestsCommand.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System;
22
using System.Diagnostics;
3+
using System.Linq;
4+
using Microsoft.Vbe.Interop;
35
using Rubberduck.Parsing.VBA;
46
using Rubberduck.UI.UnitTesting;
57
using Rubberduck.UnitTesting;
@@ -11,17 +13,24 @@ namespace Rubberduck.UI.Command
1113
/// </summary>
1214
public class RunAllTestsCommand : CommandBase
1315
{
16+
private readonly VBE _vbe;
1417
private readonly ITestEngine _engine;
1518
private readonly TestExplorerModel _model;
1619
private readonly RubberduckParserState _state;
1720

18-
public RunAllTestsCommand(RubberduckParserState state, ITestEngine engine, TestExplorerModel model)
21+
public RunAllTestsCommand(VBE vbe, RubberduckParserState state, ITestEngine engine, TestExplorerModel model)
1922
{
23+
_vbe = vbe;
2024
_engine = engine;
2125
_model = model;
2226
_state = state;
2327
}
2428

29+
public override bool CanExecute(object parameter)
30+
{
31+
return _vbe.VBProjects.Cast<VBProject>().All(project => project.Mode == vbext_VBAMode.vbext_vm_Design);
32+
}
33+
2534
public override void Execute(object parameter)
2635
{
2736
if (!_state.IsDirty())

RetailCoder.VBE/UI/UnitTesting/TestExplorerViewModel.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ namespace Rubberduck.UI.UnitTesting
1818
{
1919
public class TestExplorerViewModel : ViewModelBase, INavigateSelection, IDisposable
2020
{
21+
private readonly VBE _vbe;
2122
private readonly RubberduckParserState _state;
2223
private readonly ITestEngine _testEngine;
2324
private readonly TestExplorerModel _model;
@@ -35,6 +36,7 @@ public TestExplorerViewModel(VBE vbe,
3536
IGeneralConfigService configService,
3637
IOperatingSystem operatingSystem)
3738
{
39+
_vbe = vbe;
3840
_state = state;
3941
_testEngine = testEngine;
4042
_testEngine.TestCompleted += TestEngineTestCompleted;
@@ -45,7 +47,7 @@ public TestExplorerViewModel(VBE vbe,
4547

4648
_navigateCommand = new NavigateCommand();
4749

48-
_runAllTestsCommand = new RunAllTestsCommand(state, testEngine, model);
50+
_runAllTestsCommand = new RunAllTestsCommand(vbe, state, testEngine, model);
4951
_runAllTestsCommand.RunCompleted += RunCompleted;
5052

5153
_addTestModuleCommand = new AddTestModuleCommand(vbe, state, newTestModuleCommand);
@@ -83,22 +85,26 @@ private void RunCompleted(object sender, TestRunEventArgs e)
8385

8486
private bool CanExecuteRunPassedTestsCommand(object obj)
8587
{
86-
return _model.Tests.Any(test => test.Result.Outcome == TestOutcome.Succeeded);
88+
return _vbe.VBProjects.Cast<VBProject>().All(project => project.Mode == vbext_VBAMode.vbext_vm_Design) &&
89+
_model.Tests.Any(test => test.Result.Outcome == TestOutcome.Succeeded);
8790
}
8891

8992
private bool CanExecuteRunFailedTestsCommand(object obj)
9093
{
91-
return _model.Tests.Any(test => test.Result.Outcome == TestOutcome.Failed);
94+
return _vbe.VBProjects.Cast<VBProject>().All(project => project.Mode == vbext_VBAMode.vbext_vm_Design) &&
95+
_model.Tests.Any(test => test.Result.Outcome == TestOutcome.Failed);
9296
}
9397

9498
private bool CanExecuteRunNotExecutedTestsCommand(object obj)
9599
{
96-
return _model.Tests.Any(test => test.Result.Outcome == TestOutcome.Unknown);
100+
return _vbe.VBProjects.Cast<VBProject>().All(project => project.Mode == vbext_VBAMode.vbext_vm_Design) &&
101+
_model.Tests.Any(test => test.Result.Outcome == TestOutcome.Unknown);
97102
}
98103

99104
private bool CanExecuteRepeatLastRunCommand(object obj)
100105
{
101-
return _model.LastRun.Any();
106+
return _vbe.VBProjects.Cast<VBProject>().All(project => project.Mode == vbext_VBAMode.vbext_vm_Design) &&
107+
_model.LastRun.Any();
102108
}
103109

104110
public event EventHandler<EventArgs> TestCompleted;

0 commit comments

Comments
 (0)