fix for issue #8

This commit is contained in:
Vitalii Ganzha 2016-01-07 22:59:35 -08:00
parent 14fbf8f7c7
commit 2b43b35598
4 changed files with 31 additions and 20 deletions

View File

@ -15,6 +15,10 @@ This is an open source project, join!
Twitter: @GanzhaVitalii
Version 1.9:
* Fixed defect #8: VS 2015 stops working when looking at Test Manager Window
Version 1.8:
* Users now will be able to select their own sounds (Issue #5)
* There will be a different sound when any of the tests have failed (Issue #7)

View File

@ -5,11 +5,6 @@
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<TargetFrameworkProfile />
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>12.0</OldToolsVersion>
<StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments>
@ -66,11 +61,13 @@
<Reference Include="Microsoft.VisualStudio.Shell.Interop.12.0">
<EmbedInteropTypes>true</EmbedInteropTypes>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestWindow.Core">
<!--<Reference Include="Microsoft.VisualStudio.TestWindow.Core">
<HintPath>$(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestWindow.Core.dll</HintPath>
</Reference>
<Private>False</Private>
</Reference>-->
<Reference Include="Microsoft.VisualStudio.TestWindow.Interfaces">
<HintPath>$(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestWindow.Interfaces.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.TextManager.Interop" />
<Reference Include="Microsoft.VisualStudio.Shell.12.0" />
@ -218,10 +215,7 @@
<None Include="Key.snk" />
</ItemGroup>
<ItemGroup>
<Content Include="ReleaseNotes.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
<Content Include="ReleaseNotes.txt" />
<None Include="Resources\test-failed.wav" />
<Content Include="speaker.ico">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>

View File

@ -10,7 +10,6 @@ namespace VitaliiGanzha.VsDingExtension
using EnvDTE80;
using Microsoft.VisualStudio.ComponentModelHost;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.TestWindow.Controller;
using Microsoft.VisualStudio.TestWindow.Extensibility;
using Task = System.Threading.Tasks.Task;
@ -161,16 +160,30 @@ namespace VitaliiGanzha.VsDingExtension
{
if (Options.IsBeepOnTestComplete && operationStateChangedEventArgs.State.HasFlag(TestOperationStates.TestExecutionFinished))
{
var testOperation = ((TestRunRequest)operationStateChangedEventArgs.Operation);
var isTestsFailed = testOperation.DominantTestState == TestState.Failed;
var eventType = isTestsFailed? EventType.TestsCompletedFailure : EventType.TestsCompletedSuccess;
if (Options.IsBeepOnTestFailed && isTestsFailed)
try
{
HandleEventSafe(eventType, "Test execution failed!", ToolTipIcon.Error);
// Issue #8: VS 2015 stops working when looking at Test Manager Window #8
// This extention can't take dependency on Microsoft.VisualStudio.TestWindow.Core.dll
// Because it will crash VS 2015. But DominantTestState is defined in that assembly.
// So as a workaround - cast it to dynamic (ewww, but alternative - to create new project/build and publish it separately.)
var testOperation = (dynamic)(operationStateChangedEventArgs.Operation);
var dominantTestState = (TestState)testOperation.DominantTestState;
var isTestsFailed = dominantTestState == TestState.Failed;
var eventType = isTestsFailed ? EventType.TestsCompletedFailure : EventType.TestsCompletedSuccess;
if (Options.IsBeepOnTestFailed && isTestsFailed)
{
HandleEventSafe(eventType, "Test execution failed!", ToolTipIcon.Error);
}
else
{
HandleEventSafe(eventType, "Test execution has been completed.");
}
}
else
catch (Exception ex)
{
HandleEventSafe(eventType, "Test execution has been completed.");
ActivityLog.LogError(GetType().FullName, ex.Message);
// Unable to get dominate test status, beep default sound for test
HandleEventSafe(EventType.TestsCompletedSuccess, "Test execution has been completed.");
}
}
}

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Id="26ba08d0-0d25-4479-8684-3054dd122876" Version="1.8" Language="en-US" Publisher="Vitalii Ganzha" />
<Identity Id="26ba08d0-0d25-4479-8684-3054dd122876" Version="1.9" Language="en-US" Publisher="Vitalii Ganzha" />
<DisplayName>Visual Studio Ding extension</DisplayName>
<Description xml:space="preserve">This small extension will play notification sounds when following events occur:
- Build Complete