Skip to content

Commit

Permalink
Merge pull request dotnet#25151 from sharwell/enable-integration-tests
Browse files Browse the repository at this point in the history
Enable integration tests
  • Loading branch information
sharwell committed Mar 3, 2018
2 parents ab029c2 + f9be191 commit bd16c7f
Show file tree
Hide file tree
Showing 15 changed files with 92 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using Microsoft.VisualStudio.IntegrationTest.Utilities.OutOfProcess;
using System;
using System.Threading;
using System.Windows.Automation;

namespace Roslyn.VisualStudio.IntegrationTests
{
Expand All @@ -21,6 +22,7 @@ public abstract class AbstractIntegrationTest : IDisposable
protected AbstractIntegrationTest(
VisualStudioInstanceFactory instanceFactory)
{
Automation.TransactionTimeout = 20000;
_visualStudioContext = instanceFactory.GetNewOrUsedInstance(SharedIntegrationHostFixture.RequiredPackageIds);
VisualStudio = _visualStudioContext.Instance;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@ public void Method(int a, string b) { }
}", actualText);
}

[Fact (Skip = "https://github.com/dotnet/roslyn/issues/17640"),
Trait(Traits.Feature, Traits.Features.ChangeSignature)]
[Fact, Trait(Traits.Feature, Traits.Features.ChangeSignature)]
public void VerifyReorderParameters()
{
SetUpEditor(@"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public CSharpCodeActions(VisualStudioInstanceFactory instanceFactory)
{
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/18295"), Trait(Traits.Feature, Traits.Features.CodeActionsGenerateMethod)]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsGenerateMethod)]
public void GenerateMethodInClosedFile()
{
var project = new ProjectUtils.Project(ProjectName);
Expand Down Expand Up @@ -52,7 +52,10 @@ public static void Main(string[] args)
public class Foo
{
internal void Bar() => throw new NotImplementedException();
internal void Bar()
{
throw new NotImplementedException();
}
}
");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ public CSharpFindReferences(VisualStudioInstanceFactory instanceFactory)
{
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/17634"),
Trait(Traits.Feature, Traits.Features.FindReferences)]
[Fact, Trait(Traits.Feature, Traits.Features.FindReferences)]
public void FindReferencesToCtor()
{
SetUpEditor(@"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public async Task WpfInteractionAsync()
VisualStudio.InteractiveWindow.SubmitText("b = null; w.Close(); w = null;");
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/19232")]
[Fact]
public void TypingHelpDirectiveWorks()
{
VisualStudio.Workspace.SetUseSuggestionMode(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,21 @@ protected override void Dispose(bool disposing)
if (disposing)
{
VisualStudio.Workspace.SetUseSuggestionMode(false);
VisualStudio.InteractiveWindow.ClearReplText();
VisualStudio.InteractiveWindow.Reset();
}

base.Dispose(disposing);
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void VerifyDefaultUsingStatements()
{
VisualStudio.InteractiveWindow.SubmitText("Console.WriteLine(42);");
VisualStudio.InteractiveWindow.WaitForLastReplOutput("42");
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void VerifyCodeActionsNotAvailableInPreviousSubmission()
{
VisualStudio.InteractiveWindow.InsertCode("Console.WriteLine(42);");
Expand Down Expand Up @@ -61,7 +62,7 @@ public void International()
Assert.Equal("‎(field‎)‎ العربية‎ func", s);
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void HighlightRefsSingleSubmissionVerifyRenameTagsShowUpWhenInvokedOnUnsubmittedText()
{
VisualStudio.InteractiveWindow.InsertCode("int someint; someint = 22; someint = 23;");
Expand All @@ -72,7 +73,7 @@ public void HighlightRefsSingleSubmissionVerifyRenameTagsShowUpWhenInvokedOnUnsu
VisualStudio.InteractiveWindow.VerifyTags(WellKnownTagNames.MarkerFormatDefinition_HighlightedDefinition, 1);
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void HighlightRefsSingleSubmissionVerifyRenameTagsGoAway()
{
VisualStudio.InteractiveWindow.InsertCode("int someint; someint = 22; someint = 23;");
Expand All @@ -87,7 +88,7 @@ public void HighlightRefsSingleSubmissionVerifyRenameTagsGoAway()
VisualStudio.InteractiveWindow.VerifyTags(WellKnownTagNames.MarkerFormatDefinition_HighlightedWrittenReference, 0);
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void HighlightRefsMultipleSubmisionsVerifyRenameTagsShowUpWhenInvokedOnSubmittedText()
{
VisualStudio.InteractiveWindow.SubmitText("class Goo { }");
Expand All @@ -99,7 +100,7 @@ public void HighlightRefsMultipleSubmisionsVerifyRenameTagsShowUpWhenInvokedOnSu
VisualStudio.InteractiveWindow.VerifyTags(WellKnownTagNames.MarkerFormatDefinition_HighlightedReference, 1);
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void HighlightRefsMultipleSubmisionsVerifyRenameTagsShowUpOnUnsubmittedText()
{
VisualStudio.InteractiveWindow.SubmitText("class Goo { }");
Expand All @@ -111,7 +112,7 @@ public void HighlightRefsMultipleSubmisionsVerifyRenameTagsShowUpOnUnsubmittedTe
VisualStudio.InteractiveWindow.VerifyTags(WellKnownTagNames.MarkerFormatDefinition_HighlightedReference, 1);
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void HighlightRefsMultipleSubmisionsVerifyRenameTagsShowUpOnTypesWhenInvokedOnSubmittedText()
{
VisualStudio.InteractiveWindow.SubmitText("class Goo { }");
Expand All @@ -123,7 +124,7 @@ public void HighlightRefsMultipleSubmisionsVerifyRenameTagsShowUpOnTypesWhenInvo
VisualStudio.InteractiveWindow.VerifyTags(WellKnownTagNames.MarkerFormatDefinition_HighlightedReference, 2);
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void HighlightRefsMultipleSubmisionsVerifyRenameTagsShowUpOnTypesWhenInvokedOnUnsubmittedText()
{
VisualStudio.InteractiveWindow.SubmitText("class Goo { }");
Expand All @@ -135,7 +136,7 @@ public void HighlightRefsMultipleSubmisionsVerifyRenameTagsShowUpOnTypesWhenInvo
VisualStudio.InteractiveWindow.VerifyTags(WellKnownTagNames.MarkerFormatDefinition_HighlightedReference, 2);
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void HighlightRefsMultipleSubmisionsVerifyRenameTagsGoAwayWhenInvokedOnUnsubmittedText()
{
VisualStudio.InteractiveWindow.SubmitText("class Goo { }");
Expand All @@ -147,7 +148,7 @@ public void HighlightRefsMultipleSubmisionsVerifyRenameTagsGoAwayWhenInvokedOnUn
VisualStudio.InteractiveWindow.VerifyTags(WellKnownTagNames.MarkerFormatDefinition_HighlightedReference, 0);
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void HighlightRefsMultipleSubmisionsVerifyRenameTagsOnRedefinedVariable()
{
VisualStudio.InteractiveWindow.SubmitText("string abc = null;");
Expand All @@ -160,7 +161,7 @@ public void HighlightRefsMultipleSubmisionsVerifyRenameTagsOnRedefinedVariable()
VisualStudio.InteractiveWindow.VerifyTags(WellKnownTagNames.MarkerFormatDefinition_HighlightedReference, 0);
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/20219")]
[Fact]
public void DisabledCommandsPart1()
{
VisualStudio.InteractiveWindow.InsertCode(@"public class Class
Expand Down Expand Up @@ -195,7 +196,7 @@ public void Method(int x)
Assert.False(VisualStudio.IsCommandAvailable(WellKnownCommandNames.Refactor_ReorderParameters));
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/6587, No support of quick actions in ETA scenario")]
[Fact]
public void AddUsing()
{
VisualStudio.InteractiveWindow.InsertCode("typeof(ArrayList)");
Expand All @@ -207,10 +208,11 @@ public void AddUsing()
"using System.Collections;");

VisualStudio.InteractiveWindow.Verify.LastReplInput(@"using System.Collections;
typeof(ArrayList)");
}

[Fact(Skip = "https://github.com/dotnet/roslyn/issues/6587, No support of quick actions in ETA scenario")]
[Fact]
public void QualifyName()
{
VisualStudio.InteractiveWindow.InsertCode("typeof(ArrayList)");
Expand All @@ -220,7 +222,7 @@ public void QualifyName()
VisualStudio.InteractiveWindow.Verify.CodeActions(
new string[] { "using System.Collections;", "System.Collections.ArrayList" },
"System.Collections.ArrayList");
VisualStudio.InteractiveWindow.Verify.LastReplInput("System.Collections.ArrayList");
VisualStudio.InteractiveWindow.Verify.LastReplInput("typeof(System.Collections.ArrayList)");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public BasicFindReferences(VisualStudioInstanceFactory instanceFactory)
{
}

[Fact(Skip="https://github.com/dotnet/roslyn/issues/17631"), Trait(Traits.Feature, Traits.Features.FindReferences)]
[Fact, Trait(Traits.Feature, Traits.Features.FindReferences)]
public void FindReferencesToLocals()
{
SetUpEditor(@"
Expand Down Expand Up @@ -60,7 +60,7 @@ End Class
});
}

[Fact(Skip="https://github.com/dotnet/roslyn/issues/17631"), Trait(Traits.Feature, Traits.Features.FindReferences)]
[Fact, Trait(Traits.Feature, Traits.Features.FindReferences)]
public void FindReferencesToSharedField()
{
SetUpEditor(@"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ public static AutomationElement GetOpenDialogById(int visualStudioHWnd, string d
return dialogAutomationElement;
}

public static AutomationElement FindDialogByAutomationId(int visualStudioHWnd, string dialogAutomationId, bool isOpen)
public static AutomationElement FindDialogByAutomationId(int visualStudioHWnd, string dialogAutomationId, bool isOpen, bool wait = true)
{
return Retry(
() => FindDialogWorker(visualStudioHWnd, dialogAutomationId),
stoppingCondition: automationElement => isOpen ? automationElement != null : automationElement == null,
stoppingCondition: automationElement => !wait || (isOpen ? automationElement != null : automationElement == null),
delay: TimeSpan.FromMilliseconds(250));
}

Expand Down Expand Up @@ -141,7 +141,7 @@ private static AutomationElement FindDialogByPropertyWorker(
new PropertyCondition(nameProperty, propertyValue),
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));

return vsAutomationElement.FindFirst(TreeScope.Descendants, elementCondition);
return vsAutomationElement.FindFirst(TreeScope.Children, elementCondition);
}

private static T Retry<T>(Func<T> action, Func<T, bool> stoppingCondition, TimeSpan delay)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@
using Microsoft.CodeAnalysis.CodeFixes;
using Microsoft.CodeAnalysis.Editor.Implementation.Suggestions;
using Microsoft.VisualStudio.Language.Intellisense;
using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.VisualStudio.Text;
using Microsoft.VisualStudio.Text.Classification;
using Microsoft.VisualStudio.Text.Editor;
using Microsoft.VisualStudio.Text.Operations;
using Microsoft.VisualStudio.Text.Tagging;
using OLECMDEXECOPT = Microsoft.VisualStudio.OLE.Interop.OLECMDEXECOPT;

namespace Microsoft.VisualStudio.IntegrationTest.Utilities.InProcess
{
Expand Down Expand Up @@ -58,7 +60,19 @@ public string GetCurrentCompletionItem()
});

public void ShowLightBulb()
=> InvokeOnUIThread(() => GetDTE().ExecuteCommand(WellKnownCommandNames.View_ShowSmartTag));
{
InvokeOnUIThread(() =>
{
var shell = GetGlobalService<SVsUIShell, IVsUIShell>();
var cmdGroup = typeof(VSConstants.VSStd2KCmdID).GUID;
var cmdExecOpt = OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER;
const VSConstants.VSStd2KCmdID ECMD_SMARTTASKS = (VSConstants.VSStd2KCmdID)147;
var cmdID = ECMD_SMARTTASKS;
object obj = null;
shell.PostExecCommand(cmdGroup, (uint)cmdID, (uint)cmdExecOpt, ref obj);
});
}

public void WaitForLightBulbSession()
=> ExecuteOnActiveView(view =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,18 @@ public void VerifyClosed()
DialogHelpers.FindDialogByAutomationId(GetMainWindowHWnd(), ChangeSignatureDialogAutomationId, isOpen: false);
}

public bool CloseWindow()
{
var dialog = DialogHelpers.FindDialogByAutomationId(GetMainWindowHWnd(), ChangeSignatureDialogAutomationId, isOpen: true, wait: false);
if (dialog == null)
{
return false;
}

ClickCancel();
return true;
}

public void Invoke()
=> VisualStudioInstance.Editor.SendKeys(new KeyPress(VirtualKey.R, ShiftState.Ctrl), new KeyPress(VirtualKey.V, ShiftState.Ctrl));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,18 @@ public void VerifyClosed()
}
}

public bool CloseWindow()
{
var dialog = DialogHelpers.FindDialogByAutomationId(GetMainWindowHWnd(), ExtractInterfaceDialogID, isOpen: true, wait: false);
if (dialog == null)
{
return false;
}

ClickCancel();
return true;
}

/// <summary>
/// Clicks the "OK" button and waits for the Extract Interface operation to complete.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,18 @@ public void VerifyClosed()
}
}

public bool CloseWindow()
{
var dialog = DialogHelpers.FindDialogByAutomationId(GetMainWindowHWnd(), GenerateTypeDialogID, isOpen: true, wait: false);
if (dialog == null)
{
return false;
}

ClickCancel();
return true;
}

public void SetAccessibility(string accessibility)
{
DialogHelpers.SelectComboBoxItem(GetMainWindowHWnd(), GenerateTypeDialogID, "AccessList", accessibility);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,6 @@ public void CodeActions(
FixAllScope? fixAllScope = null,
bool blockUntilComplete = true)
{
// Wait for the light bulb to appear before forcing it to drop down, otherwise the UI thread can
// deadlock in SuggestedActionsSource.
_textViewWindow.WaitForLightBulbSession();
_textViewWindow.ShowLightBulb();
_textViewWindow.WaitForLightBulbSession();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,12 @@ public void CleanUp()
Workspace.CleanUpWaitingService();
Workspace.CleanUpWorkspace();
SolutionExplorer.CleanUpOpenSolution();

// Close any windows leftover from previous (failed) tests
InteractiveWindow.CloseInteractiveWindow();
ChangeSignatureDialog.CloseWindow();
GenerateTypeDialog.CloseWindow();
ExtractInterfaceDialog.CloseWindow();
}

public void Close(bool exitHostProcess = true)
Expand Down
5 changes: 5 additions & 0 deletions src/Workspaces/Core/Portable/Log/KeyValueLogMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ protected override string CreateMessage()

protected override void FreeCore()
{
if (this == NoProperty)
{
return;
}

if (_map != null)
{
SharedPools.Default<Dictionary<string, object>>().ClearAndFree(_map);
Expand Down

0 comments on commit bd16c7f

Please sign in to comment.