Skip to content

Commit 82b5bbf

Browse files
committed
Correct (Uni|I)gnoreSelectedGroup command behavior
1 parent 9598b1e commit 82b5bbf

File tree

1 file changed

+35
-17
lines changed

1 file changed

+35
-17
lines changed

Rubberduck.Core/UI/UnitTesting/TestExplorerViewModel.cs

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -358,9 +358,10 @@ private void ExecuteSelectedTestsCommand(object obj)
358358

359359
private void ExecuteRunSelectedGroupCommand(object obj)
360360
{
361-
var tests = MouseOverTest is null
362-
? MouseOverGroup
363-
: Tests.Groups.OfType<CollectionViewGroup>().FirstOrDefault(group => group.Items.Contains(MouseOverTest));
361+
//var tests = MouseOverTest is null
362+
// ? MouseOverGroup
363+
// : Tests.Groups.OfType<CollectionViewGroup>().FirstOrDefault(group => group.Items.Contains(MouseOverTest));
364+
var tests = GroupContainingSelectedTest(MouseOverTest);
364365

365366
if (tests is null)
366367
{
@@ -370,6 +371,13 @@ private void ExecuteRunSelectedGroupCommand(object obj)
370371
Model.ExecuteTests(tests.Items.OfType<TestMethodViewModel>().ToList());
371372
}
372373

374+
private CollectionViewGroup GroupContainingSelectedTest(TestMethodViewModel selectedTest)
375+
{
376+
return selectedTest is null
377+
? MouseOverGroup
378+
: Tests.Groups.OfType<CollectionViewGroup>().FirstOrDefault(group => group.Items.Contains(selectedTest));
379+
}
380+
373381
private void ExecuteCancelTestRunCommand(object parameter)
374382
{
375383
Model.CancelTestRun();
@@ -389,24 +397,16 @@ private void ExecuteIgnoreTestCommand(object parameter)
389397
{
390398
var rewriteSession = RewritingManager.CheckOutCodePaneSession();
391399

392-
var testMethod = parameter == null
393-
? _mousedOverTestMethod
394-
: (parameter as TestMethodViewModel).Method;
395-
396-
AnnotationUpdater.AddAnnotation(rewriteSession, testMethod.Declaration, Parsing.Annotations.AnnotationType.IgnoreTest);
400+
AnnotationUpdater.AddAnnotation(rewriteSession, _mousedOverTestMethod.Declaration, Parsing.Annotations.AnnotationType.IgnoreTest);
397401

398402
rewriteSession.TryRewrite();
399403
}
400404

401405
private void ExecuteUnignoreTestCommand(object parameter)
402406
{
403407
var rewriteSession = RewritingManager.CheckOutCodePaneSession();
404-
405-
var testMethod = parameter == null
406-
? _mousedOverTestMethod
407-
: (parameter as TestMethodViewModel).Method;
408408

409-
var ignoreTestAnnotations = testMethod.Declaration.Annotations
409+
var ignoreTestAnnotations = _mousedOverTestMethod.Declaration.Annotations
410410
.Where(iannotations => iannotations.AnnotationType == Parsing.Annotations.AnnotationType.IgnoreTest);
411411

412412
foreach (var ignoreTestAnnotation in ignoreTestAnnotations)
@@ -419,18 +419,36 @@ private void ExecuteUnignoreTestCommand(object parameter)
419419

420420
private void ExecuteIgnoreGroupCommand (object parameter)
421421
{
422-
foreach (TestMethodViewModel test in _mouseOverGroup.Items)
422+
var rewriteSession = RewritingManager.CheckOutCodePaneSession();
423+
var testGroup = GroupContainingSelectedTest(MouseOverTest);
424+
foreach (TestMethodViewModel test in testGroup.Items)
423425
{
424-
ExecuteIgnoreTestCommand(test);
426+
// var testMethod = parameter == null
427+
// ? _mousedOverTestMethod
428+
// : (parameter as TestMethodViewModel).Method;
429+
AnnotationUpdater.AddAnnotation(rewriteSession, test.Method.Declaration, Parsing.Annotations.AnnotationType.IgnoreTest);
425430
}
431+
432+
rewriteSession.TryRewrite();
426433
}
427434

428435
private void ExecuteUnignoreGroupCommand(object parameter)
429436
{
430-
foreach (TestMethodViewModel test in _mouseOverGroup.Items)
437+
var rewriteSession = RewritingManager.CheckOutCodePaneSession();
438+
var testGroup = GroupContainingSelectedTest(MouseOverTest);
439+
foreach (TestMethodViewModel test in testGroup.Items)
431440
{
432-
ExecuteUnignoreTestCommand(test);
441+
//ExecuteUnignoreTestCommand(test);
442+
var ignoreTestAnnotations = test.Method.Declaration.Annotations
443+
.Where(iannotations => iannotations.AnnotationType == Parsing.Annotations.AnnotationType.IgnoreTest);
444+
445+
foreach (var ignoreTestAnnotation in ignoreTestAnnotations)
446+
{
447+
AnnotationUpdater.RemoveAnnotation(rewriteSession, ignoreTestAnnotation);
448+
}
433449
}
450+
451+
rewriteSession.TryRewrite();
434452
}
435453

436454
private void ExecuteCopyResultsCommand(object parameter)

0 commit comments

Comments
 (0)