private async Task <QuickFix[]> GetBuildCommandAsync(string source) { var testFile = new TestFile("dummy.cs", source); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var rh = SharedOmniSharpTestHost.GetRequestHandler <BuildCommandService>(OmniSharpEndpoints.BuildCommand); var cc = rh._config.MSBuildPath = new BuildPath() { Path = "path\\to\\msbuild" }; var point = testFile.Content.GetPointFromPosition(); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var request = new BuildCommandRequest { Type = BuildType.Build, Line = point.Line, Column = point.Offset, FileName = testFile.FileName, Buffer = testFile.Content.Code }; var response = await requestHandler.Handle(request); return(response.QuickFixes.ToArray()); }
private async Task AssertTextChanges(string source, params LinePositionSpanTextChange[] expected) { var testFile = new TestFile("dummy.cs", source); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var span = testFile.Content.GetSpans().Single(); var range = testFile.Content.GetRangeFromSpan(span); var request = new FormatRangeRequest() { Buffer = testFile.Content.Code, FileName = testFile.FileName, Line = range.Start.Line, Column = range.Start.Offset, EndLine = range.End.Line, EndColumn = range.End.Offset }; var requestHandler = SharedOmniSharpTestHost.GetRequestHandler <FormatRangeService>(OmniSharpEndpoints.FormatRange); var response = await requestHandler.Handle(request); var actual = response.Changes.ToArray(); Assert.Equal(expected.Length, actual.Length); for (var i = 0; i < expected.Length; i++) { Assert.Equal(expected[i].NewText, actual[i].NewText); Assert.Equal(expected[i].StartLine, actual[i].StartLine); Assert.Equal(expected[i].StartColumn, actual[i].StartColumn); Assert.Equal(expected[i].EndLine, actual[i].EndLine); Assert.Equal(expected[i].EndColumn, actual[i].EndColumn); } }
public async Task CodeCheckSpecifiedFileOnly(string filename) { var testFile = new TestFile(filename, "class C { int n = true; }"); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var messages = new List <DiagnosticMessage>(); var emitter = new DiagnosticTestEmitter(messages); var forwarder = new DiagnosticEventForwarder(emitter) { IsEnabled = true }; var service = new CSharpDiagnosticService(SharedOmniSharpTestHost.Workspace, forwarder, this.LoggerFactory); service.QueueDiagnostics(filename); await emitter.Emitted; Assert.Single(messages); var message = messages.First(); Assert.Single(message.Results); var result = message.Results.First(); Assert.Single(result.QuickFixes); Assert.Equal(filename, result.FileName); }
public async Task CheckAllFiles(string filename1, string filename2) { var testFile1 = new TestFile(filename1, "class C1 { int n = true; }"); var testFile2 = new TestFile(filename2, "class C2 { int n = true; }"); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile1, testFile2); var messages = new List <DiagnosticMessage>(); var emitter = new DiagnosticTestEmitter(messages); var forwarder = new DiagnosticEventForwarder(emitter); var service = new CSharpDiagnosticService(SharedOmniSharpTestHost.Workspace, forwarder, this.LoggerFactory); var controller = new DiagnosticsService(SharedOmniSharpTestHost.Workspace, forwarder, service); var response = await controller.Handle(new DiagnosticsRequest()); await emitter.Emitted; Assert.Single(messages); var message = messages.First(); Assert.Equal(2, message.Results.Count()); var a = message.Results.First(x => x.FileName == filename1); Assert.Single(a.QuickFixes); Assert.Equal(filename1, a.FileName); var b = message.Results.First(x => x.FileName == filename2); Assert.Single(b.QuickFixes); Assert.Equal(filename2, b.FileName); }
public async Task OmitsNamespaceForTypesInGlobalNamespace() { const string source = @"namespace Bar { class Foo {} } class Baz {}"; var testFile = new TestFile("dummy.cs", source); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var requestInNormalNamespace = new QuickInfoRequest { FileName = testFile.FileName, Line = 1, Column = 19 }; var responseInNormalNamespace = await requestHandler.Handle(requestInNormalNamespace); var requestInGlobalNamespace = new QuickInfoRequest { FileName = testFile.FileName, Line = 3, Column = 19 }; var responseInGlobalNamespace = await requestHandler.Handle(requestInGlobalNamespace); Assert.Equal("```csharp\nclass Bar.Foo\n```", responseInNormalNamespace.Markdown); Assert.Equal("```csharp\nclass Baz\n```", responseInGlobalNamespace.Markdown); }
private async Task AssertTextChanges(string source, string expected) { var testFile = new TestFile("dummy.cs", source); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var span = testFile.Content.GetSpans().Single(); var range = testFile.Content.GetRangeFromSpan(span); var request = new FormatRangeRequest() { Buffer = testFile.Content.Code, FileName = testFile.FileName, Line = range.Start.Line, Column = range.Start.Offset, EndLine = range.End.Line, EndColumn = range.End.Offset }; var requestHandler = SharedOmniSharpTestHost.GetRequestHandler <FormatRangeService>(OmniSharpEndpoints.FormatRange); var response = await requestHandler.Handle(request); var actual = response.Changes.ToArray(); var oldText = testFile.Content.Text; var textChanges = GetTextChanges(oldText, response.Changes); var actualText = oldText.WithChanges(textChanges).ToString(); Assert.Equal(expected.Replace("\r\n", "\n"), actualText.Replace("\r\n", "\n")); }
public async Task ParameterDocumentation() { const string source = @"namespace N { class C { /// <param name=""i"">Some content <see cref=""C""/></param> public void M(int i) { _ = i; } } }"; var testFile = new TestFile("dummy.cs", source); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var request = new QuickInfoRequest { FileName = testFile.FileName, Line = 7, Column = 17 }; var response = await requestHandler.Handle(request); Assert.Equal("```csharp\n(parameter) int i\n```\n\nSome content `C`", response.Markdown); }
private Document CreateTestDocumentId() { string fileName = $"{Guid.NewGuid()}"; var newFile = new TestFile(fileName, ""); _ = SharedOmniSharpTestHost.AddFilesToWorkspace(newFile).Single(); return(SharedOmniSharpTestHost.Workspace.GetDocument(fileName)); }
private async Task <QuickFix[]> GetFilesAsync(params TestFile[] testFiles) { SharedOmniSharpTestHost.AddFilesToWorkspace(testFiles); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var response = await requestHandler.Handle(new GotoFileRequest()); return(response.QuickFixes.ToArray()); }
private async Task <QuickFixResponse> FindSymbolsAsync(string code, string filename) { var testFile = new TestFile(filename, code); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); return(await requestHandler.Handle(null)); }
private async Task <FileMemberElement[]> GetStructureAsync(string source, string fileName = "d.cs") { var testFile = new TestFile(fileName, source); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var nodes = await StructureComputer.Compute(SharedOmniSharpTestHost.Workspace.GetDocuments(testFile.FileName)); return(nodes.ToArray()); }
private async Task <QuickFixResponse> FindSymbolsWithFilterAsync(string code, string filter) { var testFile = new TestFile("dummy.cs", code); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); return(await requestHandler.Handle(new FindSymbolsRequest { Filter = filter })); }
private async Task <RenameResponse> PerformRename( TestFile[] testFiles, string renameTo, bool wantsTextChanges = false, bool applyTextChanges = true, bool updateBuffer = false) { SharedOmniSharpTestHost.AddFilesToWorkspace(testFiles); return(await PerformRename(SharedOmniSharpTestHost, testFiles, renameTo, wantsTextChanges, applyTextChanges, updateBuffer)); }
public async Task ReturnsResultsForSourceGenerators() { const string Source = @" public class {|generatedClassName:Generated|} { public int {|propertyName:Property|} { get; set; } } "; const string FileName = "real.cs"; TestFile generatedTestFile = new("GeneratedFile.cs", Source); var testFile = new TestFile(FileName, @" class C { public void M(Generated g) { _ = g.P$$roperty; } } "); TestHelpers.AddProjectToWorkspace(SharedOmniSharpTestHost.Workspace, "project.csproj", new[] { "netcoreapp3.1" }, new[] { testFile }, analyzerRefs: ImmutableArray.Create <AnalyzerReference>(new TestGeneratorReference( context => context.AddSource("GeneratedFile", generatedTestFile.Content.Code)))); var point = testFile.Content.GetPointFromPosition(); var gotoDefRequest = CreateRequest(FileName, point.Line, point.Offset, wantMetadata: true); var gotoDefHandler = GetRequestHandler(SharedOmniSharpTestHost); var response = await gotoDefHandler.Handle(gotoDefRequest); var info = GetInfo(response).Single(); Assert.NotNull(info.SourceGeneratorInfo); var expectedSpan = generatedTestFile.Content.GetSpans("propertyName").Single(); var expectedRange = generatedTestFile.Content.GetRangeFromSpan(expectedSpan); Assert.Equal(expectedRange.Start.Line, info.Line); Assert.Equal(expectedRange.Start.Offset, info.Column); var sourceGeneratedFileHandler = SharedOmniSharpTestHost.GetRequestHandler <SourceGeneratedFileService>(OmniSharpEndpoints.SourceGeneratedFile); var sourceGeneratedRequest = new SourceGeneratedFileRequest { DocumentGuid = info.SourceGeneratorInfo.DocumentGuid, ProjectGuid = info.SourceGeneratorInfo.ProjectGuid }; var sourceGeneratedFileResponse = await sourceGeneratedFileHandler.Handle(sourceGeneratedRequest); Assert.NotNull(sourceGeneratedFileResponse); Assert.Equal(generatedTestFile.Content.Code, sourceGeneratedFileResponse.Source); Assert.Equal(@"OmniSharp.Roslyn.CSharp.Tests\OmniSharp.Roslyn.CSharp.Tests.TestSourceGenerator\GeneratedFile.cs", sourceGeneratedFileResponse.SourceName.Replace("/", @"\")); }
private async Task <QuickInfoResponse> GetTypeLookUpResponse(int line, int column) { SharedOmniSharpTestHost.AddFilesToWorkspace(s_testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var request = new QuickInfoRequest { FileName = s_testFile.FileName, Line = line, Column = column }; return(await requestHandler.Handle(request)); }
public async Task CheckAllFiles() { SharedOmniSharpTestHost.AddFilesToWorkspace( new TestFile("a.cs", "class C1 { int n = true; }"), new TestFile("b.cs", "class C2 { int n = true; }")); var handler = GetRequestHandler(SharedOmniSharpTestHost); var quickFixes = await handler.Handle(new CodeCheckRequest()); Assert.Equal(2, quickFixes.QuickFixes.Count()); }
private async Task <FixUsingsResponse> RunFixUsingsAsync(string code) { SharedOmniSharpTestHost.AddFilesToWorkspace(new TestFile(TestFileName, code)); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var request = new FixUsingsRequest { FileName = TestFileName }; return(await requestHandler.Handle(request)); }
protected async Task <TGotoDefinitionResponse> GetResponseAsync(TestFile[] testFiles, bool wantMetadata) { SharedOmniSharpTestHost.AddFilesToWorkspace(testFiles); var source = testFiles.Single(tf => tf.Content.HasPosition); var point = source.Content.GetPointFromPosition(); var request = CreateRequest(source.FileName, point.Line, point.Offset, timeout: 60000, wantMetadata: wantMetadata); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); return(await requestHandler.Handle(request)); }
private Task <BlockStructureResponse> GetResponseAsync(TestFile testFile) { SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var request = new BlockStructureRequest { FileName = testFile.FileName, }; var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); return(requestHandler.Handle(request)); }
public async Task CodeCheckSpecifiedFileOnly() { SharedOmniSharpTestHost.AddFilesToWorkspace(new TestFile("a.cs", "class C { int n = true; }")); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var quickFixes = await requestHandler.Handle(new CodeCheckRequest() { FileName = "a.cs" }); Assert.Single(quickFixes.QuickFixes); Assert.Equal("a.cs", quickFixes.QuickFixes.First().FileName); }
private async Task <QuickFixResponse> FindSymbolsWithFilterAsync(string code, string filename, string filter, int?minFilterLength, int?maxItemsToReturn) { var testFile = new TestFile(filename, code); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); return(await requestHandler.Handle(new FindSymbolsRequest { Filter = filter, MinFilterLength = minFilterLength, MaxItemsToReturn = maxItemsToReturn })); }
private async Task <QuickInfoResponse> GetTypeLookUpResponse(string content) { TestFile testFile = new TestFile("dummy.cs", content); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var point = testFile.Content.GetPointFromPosition(); var request = new QuickInfoRequest { FileName = testFile.FileName, Line = point.Line, Column = point.Offset }; return(await requestHandler.Handle(request)); }
private async Task <SemanticHighlightSpan[]> GetSemanticHighlightsAsync(TestFile testFile, Range range) { SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var request = new SemanticHighlightRequest { FileName = testFile.FileName, Range = range }; var response = await requestHandler.Handle(request); return(response.Spans); }
private async Task <HighlightSpan[]> GetHighlightsAsync(TestFile testFile, int?line = null, HighlightClassification?exclude = null) { SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var request = new HighlightRequest { FileName = testFile.FileName, Lines = line != null ? new[] { line.Value } : null, ExcludeClassifications = exclude != null ? new[] { exclude.Value } : null }; var response = await requestHandler.Handle(request); return(response.Highlights); }
private async Task AssertEndPosition(string source, Direction direction) { var testFile = new TestFile("test.cs", source); var start = testFile.Content.GetSpans("start").Single().Start; var end = testFile.Content.GetSpans("end").Single().Start; var startPoint = testFile.Content.Text.GetPointFromPosition(start); var endPoint = testFile.Content.Text.GetPointFromPosition(end); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var response = await SendRequest(SharedOmniSharpTestHost, testFile, startPoint.Line, startPoint.Offset, direction); Assert.Equal(endPoint.Line, response.Line); Assert.Equal(endPoint.Offset, response.Column); }
public async Task EnablesWhenEndPointIsHit(string filename1, string filename2) { var testFile1 = new TestFile(filename1, "class C1 { int n = true; }"); var testFile2 = new TestFile(filename2, "class C2 { int n = true; }"); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile1, testFile2); var messages = new List <DiagnosticMessage>(); var emitter = new DiagnosticTestEmitter(messages); var forwarder = new DiagnosticEventForwarder(emitter); var service = new CSharpDiagnosticService(SharedOmniSharpTestHost.Workspace, forwarder, this.LoggerFactory); var controller = new DiagnosticsService(SharedOmniSharpTestHost.Workspace, forwarder, service); var response = await controller.Handle(new DiagnosticsRequest()); Assert.True(forwarder.IsEnabled); }
private async Task TestMetadataAsync(string filename, string assemblyName, string typeName) { var testFile = new TestFile(filename, "class C {}"); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var request = new MetadataRequest { AssemblyName = assemblyName, TypeName = typeName, Timeout = 60000 }; var response = await requestHandler.Handle(request); Assert.NotNull(response.Source); }
public async Task EnablesWhenEndPointIsHit(string filename1, string filename2) { SharedOmniSharpTestHost.ClearWorkspace(); var testFile1 = new TestFile(filename1, "class C1 { int n = true; }"); var testFile2 = new TestFile(filename2, "class C2 { int n = true; }"); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile1, testFile2); var emitter = new TestEventEmitter <DiagnosticMessage>(); var forwarder = new DiagnosticEventForwarder(emitter); var service = CreateDiagnosticService(forwarder); var controller = new DiagnosticsService(forwarder, service); var response = await controller.Handle(new DiagnosticsRequest()); Assert.True(forwarder.IsEnabled); }
public async Task IncludesNamespaceForRegularCSharpSyntax() { const string source = @"namespace Bar { class Foo {} }"; var testFile = new TestFile("dummy.cs", source); SharedOmniSharpTestHost.AddFilesToWorkspace(testFile); var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); var request = new QuickInfoRequest { FileName = testFile.FileName, Line = 1, Column = 19 }; var response = await requestHandler.Handle(request); Assert.Equal("```csharp\nclass Bar.Foo\n```", response.Markdown); }
private async Task <GotoDefinitionResponse> GetResponseAsync(TestFile[] testFiles, bool wantMetadata) { SharedOmniSharpTestHost.AddFilesToWorkspace(testFiles); var source = testFiles.Single(tf => tf.Content.HasPosition); var point = source.Content.GetPointFromPosition(); var request = new GotoDefinitionRequest { FileName = source.FileName, Line = point.Line, Column = point.Offset, Timeout = 60000, WantMetadata = wantMetadata }; var requestHandler = GetRequestHandler(SharedOmniSharpTestHost); return(await requestHandler.Handle(request)); }