Skip to content

Commit 49bbb1c

Browse files
authored
Merge pull request #2080 from Hosch250/Issue2065
Restrict states allowed to run tests. Close #2065
2 parents f6e6ccb + 1aba768 commit 49bbb1c

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

RetailCoder.VBE/UI/Command/RunAllTestsCommand.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Rubberduck.UI.UnitTesting;
77
using Rubberduck.UnitTesting;
88
using Rubberduck.VBEditor.Extensions;
9+
using System.Linq;
910

1011
namespace Rubberduck.UI.Command
1112
{
@@ -27,9 +28,11 @@ public RunAllTestsCommand(VBE vbe, RubberduckParserState state, ITestEngine engi
2728
_state = state;
2829
}
2930

31+
private static readonly ParserState[] AllowedRunStates = { ParserState.ResolvedDeclarations, ParserState.ResolvingReferences, ParserState.Ready };
32+
3033
protected override bool CanExecuteImpl(object parameter)
3134
{
32-
return _vbe.IsInDesignMode();
35+
return _vbe.IsInDesignMode() && AllowedRunStates.Contains(_state.Status);
3336
}
3437

3538
protected override void ExecuteImpl(object parameter)

RetailCoder.VBE/UI/UnitTesting/TestExplorerViewModel.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,24 +84,26 @@ private void RunCompleted(object sender, TestRunEventArgs e)
8484
TotalDuration = e.Duration;
8585
}
8686

87+
private static readonly ParserState[] AllowedRunStates = { ParserState.ResolvedDeclarations, ParserState.ResolvingReferences, ParserState.Ready };
88+
8789
private bool CanExecuteRunPassedTestsCommand(object obj)
8890
{
89-
return _vbe.IsInDesignMode() && _model.Tests.Any(test => test.Result.Outcome == TestOutcome.Succeeded);
91+
return _vbe.IsInDesignMode() && AllowedRunStates.Contains(_state.Status) && _model.Tests.Any(test => test.Result.Outcome == TestOutcome.Succeeded);
9092
}
9193

9294
private bool CanExecuteRunFailedTestsCommand(object obj)
9395
{
94-
return _vbe.IsInDesignMode() && _model.Tests.Any(test => test.Result.Outcome == TestOutcome.Failed);
96+
return _vbe.IsInDesignMode() && AllowedRunStates.Contains(_state.Status) && _model.Tests.Any(test => test.Result.Outcome == TestOutcome.Failed);
9597
}
9698

9799
private bool CanExecuteRunNotExecutedTestsCommand(object obj)
98100
{
99-
return _vbe.IsInDesignMode() && _model.Tests.Any(test => test.Result.Outcome == TestOutcome.Unknown);
101+
return _vbe.IsInDesignMode() && AllowedRunStates.Contains(_state.Status) && _model.Tests.Any(test => test.Result.Outcome == TestOutcome.Unknown);
100102
}
101103

102104
private bool CanExecuteRepeatLastRunCommand(object obj)
103105
{
104-
return _vbe.IsInDesignMode() && _model.LastRun.Any();
106+
return _vbe.IsInDesignMode() && AllowedRunStates.Contains(_state.Status) && _model.LastRun.Any();
105107
}
106108

107109
public event EventHandler<EventArgs> TestCompleted;

0 commit comments

Comments
 (0)