void HandleDocumentParsed(object sender, EventArgs e) { if (!EnableUnitTestEditorIntegration) { return; } src.Cancel(); src = new CancellationTokenSource(); var token = src.Token; ThreadPool.QueueUserWorkItem(delegate { if (token.IsCancellationRequested) { return; } var foundTests = GatherUnitTests(); if (foundTests == null) { return; } Application.Invoke(delegate { var editor = document.Editor; if (editor == null) { return; } var textEditor = editor.Parent; if (textEditor == null) { return; } var actionMargin = textEditor.ActionMargin; if (actionMargin == null) { return; } if (actionMargin.IsVisible ^ (foundTests.Count > 0)) { textEditor.QueueDraw(); } actionMargin.IsVisible |= foundTests.Count > 0; foreach (var oldMarker in currentMarker) { editor.Document.RemoveMarker(oldMarker); } foreach (var foundTest in foundTests) { if (token.IsCancellationRequested) { return; } var unitTestMarker = new UnitTestMarker(foundTest, document); currentMarker.Add(unitTestMarker); editor.Document.AddMarker(foundTest.LineNumber, unitTestMarker); } }); }); }
void HandleDocumentParsed(object sender, EventArgs e) { if (!AnalysisOptions.EnableUnitTestEditorIntegration) { return; } src.Cancel(); src = new CancellationTokenSource(); var token = src.Token; ThreadPool.QueueUserWorkItem(delegate { var resolver = document.GetSharedResolver(); if (resolver == null || resolver.Result == null) { return; } var visitor = new NUnitVisitor(resolver.Result); try { visitor.VisitSyntaxTree(document.ParsedDocument.GetAst <SyntaxTree> ()); } catch (Exception ex) { LoggingService.LogError("Exception while analyzing ast for unit tests.", ex); return; } if (token.IsCancellationRequested) { return; } Application.Invoke(delegate { var editor = document.Editor; if (editor == null) { return; } var textEditor = editor.Parent; if (textEditor == null) { return; } var actionMargin = textEditor.ActionMargin; if (actionMargin == null) { return; } if (actionMargin.IsVisible ^ (visitor.FoundTests.Count > 0)) { textEditor.QueueDraw(); } actionMargin.IsVisible = visitor.FoundTests.Count > 0; foreach (var oldMarker in currentMarker) { editor.Document.RemoveMarker(oldMarker); } foreach (var foundTest in visitor.FoundTests) { if (token.IsCancellationRequested) { return; } var unitTestMarker = new UnitTestMarker(foundTest, document); currentMarker.Add(unitTestMarker); editor.Document.AddMarker(foundTest.LineNumber, unitTestMarker); } }); }); }
void HandleDocumentParsed (object sender, EventArgs e) { if (!AnalysisOptions.EnableUnitTestEditorIntegration) return; src.Cancel (); src = new CancellationTokenSource (); var token = src.Token; ThreadPool.QueueUserWorkItem (delegate { if (token.IsCancellationRequested) return; var foundTests = GatherUnitTests (); if (foundTests == null) return; Application.Invoke (delegate { var editor = document.Editor; if (editor == null) return; var textEditor = editor.Parent; if (textEditor == null) return; var actionMargin = textEditor.ActionMargin; if (actionMargin == null) return; if (actionMargin.IsVisible ^ (foundTests.Count > 0)) textEditor.QueueDraw (); actionMargin.IsVisible = foundTests.Count > 0; foreach (var oldMarker in currentMarker) editor.Document.RemoveMarker (oldMarker); foreach (var foundTest in foundTests) { if (token.IsCancellationRequested) return; var unitTestMarker = new UnitTestMarker (foundTest, document); currentMarker.Add (unitTestMarker); editor.Document.AddMarker (foundTest.LineNumber, unitTestMarker); } }); }); }
void HandleDocumentParsed (object sender, EventArgs e) { if (!AnalysisOptions.EnableUnitTestEditorIntegration) return; src.Cancel (); src = new CancellationTokenSource (); var token = src.Token; ThreadPool.QueueUserWorkItem (delegate { var resolver = document.GetSharedResolver (); if (resolver == null || resolver.Result == null) return; var visitor = new NUnitVisitor (resolver.Result); try { visitor.VisitSyntaxTree (document.ParsedDocument.GetAst<SyntaxTree> ()); } catch (Exception ex) { LoggingService.LogError ("Exception while analyzing ast for unit tests.", ex); return; } if (token.IsCancellationRequested) return; Application.Invoke (delegate { var editor = document.Editor; if (editor == null) return; var textEditor = editor.Parent; if (textEditor == null) return; var actionMargin = textEditor.ActionMargin; if (actionMargin == null) return; if (actionMargin.IsVisible ^ (visitor.FoundTests.Count > 0)) textEditor.QueueDraw (); actionMargin.IsVisible = visitor.FoundTests.Count > 0; foreach (var oldMarker in currentMarker) editor.Document.RemoveMarker (oldMarker); foreach (var foundTest in visitor.FoundTests) { if (token.IsCancellationRequested) return; var unitTestMarker = new UnitTestMarker (foundTest, document); currentMarker.Add (unitTestMarker); editor.Document.AddMarker (foundTest.LineNumber, unitTestMarker); } }); }); }