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 Twitter: @GanzhaVitalii
Version 1.9:
* Fixed defect #8: VS 2015 stops working when looking at Test Manager Window
Version 1.8: Version 1.8:
* Users now will be able to select their own sounds (Issue #5) * 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) * 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> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>12.0</OldToolsVersion>
<StartAction>Program</StartAction> <StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram> <StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments> <StartArguments>/rootsuffix Exp</StartArguments>
@ -66,11 +61,13 @@
<Reference Include="Microsoft.VisualStudio.Shell.Interop.12.0"> <Reference Include="Microsoft.VisualStudio.Shell.Interop.12.0">
<EmbedInteropTypes>true</EmbedInteropTypes> <EmbedInteropTypes>true</EmbedInteropTypes>
</Reference> </Reference>
<Reference Include="Microsoft.VisualStudio.TestWindow.Core"> <!--<Reference Include="Microsoft.VisualStudio.TestWindow.Core">
<HintPath>$(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestWindow.Core.dll</HintPath> <HintPath>$(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestWindow.Core.dll</HintPath>
</Reference> <Private>False</Private>
</Reference>-->
<Reference Include="Microsoft.VisualStudio.TestWindow.Interfaces"> <Reference Include="Microsoft.VisualStudio.TestWindow.Interfaces">
<HintPath>$(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestWindow.Interfaces.dll</HintPath> <HintPath>$(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestWindow.Interfaces.dll</HintPath>
<Private>False</Private>
</Reference> </Reference>
<Reference Include="Microsoft.VisualStudio.TextManager.Interop" /> <Reference Include="Microsoft.VisualStudio.TextManager.Interop" />
<Reference Include="Microsoft.VisualStudio.Shell.12.0" /> <Reference Include="Microsoft.VisualStudio.Shell.12.0" />
@ -218,10 +215,7 @@
<None Include="Key.snk" /> <None Include="Key.snk" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="ReleaseNotes.txt"> <Content Include="ReleaseNotes.txt" />
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
<None Include="Resources\test-failed.wav" /> <None Include="Resources\test-failed.wav" />
<Content Include="speaker.ico"> <Content Include="speaker.ico">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>

View File

@ -10,7 +10,6 @@ namespace VitaliiGanzha.VsDingExtension
using EnvDTE80; using EnvDTE80;
using Microsoft.VisualStudio.ComponentModelHost; using Microsoft.VisualStudio.ComponentModelHost;
using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.TestWindow.Controller;
using Microsoft.VisualStudio.TestWindow.Extensibility; using Microsoft.VisualStudio.TestWindow.Extensibility;
using Task = System.Threading.Tasks.Task; using Task = System.Threading.Tasks.Task;
@ -161,16 +160,30 @@ namespace VitaliiGanzha.VsDingExtension
{ {
if (Options.IsBeepOnTestComplete && operationStateChangedEventArgs.State.HasFlag(TestOperationStates.TestExecutionFinished)) if (Options.IsBeepOnTestComplete && operationStateChangedEventArgs.State.HasFlag(TestOperationStates.TestExecutionFinished))
{ {
var testOperation = ((TestRunRequest)operationStateChangedEventArgs.Operation); try
var isTestsFailed = testOperation.DominantTestState == TestState.Failed;
var eventType = isTestsFailed? EventType.TestsCompletedFailure : EventType.TestsCompletedSuccess;
if (Options.IsBeepOnTestFailed && isTestsFailed)
{ {
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"?> <?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"> <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> <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> <DisplayName>Visual Studio Ding extension</DisplayName>
<Description xml:space="preserve">This small extension will play notification sounds when following events occur: <Description xml:space="preserve">This small extension will play notification sounds when following events occur:
- Build Complete - Build Complete