зеркало из https://github.com/dotnet/razor.git
Utilize C# LSP server in semantic tokens tests (#6146)
This commit is contained in:
Родитель
d64b1e93ff
Коммит
dc1fee057f
|
@ -76,7 +76,7 @@
|
|||
<Tooling_MicrosoftCodeAnalysisTestingVersion>1.0.1-beta1.21103.2</Tooling_MicrosoftCodeAnalysisTestingVersion>
|
||||
<MicrosoftVisualStudioShellPackagesVersion>17.0.31723.112</MicrosoftVisualStudioShellPackagesVersion>
|
||||
<MicrosoftVisualStudioPackagesVersion>17.0.487</MicrosoftVisualStudioPackagesVersion>
|
||||
<RoslynPackageVersion>4.2.0-2.22108.10</RoslynPackageVersion>
|
||||
<RoslynPackageVersion>4.2.0-3.22164.11</RoslynPackageVersion>
|
||||
<VisualStudioLanguageServerProtocolVersion>17.1.11</VisualStudioLanguageServerProtocolVersion>
|
||||
<MicrosoftNetCompilersToolsetVersion>4.2.0-1.final</MicrosoftNetCompilersToolsetVersion>
|
||||
</PropertyGroup>
|
||||
|
|
|
@ -3,20 +3,20 @@
|
|||
|
||||
using System;
|
||||
using Microsoft.CodeAnalysis.Text;
|
||||
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
|
||||
using Range = OmniSharp.Extensions.LanguageServer.Protocol.Models.Range;
|
||||
using OSharp = OmniSharp.Extensions.LanguageServer.Protocol.Models;
|
||||
using VS = Microsoft.VisualStudio.LanguageServer.Protocol;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.LanguageServer.Extensions
|
||||
{
|
||||
internal static class RangeExtensions
|
||||
{
|
||||
public static readonly Range UndefinedRange = new()
|
||||
public static readonly OSharp.Range UndefinedRange = new()
|
||||
{
|
||||
Start = new Position(-1, -1),
|
||||
End = new Position(-1, -1)
|
||||
Start = new OSharp.Position(-1, -1),
|
||||
End = new OSharp.Position(-1, -1)
|
||||
};
|
||||
|
||||
public static bool OverlapsWith(this Range range!!, Range other!!)
|
||||
public static bool OverlapsWith(this OSharp.Range range!!, OSharp.Range other!!)
|
||||
{
|
||||
var overlapStart = range.Start;
|
||||
if (range.Start.CompareTo(other.Start) < 0)
|
||||
|
@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Extensions
|
|||
return overlapStart.CompareTo(overlapEnd) < 0;
|
||||
}
|
||||
|
||||
public static bool LineOverlapsWith(this Range range!!, Range other!!)
|
||||
public static bool LineOverlapsWith(this OSharp.Range range!!, OSharp.Range other!!)
|
||||
{
|
||||
var overlapStart = range.Start.Line;
|
||||
if (range.Start.Line.CompareTo(other.Start.Line) < 0)
|
||||
|
@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Extensions
|
|||
return overlapStart.CompareTo(overlapEnd) <= 0;
|
||||
}
|
||||
|
||||
public static Range? Overlap(this Range range!!, Range other!!)
|
||||
public static OSharp.Range? Overlap(this OSharp.Range range!!, OSharp.Range other!!)
|
||||
{
|
||||
var overlapStart = range.Start;
|
||||
if (range.Start.CompareTo(other.Start) < 0)
|
||||
|
@ -68,18 +68,18 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Extensions
|
|||
// Empty ranges do not overlap with any range.
|
||||
if (overlapStart.CompareTo(overlapEnd) < 0)
|
||||
{
|
||||
return new Range(overlapStart, overlapEnd);
|
||||
return new OSharp.Range(overlapStart, overlapEnd);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static bool Contains(this Range range!!, Range other!!)
|
||||
public static bool Contains(this OSharp.Range range!!, OSharp.Range other!!)
|
||||
{
|
||||
return range.Start.CompareTo(other.Start) <= 0 && range.End.CompareTo(other.End) >= 0;
|
||||
}
|
||||
|
||||
public static TextSpan AsTextSpan(this Range range!!, SourceText sourceText!!)
|
||||
public static TextSpan AsTextSpan(this OSharp.Range range!!, SourceText sourceText!!)
|
||||
{
|
||||
if (range.Start.Line >= sourceText.Lines.Count)
|
||||
{
|
||||
|
@ -103,7 +103,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Extensions
|
|||
return new TextSpan(start, length);
|
||||
}
|
||||
|
||||
public static Language.Syntax.TextSpan AsRazorTextSpan(this Range range!!, SourceText sourceText!!)
|
||||
public static Language.Syntax.TextSpan AsRazorTextSpan(this OSharp.Range range!!, SourceText sourceText!!)
|
||||
{
|
||||
if (range.Start.Line >= sourceText.Lines.Count)
|
||||
{
|
||||
|
@ -127,9 +127,26 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Extensions
|
|||
return new Language.Syntax.TextSpan(start, length);
|
||||
}
|
||||
|
||||
public static bool IsUndefined(this Range range!!)
|
||||
public static bool IsUndefined(this OSharp.Range range!!)
|
||||
{
|
||||
return range == UndefinedRange;
|
||||
}
|
||||
|
||||
public static VS.Range AsVSRange(this OSharp.Range range!!)
|
||||
{
|
||||
return new VS.Range
|
||||
{
|
||||
Start = new VS.Position
|
||||
{
|
||||
Line = range.Start.Line,
|
||||
Character = range.Start.Character
|
||||
},
|
||||
End = new VS.Position
|
||||
{
|
||||
Line = range.End.Line,
|
||||
Character = range.End.Character
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -458,7 +458,8 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Semantic
|
|||
return semanticRanges;
|
||||
}
|
||||
|
||||
private static bool TryGetMinimalCSharpRange(RazorCodeDocument codeDocument, Range razorRange, [NotNullWhen(true)] out Range? csharpRange)
|
||||
// Internal for testing only
|
||||
internal static bool TryGetMinimalCSharpRange(RazorCodeDocument codeDocument, Range razorRange, [NotNullWhen(true)] out Range? csharpRange)
|
||||
{
|
||||
SourceSpan? minGeneratedSpan = null;
|
||||
SourceSpan? maxGeneratedSpan = null;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Razor.Language;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common;
|
||||
using Microsoft.CodeAnalysis.Razor;
|
||||
|
@ -36,18 +37,22 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Common
|
|||
private HostProject HostProject2 { get; }
|
||||
|
||||
[Fact]
|
||||
public void Queue_ProcessesNotifications_AndGoesBackToSleep()
|
||||
public async Task Queue_ProcessesNotifications_AndGoesBackToSleep()
|
||||
{
|
||||
// Arrange
|
||||
var projectManager = TestProjectSnapshotManager.Create(LegacyDispatcher);
|
||||
projectManager.ProjectAdded(HostProject1);
|
||||
projectManager.ProjectAdded(HostProject2);
|
||||
projectManager.DocumentAdded(HostProject1, Documents[0], null);
|
||||
projectManager.DocumentAdded(HostProject1, Documents[1], null);
|
||||
var projectManager = TestProjectSnapshotManager.Create(Dispatcher);
|
||||
await Dispatcher.RunOnDispatcherThreadAsync(() =>
|
||||
{
|
||||
projectManager.ProjectAdded(HostProject1);
|
||||
projectManager.ProjectAdded(HostProject2);
|
||||
projectManager.DocumentAdded(HostProject1, Documents[0], null);
|
||||
projectManager.DocumentAdded(HostProject1, Documents[1], null);
|
||||
}, CancellationToken.None);
|
||||
|
||||
var project = projectManager.GetLoadedProject(HostProject1.FilePath);
|
||||
var project = await Dispatcher.RunOnDispatcherThreadAsync(
|
||||
() => projectManager.GetLoadedProject(HostProject1.FilePath), CancellationToken.None);
|
||||
|
||||
var queue = new TestBackgroundDocumentGenerator(LegacyDispatcher)
|
||||
var queue = new TestBackgroundDocumentGenerator(Dispatcher)
|
||||
{
|
||||
Delay = TimeSpan.FromMilliseconds(1),
|
||||
BlockBackgroundWorkStart = new ManualResetEventSlim(initialState: false),
|
||||
|
@ -57,7 +62,8 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Common
|
|||
};
|
||||
|
||||
// Act & Assert
|
||||
queue.Enqueue(project.GetDocument(Documents[0].FilePath));
|
||||
await Dispatcher.RunOnDispatcherThreadAsync(
|
||||
() => queue.Enqueue(project.GetDocument(Documents[0].FilePath)), CancellationToken.None);
|
||||
|
||||
Assert.True(queue.IsScheduledOrRunning, "Queue should be scheduled during Enqueue");
|
||||
Assert.True(queue.HasPendingNotifications, "Queue should have a notification created during Enqueue");
|
||||
|
@ -73,18 +79,22 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Common
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void Queue_ProcessesNotifications_AndRestarts()
|
||||
public async Task Queue_ProcessesNotifications_AndRestarts()
|
||||
{
|
||||
// Arrange
|
||||
var projectManager = TestProjectSnapshotManager.Create(LegacyDispatcher);
|
||||
projectManager.ProjectAdded(HostProject1);
|
||||
projectManager.ProjectAdded(HostProject2);
|
||||
projectManager.DocumentAdded(HostProject1, Documents[0], null);
|
||||
projectManager.DocumentAdded(HostProject1, Documents[1], null);
|
||||
var projectManager = TestProjectSnapshotManager.Create(Dispatcher);
|
||||
await Dispatcher.RunOnDispatcherThreadAsync(() =>
|
||||
{
|
||||
projectManager.ProjectAdded(HostProject1);
|
||||
projectManager.ProjectAdded(HostProject2);
|
||||
projectManager.DocumentAdded(HostProject1, Documents[0], null);
|
||||
projectManager.DocumentAdded(HostProject1, Documents[1], null);
|
||||
}, CancellationToken.None);
|
||||
|
||||
var project = projectManager.GetLoadedProject(HostProject1.FilePath);
|
||||
var project = await Dispatcher.RunOnDispatcherThreadAsync(
|
||||
() => projectManager.GetLoadedProject(HostProject1.FilePath), CancellationToken.None);
|
||||
|
||||
var queue = new TestBackgroundDocumentGenerator(LegacyDispatcher)
|
||||
var queue = new TestBackgroundDocumentGenerator(Dispatcher)
|
||||
{
|
||||
Delay = TimeSpan.FromMilliseconds(1),
|
||||
BlockBackgroundWorkStart = new ManualResetEventSlim(initialState: false),
|
||||
|
@ -95,7 +105,8 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Common
|
|||
};
|
||||
|
||||
// Act & Assert
|
||||
queue.Enqueue(project.GetDocument(Documents[0].FilePath));
|
||||
await Dispatcher.RunOnDispatcherThreadAsync(
|
||||
() => queue.Enqueue(project.GetDocument(Documents[0].FilePath)), CancellationToken.None);
|
||||
|
||||
Assert.True(queue.IsScheduledOrRunning, "Queue should be scheduled during Enqueue");
|
||||
Assert.True(queue.HasPendingNotifications, "Queue should have a notification created during Enqueue");
|
||||
|
@ -109,7 +120,8 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Common
|
|||
queue.NotifyBackgroundCapturedWorkload.Wait(TimeSpan.FromSeconds(1));
|
||||
Assert.False(queue.HasPendingNotifications, "Worker should have taken all notifications");
|
||||
|
||||
queue.Enqueue(project.GetDocument(Documents[1].FilePath));
|
||||
await Dispatcher.RunOnDispatcherThreadAsync(
|
||||
() => queue.Enqueue(project.GetDocument(Documents[1].FilePath)), CancellationToken.None);
|
||||
Assert.True(queue.HasPendingNotifications); // Now we should see the worker restart when it finishes.
|
||||
|
||||
// Allow work to complete, which should restart the timer.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"methodDisplay": "method",
|
||||
"shadowCopy": false
|
||||
"shadowCopy": false,
|
||||
"parallelizeTestCollections": false
|
||||
}
|
|
@ -0,0 +1,144 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the MIT license. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.ExternalAccess.Razor;
|
||||
using Microsoft.VisualStudio.Composition;
|
||||
using Microsoft.VisualStudio.LanguageServer.Protocol;
|
||||
using Nerdbank.Streams;
|
||||
using StreamJsonRpc;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Common
|
||||
{
|
||||
public sealed class CSharpTestLspServer : IAsyncDisposable
|
||||
{
|
||||
private readonly AdhocWorkspace _testWorkspace;
|
||||
private readonly IRazorLanguageServerTarget _languageServer;
|
||||
|
||||
private readonly StreamJsonRpc.JsonRpc _clientRpc;
|
||||
private readonly StreamJsonRpc.JsonRpc _serverRpc;
|
||||
|
||||
private readonly JsonMessageFormatter _clientMessageFormatter;
|
||||
private readonly JsonMessageFormatter _serverMessageFormatter;
|
||||
|
||||
private readonly HeaderDelimitedMessageHandler _clientMessageHandler;
|
||||
private readonly HeaderDelimitedMessageHandler _serverMessageHandler;
|
||||
|
||||
private CSharpTestLspServer(
|
||||
AdhocWorkspace testWorkspace,
|
||||
ExportProvider exportProvider,
|
||||
ServerCapabilities serverCapabilities)
|
||||
{
|
||||
_testWorkspace = testWorkspace;
|
||||
|
||||
var (clientStream, serverStream) = FullDuplexStream.CreatePair();
|
||||
|
||||
_serverMessageFormatter = CreateJsonMessageFormatter();
|
||||
_serverMessageHandler = new HeaderDelimitedMessageHandler(serverStream, serverStream, _serverMessageFormatter);
|
||||
_serverRpc = new StreamJsonRpc.JsonRpc(_serverMessageHandler)
|
||||
{
|
||||
ExceptionStrategy = ExceptionProcessing.ISerializable,
|
||||
};
|
||||
|
||||
_languageServer = CreateLanguageServer(_serverRpc, testWorkspace, exportProvider, serverCapabilities);
|
||||
|
||||
_clientMessageFormatter = CreateJsonMessageFormatter();
|
||||
_clientMessageHandler = new HeaderDelimitedMessageHandler(clientStream, clientStream, _clientMessageFormatter);
|
||||
_clientRpc = new StreamJsonRpc.JsonRpc(_clientMessageHandler)
|
||||
{
|
||||
ExceptionStrategy = ExceptionProcessing.ISerializable,
|
||||
};
|
||||
|
||||
_clientRpc.StartListening();
|
||||
|
||||
static JsonMessageFormatter CreateJsonMessageFormatter()
|
||||
{
|
||||
var messageFormatter = new JsonMessageFormatter();
|
||||
VSInternalExtensionUtilities.AddVSInternalExtensionConverters(messageFormatter.JsonSerializer);
|
||||
return messageFormatter;
|
||||
}
|
||||
|
||||
static IRazorLanguageServerTarget CreateLanguageServer(
|
||||
StreamJsonRpc.JsonRpc serverRpc,
|
||||
Workspace workspace,
|
||||
ExportProvider exportProvider,
|
||||
ServerCapabilities serverCapabilities)
|
||||
{
|
||||
var capabilitiesProvider = new RazorCapabilitiesProvider(serverCapabilities);
|
||||
|
||||
var registrationService = exportProvider.GetExportedValue<RazorTestWorkspaceRegistrationService>();
|
||||
registrationService.Register(workspace);
|
||||
|
||||
var languageServerFactory = exportProvider.GetExportedValue<IRazorLanguageServerFactoryWrapper>();
|
||||
var languageServer = languageServerFactory.CreateLanguageServer(serverRpc, capabilitiesProvider);
|
||||
|
||||
serverRpc.StartListening();
|
||||
return languageServer;
|
||||
}
|
||||
}
|
||||
|
||||
internal static async Task<CSharpTestLspServer> CreateAsync(
|
||||
AdhocWorkspace testWorkspace,
|
||||
ExportProvider exportProvider,
|
||||
ClientCapabilities clientCapabilities,
|
||||
ServerCapabilities serverCapabilities)
|
||||
{
|
||||
var server = new CSharpTestLspServer(testWorkspace, exportProvider, serverCapabilities);
|
||||
|
||||
await server.ExecuteRequestAsync<InitializeParams, InitializeResult>(Methods.InitializeName, new InitializeParams
|
||||
{
|
||||
Capabilities = clientCapabilities,
|
||||
}, CancellationToken.None);
|
||||
|
||||
await server.ExecuteRequestAsync(Methods.InitializedName, new InitializedParams(), CancellationToken.None);
|
||||
return server;
|
||||
}
|
||||
|
||||
internal async Task ExecuteRequestAsync<RequestType>(
|
||||
string methodName,
|
||||
RequestType request,
|
||||
CancellationToken cancellationToken) where RequestType : class
|
||||
=> await _clientRpc.InvokeWithParameterObjectAsync(
|
||||
methodName,
|
||||
request,
|
||||
cancellationToken).ConfigureAwait(false);
|
||||
|
||||
internal async Task<ResponseType?> ExecuteRequestAsync<RequestType, ResponseType>(
|
||||
string methodName,
|
||||
RequestType request,
|
||||
CancellationToken cancellationToken) where RequestType : class
|
||||
=> await _clientRpc.InvokeWithParameterObjectAsync<ResponseType>(
|
||||
methodName,
|
||||
request,
|
||||
cancellationToken).ConfigureAwait(false);
|
||||
|
||||
public async ValueTask DisposeAsync()
|
||||
{
|
||||
_testWorkspace.Dispose();
|
||||
await _languageServer.DisposeAsync();
|
||||
|
||||
_clientRpc.Dispose();
|
||||
_clientMessageFormatter.Dispose();
|
||||
await _clientMessageHandler.DisposeAsync();
|
||||
|
||||
_serverRpc.Dispose();
|
||||
_serverMessageFormatter.Dispose();
|
||||
await _serverMessageHandler.DisposeAsync();
|
||||
}
|
||||
|
||||
private class RazorCapabilitiesProvider : IRazorCapabilitiesProvider
|
||||
{
|
||||
private readonly ServerCapabilities _serverCapabilities;
|
||||
|
||||
public RazorCapabilitiesProvider(ServerCapabilities serverCapabilities)
|
||||
{
|
||||
_serverCapabilities = serverCapabilities;
|
||||
}
|
||||
|
||||
public ServerCapabilities GetCapabilities(ClientCapabilities clientCapabilities) => _serverCapabilities;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -5,13 +5,20 @@
|
|||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Common;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Test.Common;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.ExternalAccess.Razor;
|
||||
using Microsoft.CodeAnalysis.Razor;
|
||||
using Microsoft.CodeAnalysis.Text;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.VisualStudio.Composition;
|
||||
using Microsoft.VisualStudio.LanguageServer.Protocol;
|
||||
using Moq;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Test.Common
|
||||
|
@ -44,6 +51,86 @@ namespace Microsoft.AspNetCore.Razor.Test.Common
|
|||
|
||||
protected ILoggerFactory LoggerFactory { get; }
|
||||
|
||||
protected static AdhocWorkspace CreateTestWorkspace(IEnumerable<(Uri documentUri, SourceText csharpSourceText)> files, ExportProvider exportProvider)
|
||||
{
|
||||
var workspace = TestWorkspace.Create() as AdhocWorkspace;
|
||||
|
||||
// Add project and solution to workspace
|
||||
var projectInfo = ProjectInfo.Create(
|
||||
id: ProjectId.CreateNewId("TestProject"),
|
||||
version: VersionStamp.Default,
|
||||
name: "TestProject",
|
||||
assemblyName: "TestProject",
|
||||
language: LanguageNames.CSharp,
|
||||
filePath: "C:\\TestSolution\\TestProject.csproj");
|
||||
|
||||
var solutionInfo = SolutionInfo.Create(
|
||||
id: SolutionId.CreateNewId("TestSolution"),
|
||||
version: VersionStamp.Default,
|
||||
projects: new ProjectInfo[] { projectInfo });
|
||||
|
||||
workspace.AddSolution(solutionInfo);
|
||||
|
||||
// Add document to workspace. We use an IVT method to create the DocumentInfo variable because there's a special constructor in Roslyn that will
|
||||
// help identify the document as belonging to Razor.
|
||||
var languageServerFactory = exportProvider.GetExportedValue<IRazorLanguageServerFactoryWrapper>();
|
||||
|
||||
var documentCount = 0;
|
||||
foreach (var (documentUri, csharpSourceText) in files)
|
||||
{
|
||||
var documentFilePath = documentUri.AbsolutePath;
|
||||
var textAndVersion = TextAndVersion.Create(csharpSourceText, VersionStamp.Default, documentFilePath);
|
||||
var documentInfo = languageServerFactory.CreateDocumentInfo(
|
||||
id: DocumentId.CreateNewId(projectInfo.Id),
|
||||
name: "TestDocument" + documentCount,
|
||||
filePath: documentFilePath,
|
||||
loader: TextLoader.From(textAndVersion),
|
||||
razorDocumentServiceProvider: new TestRazorDocumentServiceProvider());
|
||||
|
||||
workspace.AddDocument(documentInfo);
|
||||
documentCount++;
|
||||
}
|
||||
|
||||
return workspace;
|
||||
}
|
||||
|
||||
protected static async Task<CSharpTestLspServer> CreateCSharpLspServerAsync(AdhocWorkspace workspace, ExportProvider exportProvider, ServerCapabilities serverCapabilities)
|
||||
{
|
||||
var clientCapabilities = new ClientCapabilities();
|
||||
var testLspServer = await CSharpTestLspServer.CreateAsync(workspace, exportProvider, clientCapabilities, serverCapabilities).ConfigureAwait(false);
|
||||
return testLspServer;
|
||||
}
|
||||
|
||||
private class TestRazorDocumentServiceProvider : IRazorDocumentServiceProvider
|
||||
{
|
||||
public bool CanApplyChange => throw new NotImplementedException();
|
||||
|
||||
public bool SupportDiagnostics => throw new NotImplementedException();
|
||||
|
||||
TService IRazorDocumentServiceProvider.GetService<TService>()
|
||||
{
|
||||
var serviceType = typeof(TService);
|
||||
|
||||
if (serviceType == typeof(IRazorSpanMappingService))
|
||||
{
|
||||
return (TService)(IRazorSpanMappingService)new TestRazorSpanMappingService();
|
||||
}
|
||||
|
||||
return this as TService;
|
||||
}
|
||||
|
||||
private class TestRazorSpanMappingService : IRazorSpanMappingService
|
||||
{
|
||||
public Task<ImmutableArray<RazorMappedSpanResult>> MapSpansAsync(
|
||||
Document document,
|
||||
IEnumerable<TextSpan> spans,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete("Use " + nameof(LSPProjectSnapshotManagerDispatcher))]
|
||||
private class TestProjectSnapshotManagerDispatcher : ProjectSnapshotManagerDispatcher
|
||||
{
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the MIT license. See License.txt in the project root for license information.
|
||||
|
||||
using System.Reflection;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common;
|
||||
using Microsoft.CodeAnalysis.ExternalAccess.Razor;
|
||||
using Microsoft.CodeAnalysis.Host.Mef;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Common
|
||||
{
|
||||
public static class TestCompositions
|
||||
{
|
||||
public static readonly TestComposition Editor = TestComposition.Empty
|
||||
.AddAssemblies(Assembly.Load("Microsoft.VisualStudio.Text.Implementation, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"))
|
||||
.AddParts(typeof(TestExportJoinableTaskContext));
|
||||
|
||||
public static readonly TestComposition Roslyn = TestComposition.Empty
|
||||
.AddAssemblies(MefHostServices.DefaultAssemblies)
|
||||
.AddAssemblies(Assembly.LoadFrom("Microsoft.CodeAnalysis.LanguageServer.Protocol.dll"))
|
||||
.AddAssemblies(Assembly.LoadFrom("Microsoft.CodeAnalysis.ExternalAccess.Razor.dll"))
|
||||
.AddParts(typeof(RazorTestWorkspaceRegistrationService));
|
||||
}
|
||||
}
|
|
@ -37,7 +37,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var insertProvider = new TestOnAutoInsertProvider(">", canResolve: true, LoggerFactory);
|
||||
var endpoint = new OnAutoInsertEndpoint(LegacyDispatcher, documentResolver, new[] { insertProvider }, TestAdhocWorkspaceFactory.Instance);
|
||||
var endpoint = new OnAutoInsertEndpoint(Dispatcher, documentResolver, new[] { insertProvider }, TestAdhocWorkspaceFactory.Instance);
|
||||
var @params = new OnAutoInsertParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
{
|
||||
ResolvedTextEdit = new TextEdit()
|
||||
};
|
||||
var endpoint = new OnAutoInsertEndpoint(LegacyDispatcher, documentResolver, new[] { insertProvider1, insertProvider2 }, TestAdhocWorkspaceFactory.Instance);
|
||||
var endpoint = new OnAutoInsertEndpoint(Dispatcher, documentResolver, new[] { insertProvider1, insertProvider2 }, TestAdhocWorkspaceFactory.Instance);
|
||||
var @params = new OnAutoInsertParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -109,7 +109,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
{
|
||||
ResolvedTextEdit = new TextEdit()
|
||||
};
|
||||
var endpoint = new OnAutoInsertEndpoint(LegacyDispatcher, documentResolver, new[] { insertProvider1, insertProvider2 }, TestAdhocWorkspaceFactory.Instance);
|
||||
var endpoint = new OnAutoInsertEndpoint(Dispatcher, documentResolver, new[] { insertProvider1, insertProvider2 }, TestAdhocWorkspaceFactory.Instance);
|
||||
var @params = new OnAutoInsertParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -140,7 +140,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var insertProvider1 = new TestOnAutoInsertProvider(">", canResolve: true, LoggerFactory);
|
||||
var insertProvider2 = new TestOnAutoInsertProvider("<", canResolve: true, LoggerFactory);
|
||||
var endpoint = new OnAutoInsertEndpoint(LegacyDispatcher, documentResolver, new[] { insertProvider1, insertProvider2 }, TestAdhocWorkspaceFactory.Instance);
|
||||
var endpoint = new OnAutoInsertEndpoint(Dispatcher, documentResolver, new[] { insertProvider1, insertProvider2 }, TestAdhocWorkspaceFactory.Instance);
|
||||
var @params = new OnAutoInsertParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -166,7 +166,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
{
|
||||
// Arrange
|
||||
var insertProvider = new TestOnAutoInsertProvider(">", canResolve: true, LoggerFactory);
|
||||
var endpoint = new OnAutoInsertEndpoint(LegacyDispatcher, EmptyDocumentResolver, new[] { insertProvider }, TestAdhocWorkspaceFactory.Instance);
|
||||
var endpoint = new OnAutoInsertEndpoint(Dispatcher, EmptyDocumentResolver, new[] { insertProvider }, TestAdhocWorkspaceFactory.Instance);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var @params = new OnAutoInsertParams()
|
||||
{
|
||||
|
@ -196,7 +196,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var insertProvider = new TestOnAutoInsertProvider(">", canResolve: true, LoggerFactory);
|
||||
var endpoint = new OnAutoInsertEndpoint(LegacyDispatcher, documentResolver, new[] { insertProvider }, TestAdhocWorkspaceFactory.Instance);
|
||||
var endpoint = new OnAutoInsertEndpoint(Dispatcher, documentResolver, new[] { insertProvider }, TestAdhocWorkspaceFactory.Instance);
|
||||
var @params = new OnAutoInsertParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -224,7 +224,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var insertProvider = new TestOnAutoInsertProvider(">", canResolve: false, LoggerFactory);
|
||||
var endpoint = new OnAutoInsertEndpoint(LegacyDispatcher, documentResolver, new[] { insertProvider }, TestAdhocWorkspaceFactory.Instance);
|
||||
var endpoint = new OnAutoInsertEndpoint(Dispatcher, documentResolver, new[] { insertProvider }, TestAdhocWorkspaceFactory.Instance);
|
||||
var @params = new OnAutoInsertParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
public async Task Handle_MissingFile()
|
||||
{
|
||||
// Arrange
|
||||
var resolver = new AddUsingsCodeActionResolver(LegacyDispatcher, _emptyDocumentResolver);
|
||||
var resolver = new AddUsingsCodeActionResolver(Dispatcher, _emptyDocumentResolver);
|
||||
var data = JObject.FromObject(new AddUsingsCodeActionParams()
|
||||
{
|
||||
Uri = new Uri("c:/Test.razor"),
|
||||
|
@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var codeDocument = CreateCodeDocument(contents);
|
||||
codeDocument.SetUnsupported();
|
||||
|
||||
var resolver = new AddUsingsCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new AddUsingsCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var data = JObject.FromObject(new AddUsingsCodeActionParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = string.Empty;
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new AddUsingsCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new AddUsingsCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var actionParams = new AddUsingsCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
@ -108,7 +108,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"@page \"/\"{Environment.NewLine}";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new AddUsingsCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new AddUsingsCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var actionParams = new AddUsingsCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
@ -149,7 +149,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var codeDocument = projectEngine.Process(projectItem);
|
||||
codeDocument.SetFileKind(FileKinds.Legacy);
|
||||
|
||||
var resolver = new AddUsingsCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new AddUsingsCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var actionParams = new AddUsingsCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
@ -182,7 +182,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"<table>{Environment.NewLine}<tr>{Environment.NewLine}</tr>{Environment.NewLine}</table>";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new AddUsingsCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new AddUsingsCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var actionParams = new AddUsingsCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
@ -215,7 +215,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"@namespace Testing{Environment.NewLine}";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new AddUsingsCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new AddUsingsCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var actionParams = new AddUsingsCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
@ -248,7 +248,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"@page \"/\"{Environment.NewLine}@namespace Testing{Environment.NewLine}";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new AddUsingsCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new AddUsingsCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var actionParams = new AddUsingsCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
@ -281,7 +281,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"@using System";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new AddUsingsCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new AddUsingsCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var actionParams = new AddUsingsCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
@ -314,7 +314,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"@using System{Environment.NewLine}@using System.Linq{Environment.NewLine}";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new AddUsingsCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new AddUsingsCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var actionParams = new AddUsingsCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
|
|
@ -4,19 +4,16 @@
|
|||
#nullable disable
|
||||
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc.Razor.Extensions;
|
||||
using Microsoft.AspNetCore.Razor.Language;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.CodeActions.Models;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Common;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common;
|
||||
using Microsoft.CodeAnalysis.Razor.ProjectSystem;
|
||||
using Microsoft.CodeAnalysis.Text;
|
||||
using Moq;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OmniSharp.Extensions.JsonRpc;
|
||||
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
|
||||
using Xunit;
|
||||
|
||||
|
@ -87,7 +84,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var documentVersionCache = CreateDocumentVersionCache();
|
||||
|
||||
addUsingResolver = new AddUsingsCSharpCodeActionResolver(
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
CreateDocumentResolver(documentPath, codeDocument),
|
||||
languageServer,
|
||||
documentVersionCache);
|
||||
|
|
|
@ -204,7 +204,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
razorFormattingService ??= CreateRazorFormattingService(documentUri);
|
||||
|
||||
csharpCodeActionResolver = new DefaultCSharpCodeActionResolver(
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
CreateDocumentResolver(documentPath, codeDocument),
|
||||
languageServer,
|
||||
razorFormattingService,
|
||||
|
|
|
@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
_documentMappingService,
|
||||
Array.Empty<RazorCodeActionProvider>(),
|
||||
Array.Empty<CSharpCodeActionProvider>(),
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
_emptyDocumentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -76,7 +76,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
_documentMappingService,
|
||||
Array.Empty<RazorCodeActionProvider>(),
|
||||
Array.Empty<CSharpCodeActionProvider>(),
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -108,7 +108,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
_documentMappingService,
|
||||
Array.Empty<RazorCodeActionProvider>(),
|
||||
Array.Empty<CSharpCodeActionProvider>(),
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -142,7 +142,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new MockRazorCodeActionProvider()
|
||||
},
|
||||
Array.Empty<CSharpCodeActionProvider>(),
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -179,7 +179,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new CSharpCodeActionProvider[] {
|
||||
new MockCSharpCodeActionProvider()
|
||||
},
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -214,7 +214,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new MockMultipleRazorCodeActionProvider(),
|
||||
},
|
||||
Array.Empty<CSharpCodeActionProvider>(),
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -256,7 +256,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new MockCSharpCodeActionProvider(),
|
||||
new MockCSharpCodeActionProvider()
|
||||
},
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -298,7 +298,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new MockCSharpCodeActionProvider(),
|
||||
new MockCSharpCodeActionProvider()
|
||||
},
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -333,7 +333,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new MockNullRazorCodeActionProvider()
|
||||
},
|
||||
Array.Empty<CSharpCodeActionProvider>(),
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -376,7 +376,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new MockCSharpCodeActionProvider(),
|
||||
new MockCSharpCodeActionProvider()
|
||||
},
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -413,7 +413,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new MockNullRazorCodeActionProvider()
|
||||
},
|
||||
Array.Empty<CSharpCodeActionProvider>(),
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -460,7 +460,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new MockNullRazorCodeActionProvider()
|
||||
},
|
||||
Array.Empty<CSharpCodeActionProvider>(),
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -503,7 +503,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new MockRazorCodeActionProvider()
|
||||
},
|
||||
Array.Empty<CSharpCodeActionProvider>(),
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -544,7 +544,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new MockRazorCodeActionProvider()
|
||||
},
|
||||
Array.Empty<CSharpCodeActionProvider>(),
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -588,7 +588,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new CSharpCodeActionProvider[] {
|
||||
new MockCSharpCodeActionProvider()
|
||||
},
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
_languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
@ -630,7 +630,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
new CSharpCodeActionProvider[] {
|
||||
new MockCSharpCodeActionProvider()
|
||||
},
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
documentResolver,
|
||||
languageServer,
|
||||
_languageServerFeatureOptions)
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
public async Task Handle_MissingFile()
|
||||
{
|
||||
// Arrange
|
||||
var resolver = new CreateComponentCodeActionResolver(LegacyDispatcher, _emptyDocumentResolver);
|
||||
var resolver = new CreateComponentCodeActionResolver(Dispatcher, _emptyDocumentResolver);
|
||||
var data = JObject.FromObject(new CreateComponentCodeActionParams()
|
||||
{
|
||||
Uri = new Uri("c:/Test.razor"),
|
||||
|
@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var codeDocument = CreateCodeDocument(contents);
|
||||
codeDocument.SetUnsupported();
|
||||
|
||||
var resolver = new CreateComponentCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new CreateComponentCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var data = JObject.FromObject(new CreateComponentCodeActionParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var codeDocument = CreateCodeDocument(contents);
|
||||
codeDocument.SetFileKind(FileKinds.Legacy);
|
||||
|
||||
var resolver = new CreateComponentCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new CreateComponentCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var data = JObject.FromObject(new CreateComponentCodeActionParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -97,7 +97,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"@page \"/test\"";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new CreateComponentCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new CreateComponentCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var actionParams = new CreateComponentCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
@ -127,7 +127,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"@page \"/test\"{Environment.NewLine}@namespace Another.Namespace";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new CreateComponentCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var resolver = new CreateComponentCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument));
|
||||
var actionParams = new CreateComponentCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
|
|
@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
public async Task Handle_MissingFile()
|
||||
{
|
||||
// Arrange
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(LegacyDispatcher, _emptyDocumentResolver, FilePathNormalizer);
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(Dispatcher, _emptyDocumentResolver, FilePathNormalizer);
|
||||
var data = JObject.FromObject(new ExtractToCodeBehindCodeActionParams()
|
||||
{
|
||||
Uri = new Uri("c:/Test.razor"),
|
||||
|
@ -69,7 +69,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var codeDocument = CreateCodeDocument(contents);
|
||||
codeDocument.SetUnsupported();
|
||||
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument), FilePathNormalizer);
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument), FilePathNormalizer);
|
||||
var data = JObject.FromObject(new ExtractToCodeBehindCodeActionParams()
|
||||
{
|
||||
Uri = new Uri("c:/Test.razor"),
|
||||
|
@ -95,7 +95,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var codeDocument = CreateCodeDocument(contents);
|
||||
codeDocument.SetFileKind(FileKinds.Legacy);
|
||||
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument), FilePathNormalizer);
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument), FilePathNormalizer);
|
||||
var data = JObject.FromObject(new ExtractToCodeBehindCodeActionParams()
|
||||
{
|
||||
Uri = new Uri("c:/Test.razor"),
|
||||
|
@ -121,7 +121,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"@page \"/test\"{Environment.NewLine}@code {{ private var x = 1; }}";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument), FilePathNormalizer);
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument), FilePathNormalizer);
|
||||
var actionParams = new ExtractToCodeBehindCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
@ -169,7 +169,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"@page \"/test\"{Environment.NewLine}@functions {{ private var x = 1; }}";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument), FilePathNormalizer);
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument), FilePathNormalizer);
|
||||
var actionParams = new ExtractToCodeBehindCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
@ -217,7 +217,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions
|
|||
var contents = $"@page \"/test\"\n@using System.Diagnostics{Environment.NewLine}@code {{ private var x = 1; }}";
|
||||
var codeDocument = CreateCodeDocument(contents);
|
||||
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(LegacyDispatcher, CreateDocumentResolver(documentPath, codeDocument), FilePathNormalizer);
|
||||
var resolver = new ExtractToCodeBehindCodeActionResolver(Dispatcher, CreateDocumentResolver(documentPath, codeDocument), FilePathNormalizer);
|
||||
var actionParams = new ExtractToCodeBehindCodeActionParams
|
||||
{
|
||||
Uri = documentUri,
|
||||
|
|
|
@ -319,7 +319,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, EmptyDocumentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, EmptyDocumentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var razorCompletionItem = new RazorCompletionItem("TestItem", "TestItem", RazorCompletionItemKind.Directive);
|
||||
razorCompletionItem.SetDirectiveCompletionDescription(new DirectiveCompletionDescription("Test directive"));
|
||||
var completionList = completionEndpoint.CreateLSPCompletionList(new[] { razorCompletionItem });
|
||||
|
@ -339,7 +339,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, EmptyDocumentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, EmptyDocumentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var razorCompletionItem = new RazorCompletionItem("@...", "@", RazorCompletionItemKind.MarkupTransition);
|
||||
razorCompletionItem.SetMarkupTransitionCompletionDescription(new MarkupTransitionCompletionDescription("Test description"));
|
||||
var completionList = completionEndpoint.CreateLSPCompletionList(new[] { razorCompletionItem });
|
||||
|
@ -367,7 +367,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, EmptyDocumentResolver, CompletionFactsService, lspDescriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, EmptyDocumentResolver, CompletionFactsService, lspDescriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var razorCompletionItem = new RazorCompletionItem("TestItem", "TestItem", RazorCompletionItemKind.DirectiveAttribute);
|
||||
razorCompletionItem.SetAttributeCompletionDescription(new AggregateBoundAttributeDescription(Array.Empty<BoundAttributeDescriptionInfo>()));
|
||||
var completionList = completionEndpoint.CreateLSPCompletionList(new[] { razorCompletionItem });
|
||||
|
@ -395,7 +395,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, EmptyDocumentResolver, CompletionFactsService, descriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, EmptyDocumentResolver, CompletionFactsService, descriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var razorCompletionItem = new RazorCompletionItem("TestItem", "TestItem", RazorCompletionItemKind.DirectiveAttributeParameter);
|
||||
razorCompletionItem.SetAttributeCompletionDescription(new AggregateBoundAttributeDescription(Array.Empty<BoundAttributeDescriptionInfo>()));
|
||||
var completionList = completionEndpoint.CreateLSPCompletionList(new[] { razorCompletionItem });
|
||||
|
@ -423,7 +423,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, EmptyDocumentResolver, CompletionFactsService, lspDescriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, EmptyDocumentResolver, CompletionFactsService, lspDescriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var razorCompletionItem = new RazorCompletionItem("TestItem", "TestItem", RazorCompletionItemKind.TagHelperElement);
|
||||
razorCompletionItem.SetTagHelperElementDescriptionInfo(new AggregateBoundElementDescription(Array.Empty<BoundElementDescriptionInfo>()));
|
||||
var completionList = completionEndpoint.CreateLSPCompletionList(new[] { razorCompletionItem });
|
||||
|
@ -484,7 +484,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, EmptyDocumentResolver, CompletionFactsService, lspDescriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, EmptyDocumentResolver, CompletionFactsService, lspDescriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var razorCompletionItem = new RazorCompletionItem("TestItem", "TestItem", RazorCompletionItemKind.TagHelperAttribute);
|
||||
razorCompletionItem.SetAttributeCompletionDescription(new AggregateBoundAttributeDescription(Array.Empty<BoundAttributeDescriptionInfo>()));
|
||||
var completionList = completionEndpoint.CreateLSPCompletionList(new[] { razorCompletionItem });
|
||||
|
@ -512,7 +512,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, EmptyDocumentResolver, CompletionFactsService, lspDescriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, EmptyDocumentResolver, CompletionFactsService, lspDescriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var completionItem = new CompletionItem();
|
||||
|
||||
// Act
|
||||
|
@ -534,7 +534,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var request = new CompletionParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(new Uri(documentPath)),
|
||||
|
@ -560,7 +560,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var request = new CompletionParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(new Uri(documentPath)),
|
||||
|
@ -595,7 +595,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var request = new CompletionParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(new Uri(documentPath)),
|
||||
|
@ -629,7 +629,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var request = new CompletionParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(new Uri(documentPath)),
|
||||
|
@ -663,7 +663,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var request = new CompletionParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(new Uri(documentPath)),
|
||||
|
@ -698,7 +698,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var request = new CompletionParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(new Uri(documentPath)),
|
||||
|
@ -736,7 +736,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams());
|
||||
var completionEndpoint = new RazorCompletionEndpoint(
|
||||
LegacyDispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
Dispatcher, documentResolver, CompletionFactsService, LSPTagHelperTooltipFactory, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory);
|
||||
var request = new CompletionParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(new Uri(documentPath)),
|
||||
|
|
|
@ -57,7 +57,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
public void GetNearestAncestorTagInfo_MarkupElement()
|
||||
{
|
||||
// Arrange
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<p><strong></strong></p>");
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<p><strong></strong></p>", isRazorFile: false);
|
||||
var sourceSpan = new SourceSpan(33 + Environment.NewLine.Length, 0);
|
||||
var syntaxTree = codeDocument.GetSyntaxTree();
|
||||
var owner = syntaxTree.Root.LocateOwner(new SourceChange(sourceSpan, string.Empty));
|
||||
|
@ -76,7 +76,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
public void GetNearestAncestorTagInfo_TagHelperElement()
|
||||
{
|
||||
// Arrange
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test1><test2></test2></test1>", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test1><test2></test2></test1>", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(37 + Environment.NewLine.Length, 0);
|
||||
var syntaxTree = codeDocument.GetSyntaxTree();
|
||||
var owner = syntaxTree.Root.LocateOwner(new SourceChange(sourceSpan, string.Empty));
|
||||
|
@ -96,7 +96,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(30 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -115,7 +115,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<br />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<br />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(33 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -131,7 +131,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}</t", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}</t", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(32 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -156,7 +156,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<br />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<br />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(32 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -172,7 +172,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(35 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -188,7 +188,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(36 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -217,7 +217,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<title mutator />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<title mutator />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(36 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -240,7 +240,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2><</test2>", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2><</test2>", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(37 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -265,7 +265,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test1><</test1>", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test1><</test1>", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(37 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -294,7 +294,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(36 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -333,7 +333,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
attribute.AsDictionary("bool-val-", typeof(bool).FullName);
|
||||
});
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test />", tagHelper.Build());
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test />", isRazorFile: false, tagHelper.Build());
|
||||
var sourceSpan = new SourceSpan(35 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -372,7 +372,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
attribute.AsDictionary("int-val-", typeof(int).FullName);
|
||||
});
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test />", tagHelper.Build());
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test />", isRazorFile: false, tagHelper.Build());
|
||||
var sourceSpan = new SourceSpan(35 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -401,7 +401,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 unbound />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 unbound />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(38 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -417,7 +417,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 bool-val />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 bool-val />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(38 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -433,7 +433,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 class='' />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 class='' />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(38 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -449,7 +449,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 int-val='123' />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 int-val='123' />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(38 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -466,7 +466,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 int-val='>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(38 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -482,7 +482,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 int->", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 int->", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(36 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -498,7 +498,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 class='' />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 class='' />", isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(43 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
@ -515,7 +515,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
// Arrange
|
||||
var service = new TagHelperCompletionProvider(RazorTagHelperCompletionService, HtmlFactsService, TagHelperFactsService);
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test2 class=''>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var sourceSpan = new SourceSpan(38 + Environment.NewLine.Length, 0);
|
||||
var context = new RazorCompletionContext(codeDocument.GetSyntaxTree(), codeDocument.GetTagHelperContext());
|
||||
|
||||
|
|
|
@ -203,9 +203,9 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
|
||||
protected ILogger Logger { get; } = NullLogger.Instance;
|
||||
|
||||
internal static RazorCodeDocument CreateCodeDocument(string text, params TagHelperDescriptor[] tagHelpers)
|
||||
internal static RazorCodeDocument CreateCodeDocument(string text, bool isRazorFile, params TagHelperDescriptor[] tagHelpers)
|
||||
{
|
||||
return CreateCodeDocument(text, CSHtmlFile, tagHelpers);
|
||||
return CreateCodeDocument(text, isRazorFile ? RazorFile : CSHtmlFile, tagHelpers);
|
||||
}
|
||||
|
||||
protected static TextDocumentIdentifier GetIdentifier(bool isRazor)
|
||||
|
@ -218,10 +218,9 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
{
|
||||
var documentSnapshots = new Queue<DocumentSnapshot>();
|
||||
var identifiers = new Queue<TextDocumentIdentifier>();
|
||||
foreach (var (text, isRazor) in textArray.Zip(isRazorArray, (t, r) => (t, r)))
|
||||
foreach (var (text, isRazorFile) in textArray.Zip(isRazorArray, (t, r) => (t, r)))
|
||||
{
|
||||
var file = isRazor ? RazorFile : CSHtmlFile;
|
||||
var document = CreateCodeDocument(text, file, tagHelpers);
|
||||
var document = CreateCodeDocument(text, isRazorFile, tagHelpers);
|
||||
|
||||
var projectSnapshot = new Mock<ProjectSnapshot>(MockBehavior.Strict);
|
||||
projectSnapshot
|
||||
|
@ -240,7 +239,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion
|
|||
.Returns(projectSnapshot.Object);
|
||||
|
||||
documentSnapshots.Enqueue(documentSnapshot.Object);
|
||||
var identifier = GetIdentifier(isRazor);
|
||||
var identifier = GetIdentifier(isRazorFile);
|
||||
identifiers.Enqueue(identifier);
|
||||
}
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Debugging
|
|||
<p>@DateTime.Now</p>");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(LegacyDispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(Dispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var request = new RazorBreakpointSpanParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -87,7 +87,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Debugging
|
|||
<p>@{var abc = 123;}</p>");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(LegacyDispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(Dispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var request = new RazorBreakpointSpanParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -112,7 +112,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Debugging
|
|||
<p>@{var abc;}</p>");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(LegacyDispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(Dispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var request = new RazorBreakpointSpanParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -135,7 +135,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Debugging
|
|||
<p></p>");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(LegacyDispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(Dispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var request = new RazorBreakpointSpanParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -161,7 +161,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Debugging
|
|||
}</p>");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(LegacyDispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(Dispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var request = new RazorBreakpointSpanParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -187,7 +187,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Debugging
|
|||
}</p>");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(LegacyDispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(Dispatcher, documentResolver, MappingService, LoggerFactory);
|
||||
var request = new RazorBreakpointSpanParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
// Arrange
|
||||
var tagHelperDescriptor1 = CreateRazorComponentTagHelperDescriptor("First", "First.Components", "Component1", typeName: "Component1<TItem>");
|
||||
var tagHelperDescriptor2 = CreateRazorComponentTagHelperDescriptor("Second", "Second.Components", "Component3", typeName: "Component3<TItem>");
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(LegacyDispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(Dispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
|
||||
// Act
|
||||
var documentSnapshot1 = await searchEngine.TryLocateComponentAsync(tagHelperDescriptor1).ConfigureAwait(false);
|
||||
|
@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
// Arrange
|
||||
var tagHelperDescriptor1 = CreateRazorComponentTagHelperDescriptor("First", "First.Components", "Component1");
|
||||
var tagHelperDescriptor2 = CreateRazorComponentTagHelperDescriptor("Second", "Second.Components", "Component3");
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(LegacyDispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(Dispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
|
||||
// Act
|
||||
var documentSnapshot1 = await searchEngine.TryLocateComponentAsync(tagHelperDescriptor1).ConfigureAwait(false);
|
||||
|
@ -60,7 +60,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperDescriptor = CreateRazorComponentTagHelperDescriptor("First", "Test", "Component2");
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(LegacyDispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(Dispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
|
||||
// Act
|
||||
var documentSnapshot = await searchEngine.TryLocateComponentAsync(tagHelperDescriptor).ConfigureAwait(false);
|
||||
|
@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperDescriptor = CreateRazorComponentTagHelperDescriptor("Third", "First.Components", "Component3");
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(LegacyDispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(Dispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
|
||||
// Act
|
||||
var documentSnapshot = await searchEngine.TryLocateComponentAsync(tagHelperDescriptor).ConfigureAwait(false);
|
||||
|
@ -88,7 +88,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperDescriptor = CreateRazorComponentTagHelperDescriptor("First", "First.Components", "Component2");
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(LegacyDispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(Dispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
|
||||
// Act
|
||||
var documentSnapshot = await searchEngine.TryLocateComponentAsync(tagHelperDescriptor).ConfigureAwait(false);
|
||||
|
@ -102,7 +102,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperDescriptor = CreateRazorComponentTagHelperDescriptor("First", "First.Components", "Component3");
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(LegacyDispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(Dispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
|
||||
// Act
|
||||
var documentSnapshot = await searchEngine.TryLocateComponentAsync(tagHelperDescriptor).ConfigureAwait(false);
|
||||
|
@ -116,7 +116,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperDescriptor = CreateRazorComponentTagHelperDescriptor("AssemblyName", "Test", "Component2");
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(LegacyDispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(Dispatcher, s_projectSnapshotManager, LoggerFactory);
|
||||
|
||||
// Act
|
||||
var documentSnapshot = await searchEngine.TryLocateComponentAsync(tagHelperDescriptor).ConfigureAwait(false);
|
||||
|
|
|
@ -120,7 +120,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
attribute.TypeName = typeof(bool).FullName;
|
||||
});
|
||||
tagHelper.SetTypeName("WithBoundAttribute");
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test bound='true' />", tagHelper.Build());
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test bound='true' />", isRazorFile: false, tagHelper.Build());
|
||||
var syntaxTree = codeDocument.GetSyntaxTree();
|
||||
var sourceSpan = new SourceSpan(30 + Environment.NewLine.Length, 0);
|
||||
var sourceChangeLocation = new SourceChange(sourceSpan, string.Empty);
|
||||
|
@ -152,7 +152,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
attribute.TypeName = typeof(bool).FullName;
|
||||
});
|
||||
tagHelper.SetTypeName("WithBoundAttribute");
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test bound />", tagHelper.Build());
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<test bound />", isRazorFile: false, tagHelper.Build());
|
||||
var syntaxTree = codeDocument.GetSyntaxTree();
|
||||
var sourceSpan = new SourceSpan(30 + Environment.NewLine.Length, 0);
|
||||
var sourceChangeLocation = new SourceChange(sourceSpan, string.Empty);
|
||||
|
@ -175,7 +175,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
public void StringifyAttributes_UnboundAttribute()
|
||||
{
|
||||
// Arrange
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<input unbound='hello world' />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<input unbound='hello world' />", isRazorFile: false, DefaultTagHelpers);
|
||||
var syntaxTree = codeDocument.GetSyntaxTree();
|
||||
var sourceSpan = new SourceSpan(30 + Environment.NewLine.Length, 0);
|
||||
var sourceChangeLocation = new SourceChange(sourceSpan, string.Empty);
|
||||
|
@ -198,7 +198,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
public void StringifyAttributes_UnboundMinimizedAttribute()
|
||||
{
|
||||
// Arrange
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<input unbound />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<input unbound />", isRazorFile: false, DefaultTagHelpers);
|
||||
var syntaxTree = codeDocument.GetSyntaxTree();
|
||||
var sourceSpan = new SourceSpan(30 + Environment.NewLine.Length, 0);
|
||||
var sourceChangeLocation = new SourceChange(sourceSpan, string.Empty);
|
||||
|
@ -221,7 +221,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
|||
public void StringifyAttributes_IgnoresMiscContent()
|
||||
{
|
||||
// Arrange
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<input unbound @DateTime.Now />", DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument($"@addTagHelper *, TestAssembly{Environment.NewLine}<input unbound @DateTime.Now />", isRazorFile: false, DefaultTagHelpers);
|
||||
var syntaxTree = codeDocument.GetSyntaxTree();
|
||||
var sourceSpan = new SourceSpan(30 + Environment.NewLine.Length, 0);
|
||||
var sourceChangeLocation = new SourceChange(sourceSpan, string.Empty);
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Definition
|
|||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var srcText = SourceText.From(txt);
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var documentSnapshot = Mock.Of<DocumentSnapshot>(d => d.GetTextAsync() == Task.FromResult(srcText), MockBehavior.Strict);
|
||||
var position = new Position(1, 2);
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
documentResolver.Setup(resolver => resolver.TryResolveDocument(documentPath, out documentSnapshot))
|
||||
.Returns(false);
|
||||
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver.Object, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver.Object, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -79,7 +79,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
documentVersionCache.Setup(cache => cache.TryGetDocumentVersion(It.IsAny<DocumentSnapshot>(), out version))
|
||||
.Returns(false);
|
||||
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, documentVersionCache.Object, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, documentVersionCache.Object, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -110,7 +110,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -142,7 +142,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(2, 15))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -176,7 +176,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(6, 25))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -215,7 +215,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(15, 13))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -248,7 +248,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -284,7 +284,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -319,7 +319,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -355,7 +355,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -392,7 +392,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -427,7 +427,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -464,7 +464,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -499,7 +499,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -530,7 +530,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
"__o = Microsoft.AspNetCore.Components.EventCallback.Factory.Create<Microsoft.AspNetCore.Components.Web.ProgressEventArgs>(this, );",
|
||||
sourceMappings: Array.Empty<SourceMapping>());
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new TestRazorDiagnosticsEndpointWithoutRazorDiagnostic(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new TestRazorDiagnosticsEndpointWithoutRazorDiagnostic(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -562,7 +562,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
"__o = Microsoft.AspNetCore.Components.EventCallback.Factory.Create<Microsoft.AspNetCore.Components.Web.ProgressEventArgs>(this, );",
|
||||
sourceMappings: Array.Empty<SourceMapping>());
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new TestRazorDiagnosticsEndpointWithRazorDiagnostic(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new TestRazorDiagnosticsEndpointWithRazorDiagnostic(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -598,7 +598,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 13))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -628,7 +628,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
var documentPath = "C:/path/to/document.cshtml";
|
||||
var codeDocument = CreateCodeDocument("<p>@DateTime.Now</p>");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -651,7 +651,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
var documentPath = "C:/path/to/document.cshtml";
|
||||
var codeDocument = CreateCodeDocument("<p>@DateTime.Now</p>");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Razor,
|
||||
|
@ -682,7 +682,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
});
|
||||
codeDocument.SetUnsupported();
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -711,7 +711,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
GetButtonTagHelperDescriptor().Build()
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -740,7 +740,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
GetButtonTagHelperDescriptor().Build()
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -770,7 +770,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 14))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -800,7 +800,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
new SourceSpan(10, 14))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -850,7 +850,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
descriptor.Build()
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -896,7 +896,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
descriptor.Build()
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -932,7 +932,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
var documentPath = "C:/path/to/document.cshtml";
|
||||
var codeDocument = CreateCodeDocument("<p>@DateTime.Now");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -963,7 +963,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
var documentPath = "C:/path/to/document.razor";
|
||||
var codeDocument = CreateCodeDocument("<p>@DateTime.Now", kind: FileKinds.Component);
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -992,7 +992,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
var documentPath = "C:/path/to/document.razor";
|
||||
var codeDocument = CreateCodeDocument("<!body></body>", kind: FileKinds.Component);
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -1023,7 +1023,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
var documentPath = "C:/path/to/document.razor";
|
||||
var codeDocument = CreateCodeDocument("<html><!body><div></div></!body></html>", kind: FileKinds.Component);
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -1063,7 +1063,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics
|
|||
var documentPath = "C:/path/to/document.razor";
|
||||
var codeDocument = CreateCodeDocument("<!body></!body>", kind: FileKinds.Component);
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var diagnosticsEndpoint = new RazorDiagnosticsEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, LoggerFactory);
|
||||
var request = new RazorDiagnosticsParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the MIT license. See License.txt in the project root for license information.
|
||||
|
||||
#nullable disable
|
||||
|
||||
using System.Reflection;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.LanguageServer.Test
|
||||
{
|
||||
public static class EditorTestCompositions
|
||||
{
|
||||
public static readonly TestComposition Editor = TestComposition.Empty
|
||||
.AddAssemblies(
|
||||
// Microsoft.VisualStudio.Text.Implementation.dll:
|
||||
Assembly.Load("Microsoft.VisualStudio.Text.Implementation, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"))
|
||||
.AddParts(
|
||||
typeof(TestExportJoinableTaskContext));
|
||||
}
|
||||
}
|
|
@ -14,7 +14,7 @@ using MediatR;
|
|||
using Microsoft.AspNetCore.Razor.Language;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Common;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Extensions;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Test;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Test.Common;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.Formatting;
|
||||
using Microsoft.CodeAnalysis.Razor.Workspaces.Extensions;
|
||||
|
@ -97,7 +97,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var editHandlerType = editHandlerAssembly.GetType("Microsoft.WebTools.Languages.LanguageServer.Server.Html.OperationHandlers.ApplyFormatEditsHandler", throwOnError: true);
|
||||
var bufferManagerType = editHandlerAssembly.GetType("Microsoft.WebTools.Languages.LanguageServer.Server.Shared.Buffer.BufferManager", throwOnError: true);
|
||||
|
||||
var exportProvider = EditorTestCompositions.Editor.ExportProviderFactory.CreateExportProvider();
|
||||
var exportProvider = TestCompositions.Editor.ExportProviderFactory.CreateExportProvider();
|
||||
var contentTypeService = exportProvider.GetExportedValue<IContentTypeRegistryService>();
|
||||
|
||||
if (!contentTypeService.ContentTypes.Any(t => t.TypeName == HtmlContentTypeDefinition.HtmlContentType))
|
||||
|
|
|
@ -41,7 +41,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var documentMappingService = new DefaultRazorDocumentMappingService(LoggerFactory);
|
||||
var optionsMonitor = GetOptionsMonitor(enableFormatting: true);
|
||||
var endpoint = new RazorFormattingEndpoint(
|
||||
LegacyDispatcher, documentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
Dispatcher, documentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
var @params = new DocumentRangeFormattingParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri)
|
||||
|
@ -63,7 +63,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var documentMappingService = new DefaultRazorDocumentMappingService(LoggerFactory);
|
||||
var optionsMonitor = GetOptionsMonitor(enableFormatting: true);
|
||||
var endpoint = new RazorFormattingEndpoint(
|
||||
LegacyDispatcher, EmptyDocumentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
Dispatcher, EmptyDocumentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var @params = new DocumentRangeFormattingParams()
|
||||
{
|
||||
|
@ -89,7 +89,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var documentMappingService = new DefaultRazorDocumentMappingService(LoggerFactory);
|
||||
var optionsMonitor = GetOptionsMonitor(enableFormatting: true);
|
||||
var endpoint = new RazorFormattingEndpoint(
|
||||
LegacyDispatcher, documentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
Dispatcher, documentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
var @params = new DocumentRangeFormattingParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri)
|
||||
|
@ -110,7 +110,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var documentMappingService = new DefaultRazorDocumentMappingService(LoggerFactory);
|
||||
var optionsMonitor = GetOptionsMonitor(enableFormatting: false);
|
||||
var endpoint = new RazorFormattingEndpoint(
|
||||
LegacyDispatcher, EmptyDocumentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
Dispatcher, EmptyDocumentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
var @params = new DocumentRangeFormattingParams();
|
||||
|
||||
// Act
|
||||
|
@ -129,7 +129,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var documentMappingService = new DefaultRazorDocumentMappingService(LoggerFactory);
|
||||
var optionsMonitor = GetOptionsMonitor(enableFormatting: false);
|
||||
var endpoint = new RazorFormattingEndpoint(
|
||||
LegacyDispatcher, EmptyDocumentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
Dispatcher, EmptyDocumentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
var @params = new DocumentOnTypeFormattingParams() { TextDocument = new TextDocumentIdentifier(uri) };
|
||||
|
||||
// Act
|
||||
|
@ -155,7 +155,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var documentMappingService = new DefaultRazorDocumentMappingService(LoggerFactory);
|
||||
var optionsMonitor = GetOptionsMonitor(enableFormatting: true);
|
||||
var endpoint = new RazorFormattingEndpoint(
|
||||
LegacyDispatcher, documentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
Dispatcher, documentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
var @params = new DocumentOnTypeFormattingParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -187,7 +187,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var documentMappingService = new DefaultRazorDocumentMappingService(LoggerFactory);
|
||||
var optionsMonitor = GetOptionsMonitor(enableFormatting: true);
|
||||
var endpoint = new RazorFormattingEndpoint(
|
||||
LegacyDispatcher, documentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
Dispatcher, documentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
var @params = new DocumentOnTypeFormattingParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -220,7 +220,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
documentMappingService.Setup(s => s.GetLanguageKind(codeDocument, 17)).Returns(RazorLanguageKind.Html);
|
||||
var optionsMonitor = GetOptionsMonitor(enableFormatting: true);
|
||||
var endpoint = new RazorFormattingEndpoint(
|
||||
LegacyDispatcher, documentResolver, formattingService, documentMappingService.Object, optionsMonitor, LoggerFactory);
|
||||
Dispatcher, documentResolver, formattingService, documentMappingService.Object, optionsMonitor, LoggerFactory);
|
||||
var @params = new DocumentOnTypeFormattingParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -253,7 +253,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
documentMappingService.Setup(s => s.GetLanguageKind(codeDocument, 17)).Returns(RazorLanguageKind.Razor);
|
||||
var optionsMonitor = GetOptionsMonitor(enableFormatting: true);
|
||||
var endpoint = new RazorFormattingEndpoint(
|
||||
LegacyDispatcher, documentResolver, formattingService, documentMappingService.Object, optionsMonitor, LoggerFactory);
|
||||
Dispatcher, documentResolver, formattingService, documentMappingService.Object, optionsMonitor, LoggerFactory);
|
||||
var @params = new DocumentOnTypeFormattingParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -285,7 +285,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting
|
|||
var documentMappingService = new DefaultRazorDocumentMappingService(LoggerFactory);
|
||||
var optionsMonitor = GetOptionsMonitor(enableFormatting: true);
|
||||
var endpoint = new RazorFormattingEndpoint(
|
||||
LegacyDispatcher, documentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
Dispatcher, documentResolver, formattingService, documentMappingService, optionsMonitor, LoggerFactory);
|
||||
var @params = new DocumentOnTypeFormattingParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("test1", StringComparison.Ordinal), -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.LastIndexOf("test1", StringComparison.Ordinal), -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -93,7 +93,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val='true'></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("bool-val", StringComparison.Ordinal), -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -113,7 +113,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val minimized></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var edgeLocation = txt.IndexOf("bool-val", StringComparison.Ordinal) + "bool-val".Length;
|
||||
var location = new SourceLocation(edgeLocation, 0, edgeLocation);
|
||||
|
@ -134,7 +134,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val='true'></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("true", StringComparison.Ordinal), -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -151,7 +151,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val='true'></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("=", StringComparison.Ordinal) + 1, -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -168,7 +168,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val='true'></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("true'", StringComparison.Ordinal) + 5, -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -185,7 +185,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("bool-val", StringComparison.Ordinal), -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -231,7 +231,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1<hello";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("test1", StringComparison.Ordinal), -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -250,7 +250,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val=\"aslj alsk<strong>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("bool-val", StringComparison.Ordinal), -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -270,7 +270,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<p><strong></strong></p>";
|
||||
var codeDocument = CreateCodeDocument(txt);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("strong", StringComparison.Ordinal), -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -287,7 +287,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
|
||||
var languageServer = LanguageServer;
|
||||
languageServer.ClientSettings.Capabilities.TextDocument.Hover.Value.ContentFormat = new Container<MarkupKind>(MarkupKind.PlainText);
|
||||
|
@ -310,7 +310,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
|
||||
var languageServer = LanguageServer;
|
||||
languageServer.ClientSettings.Capabilities.TextDocument.Hover.Value.ContentFormat = new Container<MarkupKind>(MarkupKind.PlainText);
|
||||
|
@ -333,7 +333,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
|
||||
var languageServer = LanguageServer;
|
||||
languageServer.ClientSettings.Capabilities.TextDocument.Hover.Value.ContentFormat = new Container<MarkupKind>(MarkupKind.PlainText);
|
||||
|
@ -357,7 +357,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<p><strong></strong></p>";
|
||||
var codeDocument = CreateCodeDocument(txt);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false);
|
||||
|
||||
var languageServer = LanguageServer;
|
||||
languageServer.ClientSettings.Capabilities.TextDocument.Hover.Value.ContentFormat = new Container<MarkupKind>(MarkupKind.PlainText);
|
||||
|
@ -377,7 +377,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<p><strong class=\"weak\"></strong></p>";
|
||||
var codeDocument = CreateCodeDocument(txt);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false);
|
||||
|
||||
var languageServer = LanguageServer;
|
||||
languageServer.ClientSettings.Capabilities.TextDocument.Hover.Value.ContentFormat = new Container<MarkupKind>(MarkupKind.PlainText);
|
||||
|
@ -397,7 +397,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("test1", StringComparison.Ordinal), -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
@ -431,7 +431,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val='true'></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var service = GetDefaultRazorHoverInfoService();
|
||||
var location = new SourceLocation(txt.IndexOf("bool-val", StringComparison.Ordinal), -1, -1);
|
||||
var clientCapabilities = LanguageServer.ClientSettings.Capabilities;
|
||||
|
|
|
@ -28,10 +28,10 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.LinkedEditingRange
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument, documentFound: false);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(LegacyDispatcher, documentResolver, LoggerFactory);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(Dispatcher, documentResolver, LoggerFactory);
|
||||
var request = new LinkedEditingRangeParams
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -50,10 +50,10 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.LinkedEditingRange
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(LegacyDispatcher, documentResolver, LoggerFactory);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(Dispatcher, documentResolver, LoggerFactory);
|
||||
var request = new LinkedEditingRangeParams
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -87,10 +87,10 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.LinkedEditingRange
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(LegacyDispatcher, documentResolver, LoggerFactory);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(Dispatcher, documentResolver, LoggerFactory);
|
||||
var request = new LinkedEditingRangeParams
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -124,10 +124,10 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.LinkedEditingRange
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(LegacyDispatcher, documentResolver, LoggerFactory);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(Dispatcher, documentResolver, LoggerFactory);
|
||||
var request = new LinkedEditingRangeParams
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -161,10 +161,10 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.LinkedEditingRange
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(LegacyDispatcher, documentResolver, LoggerFactory);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(Dispatcher, documentResolver, LoggerFactory);
|
||||
var request = new LinkedEditingRangeParams
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -183,10 +183,10 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.LinkedEditingRange
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 />";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(LegacyDispatcher, documentResolver, LoggerFactory);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(Dispatcher, documentResolver, LoggerFactory);
|
||||
var request = new LinkedEditingRangeParams
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -205,10 +205,10 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.LinkedEditingRange
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1><test1></test1></test1>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(LegacyDispatcher, documentResolver, LoggerFactory);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(Dispatcher, documentResolver, LoggerFactory);
|
||||
var request = new LinkedEditingRangeParams
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -242,10 +242,10 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.LinkedEditingRange
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<body></body>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(LegacyDispatcher, documentResolver, LoggerFactory);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(Dispatcher, documentResolver, LoggerFactory);
|
||||
var request = new LinkedEditingRangeParams
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -279,10 +279,10 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.LinkedEditingRange
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<body></body>";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(LegacyDispatcher, documentResolver, LoggerFactory);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(Dispatcher, documentResolver, LoggerFactory);
|
||||
var request = new LinkedEditingRangeParams
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
@ -316,10 +316,10 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.LinkedEditingRange
|
|||
{
|
||||
// Arrange
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<body />";
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
var codeDocument = CreateCodeDocument(txt, isRazorFile: false, DefaultTagHelpers);
|
||||
var uri = new Uri("file://path/test.razor");
|
||||
var documentResolver = CreateDocumentResolver(uri.GetAbsoluteOrUNCPath(), codeDocument);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(LegacyDispatcher, documentResolver, LoggerFactory);
|
||||
var endpoint = new LinkedEditingRangeEndpoint(Dispatcher, documentResolver, LoggerFactory);
|
||||
var request = new LinkedEditingRangeParams
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier(uri),
|
||||
|
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var cts = new CancellationTokenSource();
|
||||
var detector = new TestProjectConfigurationFileChangeDetector(
|
||||
cts,
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
new[] { listener1.Object, listener2.Object },
|
||||
existingConfigurationFiles);
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
public class ProjectConfigurationStateSynchronizerTest : LanguageServerTestBase
|
||||
{
|
||||
[Fact]
|
||||
public void ProjectConfigurationFileChanged_Removed_UnknownDocumentNoops()
|
||||
public async Task ProjectConfigurationFileChanged_Removed_UnknownDocumentNoops()
|
||||
{
|
||||
// Arrange
|
||||
var projectService = new Mock<RazorProjectService>(MockBehavior.Strict);
|
||||
|
@ -32,14 +32,15 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var args = new ProjectConfigurationFileChangeEventArgs("/path/to/project.razor.json", RazorFileChangeKind.Removed, jsonFileDeserializer);
|
||||
|
||||
// Act
|
||||
synchronizer.ProjectConfigurationFileChanged(args);
|
||||
await Dispatcher.RunOnDispatcherThreadAsync(
|
||||
() => synchronizer.ProjectConfigurationFileChanged(args), CancellationToken.None);
|
||||
|
||||
// Assert
|
||||
projectService.VerifyAll();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProjectConfigurationFileChanged_Removed_NonNormalizedPaths()
|
||||
public async Task ProjectConfigurationFileChanged_Removed_NonNormalizedPaths()
|
||||
{
|
||||
// Arrange
|
||||
var projectRazorJson = new ProjectRazorJson(
|
||||
|
@ -66,20 +67,29 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var synchronizer = GetSynchronizer(projectService.Object);
|
||||
var jsonFileDeserializer = CreateJsonFileDeserializer(projectRazorJson);
|
||||
var addArgs = new ProjectConfigurationFileChangeEventArgs("/path/to\\obj/project.razor.json", RazorFileChangeKind.Added, jsonFileDeserializer);
|
||||
synchronizer.ProjectConfigurationFileChanged(addArgs);
|
||||
WaitForEnqueueAsync(synchronizer).Wait();
|
||||
var enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(addArgs);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
var removeArgs = new ProjectConfigurationFileChangeEventArgs("/path/to/obj/project.razor.json", RazorFileChangeKind.Removed, Mock.Of<JsonFileDeserializer>(MockBehavior.Strict));
|
||||
|
||||
// Act
|
||||
synchronizer.ProjectConfigurationFileChanged(removeArgs);
|
||||
WaitForEnqueueAsync(synchronizer).Wait();
|
||||
enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(removeArgs);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
// Assert
|
||||
projectService.VerifyAll();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProjectConfigurationFileChanged_Added_CantDeserialize_Noops()
|
||||
public async Task ProjectConfigurationFileChanged_Added_CantDeserialize_Noops()
|
||||
{
|
||||
// Arrange
|
||||
var projectService = new Mock<RazorProjectService>(MockBehavior.Strict);
|
||||
|
@ -88,14 +98,15 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var args = new ProjectConfigurationFileChangeEventArgs("/path/to/project.razor.json", RazorFileChangeKind.Added, jsonFileDeserializer);
|
||||
|
||||
// Act
|
||||
synchronizer.ProjectConfigurationFileChanged(args);
|
||||
await Dispatcher.RunOnDispatcherThreadAsync(
|
||||
() => synchronizer.ProjectConfigurationFileChanged(args), CancellationToken.None);
|
||||
|
||||
// Assert
|
||||
projectService.VerifyAll();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProjectConfigurationFileChanged_Added_AddAndUpdatesProject()
|
||||
public async Task ProjectConfigurationFileChanged_Added_AddAndUpdatesProject()
|
||||
{
|
||||
// Arrange
|
||||
var projectRazorJson = new ProjectRazorJson(
|
||||
|
@ -118,15 +129,19 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var args = new ProjectConfigurationFileChangeEventArgs("/path/to/obj/project.razor.json", RazorFileChangeKind.Added, jsonFileDeserializer);
|
||||
|
||||
// Act
|
||||
synchronizer.ProjectConfigurationFileChanged(args);
|
||||
WaitForEnqueueAsync(synchronizer).Wait();
|
||||
var enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(args);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
// Assert
|
||||
projectService.VerifyAll();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProjectConfigurationFileChanged_Removed_ResetsProject()
|
||||
public async Task ProjectConfigurationFileChanged_Removed_ResetsProject()
|
||||
{
|
||||
// Arrange
|
||||
var projectRazorJson = new ProjectRazorJson(
|
||||
|
@ -153,20 +168,29 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var synchronizer = GetSynchronizer(projectService.Object);
|
||||
var jsonFileDeserializer = CreateJsonFileDeserializer(projectRazorJson);
|
||||
var addArgs = new ProjectConfigurationFileChangeEventArgs("/path/to/obj/project.razor.json", RazorFileChangeKind.Added, jsonFileDeserializer);
|
||||
synchronizer.ProjectConfigurationFileChanged(addArgs);
|
||||
WaitForEnqueueAsync(synchronizer).Wait();
|
||||
var enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(addArgs);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
var removeArgs = new ProjectConfigurationFileChangeEventArgs("/path/to/obj/project.razor.json", RazorFileChangeKind.Removed, Mock.Of<JsonFileDeserializer>(MockBehavior.Strict));
|
||||
|
||||
// Act
|
||||
synchronizer.ProjectConfigurationFileChanged(removeArgs);
|
||||
WaitForEnqueueAsync(synchronizer).Wait();
|
||||
enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(removeArgs);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
// Assert
|
||||
projectService.VerifyAll();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProjectConfigurationFileChanged_Changed_UpdatesProject()
|
||||
public async Task ProjectConfigurationFileChanged_Changed_UpdatesProject()
|
||||
{
|
||||
// Arrange
|
||||
var initialProjectRazorJson = new ProjectRazorJson(
|
||||
|
@ -203,23 +227,31 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var synchronizer = GetSynchronizer(projectService.Object);
|
||||
var addDeserializer = CreateJsonFileDeserializer(initialProjectRazorJson);
|
||||
var addArgs = new ProjectConfigurationFileChangeEventArgs("path/to/obj/project.razor.json", RazorFileChangeKind.Added, addDeserializer);
|
||||
synchronizer.ProjectConfigurationFileChanged(addArgs);
|
||||
|
||||
WaitForEnqueueAsync(synchronizer).Wait();
|
||||
var enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(addArgs);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
var changedDeserializer = CreateJsonFileDeserializer(changedProjectRazorJson);
|
||||
var changedArgs = new ProjectConfigurationFileChangeEventArgs("path/to/obj/project.razor.json", RazorFileChangeKind.Changed, changedDeserializer);
|
||||
|
||||
// Act
|
||||
synchronizer.ProjectConfigurationFileChanged(changedArgs);
|
||||
WaitForEnqueueAsync(synchronizer).Wait();
|
||||
enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(changedArgs);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
// Assert
|
||||
projectService.VerifyAll();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProjectConfigurationFileChanged_Changed_CantDeserialize_ResetsProject()
|
||||
public async Task ProjectConfigurationFileChanged_Changed_CantDeserialize_ResetsProject()
|
||||
{
|
||||
// Arrange
|
||||
var initialProjectRazorJson = new ProjectRazorJson(
|
||||
|
@ -258,21 +290,30 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var synchronizer = GetSynchronizer(projectService.Object);
|
||||
var addDeserializer = CreateJsonFileDeserializer(initialProjectRazorJson);
|
||||
var addArgs = new ProjectConfigurationFileChangeEventArgs("/path/to/obj/project.razor.json", RazorFileChangeKind.Added, addDeserializer);
|
||||
synchronizer.ProjectConfigurationFileChanged(addArgs);
|
||||
WaitForEnqueueAsync(synchronizer).Wait();
|
||||
var enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(addArgs);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
var changedDeserializer = Mock.Of<JsonFileDeserializer>(d => d.Deserialize<ProjectRazorJson>(It.IsAny<string>()) == null, MockBehavior.Strict);
|
||||
var changedArgs = new ProjectConfigurationFileChangeEventArgs("/path/to/obj/project.razor.json", RazorFileChangeKind.Changed, changedDeserializer);
|
||||
|
||||
// Act
|
||||
synchronizer.ProjectConfigurationFileChanged(changedArgs);
|
||||
WaitForEnqueueAsync(synchronizer).Wait();
|
||||
enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(changedArgs);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
// Assert
|
||||
projectService.VerifyAll();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProjectConfigurationFileChanged_Changed_UntrackedProject_Noops()
|
||||
public async Task ProjectConfigurationFileChanged_Changed_UntrackedProject_Noops()
|
||||
{
|
||||
// Arrange
|
||||
var projectService = new Mock<RazorProjectService>(MockBehavior.Strict);
|
||||
|
@ -281,15 +322,19 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var changedArgs = new ProjectConfigurationFileChangeEventArgs("/path/to/project.razor.json", RazorFileChangeKind.Changed, changedDeserializer);
|
||||
|
||||
// Act
|
||||
synchronizer.ProjectConfigurationFileChanged(changedArgs);
|
||||
WaitForEnqueueAsync(synchronizer, hasTask: false).Wait();
|
||||
var enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(changedArgs);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer, hasTask: false);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
// Assert
|
||||
projectService.VerifyAll();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProjectConfigurationFileChanged_RemoveThenAdd_OnlyAdds()
|
||||
public async Task ProjectConfigurationFileChanged_RemoveThenAdd_OnlyAdds()
|
||||
{
|
||||
// Arrange
|
||||
var projectRazorJson = new ProjectRazorJson(
|
||||
|
@ -317,9 +362,13 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var changedArgs = new ProjectConfigurationFileChangeEventArgs(projectRazorJson.SerializedFilePath, RazorFileChangeKind.Changed, changedDeserializer);
|
||||
|
||||
// Act
|
||||
synchronizer.ProjectConfigurationFileChanged(addedArgs);
|
||||
synchronizer.ProjectConfigurationFileChanged(changedArgs);
|
||||
WaitForEnqueueAsync(synchronizer).Wait();
|
||||
var enqueueTask = await Dispatcher.RunOnDispatcherThreadAsync(async () =>
|
||||
{
|
||||
synchronizer.ProjectConfigurationFileChanged(addedArgs);
|
||||
synchronizer.ProjectConfigurationFileChanged(changedArgs);
|
||||
await WaitForEnqueue_DispatcherThreadAsync(synchronizer);
|
||||
}, CancellationToken.None);
|
||||
await enqueueTask;
|
||||
|
||||
// Assert
|
||||
projectService.Verify(p => p.UpdateProject(
|
||||
|
@ -332,13 +381,13 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
projectService.VerifyAll();
|
||||
}
|
||||
|
||||
private async Task WaitForEnqueueAsync(ProjectConfigurationStateSynchronizer synchronizer, bool hasTask = true)
|
||||
private async Task WaitForEnqueue_DispatcherThreadAsync(ProjectConfigurationStateSynchronizer synchronizer, bool hasTask = true)
|
||||
{
|
||||
Dispatcher.AssertDispatcherThread();
|
||||
if (hasTask)
|
||||
{
|
||||
var kvp = Assert.Single(synchronizer.ProjectInfoMap);
|
||||
await LegacyDispatcher.RunOnDispatcherThreadAsync(
|
||||
() => kvp.Value.ProjectUpdateTask.Wait(), CancellationToken.None).ConfigureAwait(false);
|
||||
await kvp.Value.ProjectUpdateTask;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -348,7 +397,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
|
||||
private ProjectConfigurationStateSynchronizer GetSynchronizer(RazorProjectService razorProjectService)
|
||||
{
|
||||
var synchronizer = new ProjectConfigurationStateSynchronizer(LegacyDispatcher, razorProjectService, FilePathNormalizer, LoggerFactory);
|
||||
var synchronizer = new ProjectConfigurationStateSynchronizer(Dispatcher, razorProjectService, FilePathNormalizer, LoggerFactory);
|
||||
synchronizer.EnqueueDelay = 5;
|
||||
|
||||
return synchronizer;
|
||||
|
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var cts = new CancellationTokenSource();
|
||||
var detector = new TestProjectFileChangeDetector(
|
||||
cts,
|
||||
LegacyDispatcher,
|
||||
Dispatcher,
|
||||
new[] { listener1.Object, listener2.Object },
|
||||
existingProjectFiles);
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
public void ApplyContentChanges_SingleChange()
|
||||
{
|
||||
// Arrange
|
||||
var endpoint = new RazorDocumentSynchronizationEndpoint(LegacyDispatcher, DocumentResolver, ProjectService, LoggerFactory);
|
||||
var endpoint = new RazorDocumentSynchronizationEndpoint(Dispatcher, DocumentResolver, ProjectService, LoggerFactory);
|
||||
var sourceText = SourceText.From("Hello World");
|
||||
var change = new TextDocumentContentChangeEvent()
|
||||
{
|
||||
|
@ -47,7 +47,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
public void ApplyContentChanges_MultipleChanges()
|
||||
{
|
||||
// Arrange
|
||||
var endpoint = new RazorDocumentSynchronizationEndpoint(LegacyDispatcher, DocumentResolver, ProjectService, LoggerFactory);
|
||||
var endpoint = new RazorDocumentSynchronizationEndpoint(Dispatcher, DocumentResolver, ProjectService, LoggerFactory);
|
||||
var sourceText = SourceText.From("Hello World");
|
||||
var changes = new[] {
|
||||
new TextDocumentContentChangeEvent()
|
||||
|
@ -106,7 +106,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
Assert.Equal(documentPath, path);
|
||||
Assert.Equal(1337, version);
|
||||
});
|
||||
var endpoint = new RazorDocumentSynchronizationEndpoint(LegacyDispatcher, documentResolver, projectService.Object, LoggerFactory);
|
||||
var endpoint = new RazorDocumentSynchronizationEndpoint(Dispatcher, documentResolver, projectService.Object, LoggerFactory);
|
||||
var change = new TextDocumentContentChangeEvent()
|
||||
{
|
||||
Range = new Range(new Position(0, 3), new Position(0, 3)),
|
||||
|
@ -145,7 +145,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
Assert.Equal(documentPath, path);
|
||||
Assert.Equal(1337, version);
|
||||
});
|
||||
var endpoint = new RazorDocumentSynchronizationEndpoint(LegacyDispatcher, DocumentResolver, projectService.Object, LoggerFactory);
|
||||
var endpoint = new RazorDocumentSynchronizationEndpoint(Dispatcher, DocumentResolver, projectService.Object, LoggerFactory);
|
||||
var request = new DidOpenTextDocumentParams()
|
||||
{
|
||||
TextDocument = new TextDocumentItem()
|
||||
|
@ -172,7 +172,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var projectService = new Mock<RazorProjectService>(MockBehavior.Strict);
|
||||
projectService.Setup(service => service.CloseDocument(It.IsAny<string>()))
|
||||
.Callback<string>((path) => Assert.Equal(documentPath, path));
|
||||
var endpoint = new RazorDocumentSynchronizationEndpoint(LegacyDispatcher, DocumentResolver, projectService.Object, LoggerFactory);
|
||||
var endpoint = new RazorDocumentSynchronizationEndpoint(Dispatcher, DocumentResolver, projectService.Object, LoggerFactory);
|
||||
var request = new DidCloseTextDocumentParams()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier()
|
||||
|
|
|
@ -53,7 +53,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorMapToDocumentRangesParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorMapToDocumentRangesParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -116,7 +116,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorMapToDocumentRangesParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -147,7 +147,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
new SourceSpan(10, 12))
|
||||
});
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorMapToDocumentRangesParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -171,7 +171,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var documentPath = "C:/path/to/document.cshtml";
|
||||
var codeDocument = CreateCodeDocument("<p>@DateTime.Now</p>");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorMapToDocumentRangesParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Html,
|
||||
|
@ -195,7 +195,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var documentPath = "C:/path/to/document.cshtml";
|
||||
var codeDocument = CreateCodeDocument("<p>@DateTime.Now</p>");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorMapToDocumentRangesParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.Razor,
|
||||
|
@ -227,7 +227,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
});
|
||||
codeDocument.SetUnsupported();
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorMapToDocumentRangesParams()
|
||||
{
|
||||
Kind = RazorLanguageKind.CSharp,
|
||||
|
@ -251,7 +251,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var documentPath = "C:/path/to/document.cshtml";
|
||||
var codeDocument = CreateCodeDocument("@{}");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorLanguageQueryParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -275,7 +275,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
var documentPath = "C:/path/to/document.cshtml";
|
||||
var codeDocument = CreateCodeDocument("<s");
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorLanguageQueryParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -302,7 +302,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
"/* CSharp */",
|
||||
new[] { new SourceMapping(new SourceSpan(0, 1), new SourceSpan(0, 12)) });
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorLanguageQueryParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
@ -331,7 +331,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer
|
|||
new[] { new SourceMapping(new SourceSpan(0, 1), new SourceSpan(0, 12)) });
|
||||
codeDocument.SetUnsupported();
|
||||
var documentResolver = CreateDocumentResolver(documentPath, codeDocument);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(LegacyDispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var languageEndpoint = new RazorLanguageEndpoint(Dispatcher, documentResolver, DocumentVersionCache, MappingService, Mock.Of<RazorFormattingService>(MockBehavior.Strict), LoggerFactory);
|
||||
var request = new RazorLanguageQueryParams()
|
||||
{
|
||||
Uri = new Uri(documentPath),
|
||||
|
|
|
@ -494,9 +494,9 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Refactoring.Test
|
|||
d.TryResolveDocument(itemDirectory1.FilePath, out directory1Component) == true &&
|
||||
d.TryResolveDocument(itemDirectory2.FilePath, out directory2Component) == true, MockBehavior.Strict);
|
||||
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(LegacyDispatcher, projectSnapshotManagerAccessor, LoggerFactory);
|
||||
var searchEngine = new DefaultRazorComponentSearchEngine(Dispatcher, projectSnapshotManagerAccessor, LoggerFactory);
|
||||
languageServerFeatureOptions ??= Mock.Of<LanguageServerFeatureOptions>(options => options.SupportsFileManipulation == true, MockBehavior.Strict);
|
||||
var endpoint = new RazorComponentRenameEndpoint(LegacyDispatcher, documentResolver, searchEngine, projectSnapshotManagerAccessor, languageServerFeatureOptions);
|
||||
var endpoint = new RazorComponentRenameEndpoint(Dispatcher, documentResolver, searchEngine, projectSnapshotManagerAccessor, languageServerFeatureOptions);
|
||||
return endpoint;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,19 +6,16 @@ using System.Collections.Generic;
|
|||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Common;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Extensions;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Formatting;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.JsonRpc;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Semantic;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Semantic.Models;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common;
|
||||
using Microsoft.CodeAnalysis.Razor.ProjectSystem;
|
||||
using Microsoft.CodeAnalysis.Razor.Workspaces.Extensions;
|
||||
using Moq;
|
||||
using OmniSharp.Extensions.JsonRpc;
|
||||
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
|
||||
using Xunit;
|
||||
using OmniSharpRange = OmniSharp.Extensions.LanguageServer.Protocol.Models.Range;
|
||||
using OSharp = OmniSharp.Extensions.LanguageServer.Protocol.Models;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Semantic
|
||||
{
|
||||
|
@ -26,170 +23,169 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Semantic
|
|||
// Finds the test method name using reflection, and uses
|
||||
// that to find the expected input/output test files as Embedded resources.
|
||||
[IntializeTestFile]
|
||||
[UseExportProvider]
|
||||
public class DefaultRazorSemanticTokenInfoServiceTest : SemanticTokenTestBase
|
||||
{
|
||||
#region CSharp
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_CSharp_RazorIfNotReady()
|
||||
{
|
||||
var txt = $@"<p></p>@{{
|
||||
var documentText = @"<p></p>@{
|
||||
var d = ""t"";
|
||||
}}";
|
||||
}
|
||||
";
|
||||
|
||||
var cSharpResponse = new ProvideSemanticTokensResponse(
|
||||
tokens: Array.Empty<int>(), isFinalized: true, hostDocumentSyncVersion: 1);
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false, csharpTokens: cSharpResponse, documentVersion: 1);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 3, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = new ProvideSemanticTokensResponse(
|
||||
tokens: Array.Empty<int>(), isFinalized: false, hostDocumentSyncVersion: 1);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens, documentVersion: 1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_CSharpBlock_HTML()
|
||||
{
|
||||
var txt = @$"@{{
|
||||
var documentText = @"@{
|
||||
var d = ""t"";
|
||||
<p>HTML @d</p>
|
||||
}}";
|
||||
}
|
||||
";
|
||||
|
||||
var csharpTokens = new int[]
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
20, 4, 3, RazorSemanticTokensLegend.CSharpKeyword, 0, // var
|
||||
0, 4, 1, RazorSemanticTokensLegend.CSharpVariable, 0, // d
|
||||
0, 2, 1, RazorSemanticTokensLegend.CSharpOperator, 0, // =
|
||||
0, 2, 1, RazorSemanticTokensLegend.CSharpPunctuation, 0, // "
|
||||
0, 1, 1, RazorSemanticTokensLegend.CSharpString, 0, // t
|
||||
0, 1, 1, RazorSemanticTokensLegend.CSharpPunctuation, 0, // "
|
||||
0, 1, 1, RazorSemanticTokensLegend.CSharpPunctuation, 0, // ;
|
||||
8, 13, 1, RazorSemanticTokensLegend.CSharpVariable, 0, // d
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 4, Character = 0 }
|
||||
};
|
||||
|
||||
var cSharpResponse = new ProvideSemanticTokensResponse(
|
||||
csharpTokens, isFinalized: true, hostDocumentSyncVersion: 0);
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false, csharpTokens: cSharpResponse);
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_CSharp_Nested_HTML()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<!--" +
|
||||
$"@{{" +
|
||||
$"var d = \"string\";" +
|
||||
$"@<a></a>" +
|
||||
$"}}" +
|
||||
$"-->";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<!--@{var d = ""string"";@<a></a>}-->
|
||||
";
|
||||
|
||||
var csharpTokens = new int[]
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
29, 6, 3, RazorSemanticTokensLegend.CSharpKeyword, 0, // var
|
||||
0, 4, 1, RazorSemanticTokensLegend.CSharpVariable, 0, // d
|
||||
0, 2, 1, RazorSemanticTokensLegend.CSharpOperator, 0, // =
|
||||
0, 2, 1, RazorSemanticTokensLegend.CSharpPunctuation, 0, // "
|
||||
0, 1, 6, RazorSemanticTokensLegend.CSharpString, 0, // string
|
||||
0, 6, 1, RazorSemanticTokensLegend.CSharpPunctuation, 0, // "
|
||||
0, 1, 1, RazorSemanticTokensLegend.CSharpPunctuation, 0, // ;
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var cSharpResponse = new ProvideSemanticTokensResponse(
|
||||
csharpTokens, isFinalized: true, hostDocumentSyncVersion: 0);
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false, csharpTokens: cSharpResponse);
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_CSharp_VSCodeWorks()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}@{{ var d = }}";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
@{ var d = }
|
||||
";
|
||||
|
||||
var cSharpResponse = new ProvideSemanticTokensResponse(
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = new ProvideSemanticTokensResponse(
|
||||
tokens: Array.Empty<int>(), isFinalized: true, hostDocumentSyncVersion: null);
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false, csharpTokens: cSharpResponse, documentVersion: 1);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens, documentVersion: 1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_CSharp_Explicit()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}@(DateTime.Now)";
|
||||
var documentText = @$"@addTagHelper *, TestAssembly
|
||||
@(DateTime.Now)
|
||||
";
|
||||
|
||||
var csharpTokens = new int[]
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
29, 6, 8, RazorSemanticTokensLegend.CSharpVariable, 0, // DateTime
|
||||
0, 8, 1, RazorSemanticTokensLegend.CSharpPunctuation, 0, // .
|
||||
0, 1, 3, RazorSemanticTokensLegend.CSharpVariable, 0, // Now
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var cSharpResponse = new ProvideSemanticTokensResponse(csharpTokens, isFinalized: true, hostDocumentSyncVersion: 0);
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false, csharpTokens: cSharpResponse);
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_CSharp_Implicit()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}@{{ var d = \"txt\";}}{Environment.NewLine}" +
|
||||
$"@d";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
@{ var d = ""txt"";}
|
||||
@d
|
||||
";
|
||||
|
||||
var csharpTokens = new int[]
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
29, 3, 3, RazorSemanticTokensLegend.CSharpKeyword, 0, // var
|
||||
0, 4, 1, RazorSemanticTokensLegend.CSharpVariable, 0, // d
|
||||
0, 2, 1, RazorSemanticTokensLegend.CSharpOperator, 0, // =
|
||||
0, 2, 1, RazorSemanticTokensLegend.CSharpOperator, 0, // "
|
||||
0, 1, 3, RazorSemanticTokensLegend.CSharpString, 0, // txt
|
||||
0, 3, 1, RazorSemanticTokensLegend.CSharpOperator, 0, // "
|
||||
0, 1, 1, RazorSemanticTokensLegend.CSharpOperator, 0, // ;
|
||||
7, 6, 1, RazorSemanticTokensLegend.CSharpVariable, 0, // d
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 3, Character = 0 }
|
||||
};
|
||||
|
||||
var cSharpResponse = new ProvideSemanticTokensResponse(csharpTokens, isFinalized: true, hostDocumentSyncVersion: 0);
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false, csharpTokens: cSharpResponse);
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_CSharp_VersionMismatch()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}@{{ var d = }}";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
@{ var d = }
|
||||
";
|
||||
|
||||
var csharpTokens = new int[]
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
29, 3, 3, RazorSemanticTokensLegend.CSharpKeyword, 0, // var
|
||||
0, 4, 1, RazorSemanticTokensLegend.CSharpVariable, 0, // d
|
||||
0, 2, 1, RazorSemanticTokensLegend.CSharpOperator, 0, // =
|
||||
11, 10, 25, RazorSemanticTokensLegend.CSharpKeyword, 0, // No mapping
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var cSharpResponse = new ProvideSemanticTokensResponse(csharpTokens, isFinalized: true, hostDocumentSyncVersion: 42);
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false, csharpTokens: cSharpResponse, documentVersion: 21);
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens, documentVersion: 21);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_CSharp_FunctionAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}@{{ var d = }}";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
@{ var d = }
|
||||
";
|
||||
|
||||
var csharpTokens = new int[]
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
29, 3, 3, RazorSemanticTokensLegend.CSharpKeyword, 0, // var
|
||||
0, 4, 1, RazorSemanticTokensLegend.CSharpVariable, 0, // d
|
||||
0, 2, 1, RazorSemanticTokensLegend.CSharpOperator, 0, // =
|
||||
4, 5, 1, RazorSemanticTokensLegend.CSharpKeyword, 0, // No mapping
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var cSharpResponse = new ProvideSemanticTokensResponse(csharpTokens, isFinalized: true, hostDocumentSyncVersion: 0);
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false, csharpTokens: cSharpResponse);
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_CSharp_StaticModifierAsync()
|
||||
public async Task GetSemanticTokens_CSharp_StaticModifier()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}@{{ var d = }}";
|
||||
var documentText = @"@code
|
||||
{
|
||||
static int x = 1;
|
||||
}
|
||||
";
|
||||
|
||||
var csharpTokens = new int[]
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
29, 3, 3, RazorSemanticTokensLegend.CSharpKeyword, 0, // var
|
||||
0, 4, 1, RazorSemanticTokensLegend.CSharpVariable, 1, // d
|
||||
0, 2, 1, RazorSemanticTokensLegend.CSharpOperator, 0, // =
|
||||
4, 5, 1, RazorSemanticTokensLegend.CSharpKeyword, 0, // No mapping
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 4, Character = 0 }
|
||||
};
|
||||
|
||||
var cSharpResponse = new ProvideSemanticTokensResponse(csharpTokens, isFinalized: true, hostDocumentSyncVersion: 0);
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false, csharpTokens: cSharpResponse);
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
@ -197,57 +193,120 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Semantic
|
|||
[Fact]
|
||||
public async Task GetSemanticTokens_MultipleBlankLines()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}{Environment.NewLine}{Environment.NewLine}<p>first{Environment.NewLine}second</p>";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
<p>first
|
||||
second</p>
|
||||
";
|
||||
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 4, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_IncompleteTag()
|
||||
{
|
||||
var txt = "<str class='";
|
||||
var documentText = @"<str class='
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 1, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_MinimizedHTMLAttribute()
|
||||
{
|
||||
var txt = "<p attr />";
|
||||
var documentText = @"<p attr />
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 1, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_MinimizedHTMLAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<input/> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<input/>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_HTMLCommentAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<!-- comment with comma's --> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<!-- comment with comma's -->
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_PartialHTMLCommentAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<!-- comment";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<!-- comment
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_HTMLIncludesBang()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<!input/>";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<!input/>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
@ -255,65 +314,137 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Semantic
|
|||
[Fact]
|
||||
public async Task GetSemanticTokens_HalfOfCommentAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}@* comment";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
@* comment
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_NoAttributesAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<test1></test1>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_WithAttributeAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val='true'></test1> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<test1 bool-val='true'></test1>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_MinimizedAttribute_BoundAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val></test1> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<test1 bool-val></test1>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_MinimizedAttribute_NotBoundAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 notbound></test1> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<test1 notbound></test1>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_IgnoresNonTagHelperAttributesAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val='true' class='display:none'></test1> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<test1 bool-val='true' class='display:none'></test1>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_TagHelpersNotAvailableInRazorAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val='true' class='display:none'></test1> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<test1 bool-val='true' class='display:none'></test1>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_DoesNotApplyOnNonTagHelpersAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<p bool-val='true'></p> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<p bool-val='true'></p>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
#endregion TagHelpers
|
||||
|
||||
|
@ -322,85 +453,136 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Semantic
|
|||
public async Task GetSemanticTokens_Razor_MinimizedDirectiveAttributeParameters()
|
||||
{
|
||||
// Capitalized, non-well-known-HTML elements should not be marked as TagHelpers
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<NotATagHelp @minimized:something /> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
}<NotATagHelp @minimized:something />
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_ComponentAttributeAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<Component1 bool-val=\"true\"></Component1>";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<Component1 bool-val=""true""></Component1>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_DirectiveAttributesParametersAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<Component1 @test:something='Function'></Component1> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<Component1 @test:something='Function'></Component1>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_NonComponentsDoNotShowInRazorAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 bool-val='true'></test1> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<test1 bool-val='true'></test1>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_DirectivesAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<Component1 @test='Function'></Component1> ";
|
||||
var documentText = @"@addTagHelper *, TestAssembly
|
||||
<Component1 @test='Function'></Component1>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_HandleTransitionEscape()
|
||||
{
|
||||
var txt = $"@@text";
|
||||
var documentText = @"@@text
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 1, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_DoNotColorNonTagHelpersAsync()
|
||||
{
|
||||
var txt = $"{Environment.NewLine}<p @test='Function'></p> ";
|
||||
var documentText = @"
|
||||
<p @test='Function'></p>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_DoesNotApplyOnNonTagHelpersAsync()
|
||||
{
|
||||
var txt = $"@addTagHelpers *, TestAssembly{Environment.NewLine}<p></p> ";
|
||||
var documentText = @"@addTagHelpers *, TestAssembly
|
||||
<p></p>
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
}
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
[Fact(Skip = "https://github.com/dotnet/razor-tooling/issues/5948")]
|
||||
public async Task GetSemanticTokens_Razor_InRangeAsync()
|
||||
{
|
||||
var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1> ";
|
||||
|
||||
var startIndex = txt.IndexOf("test1", StringComparison.Ordinal); ;
|
||||
var endIndex = startIndex + 5;
|
||||
|
||||
var codeDocument = CreateCodeDocument(txt, DefaultTagHelpers);
|
||||
|
||||
codeDocument.GetSourceText().GetLineAndOffset(startIndex, out var startLine, out var startChar);
|
||||
codeDocument.GetSourceText().GetLineAndOffset(endIndex, out var endLine, out var endChar);
|
||||
|
||||
var startPosition = new Position(startLine, startChar);
|
||||
var endPosition = new Position(endLine, endChar);
|
||||
var location = new OmniSharpRange(startPosition, endPosition);
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false, range: location);
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
#endregion DirectiveAttributes
|
||||
|
||||
|
@ -408,120 +590,186 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Semantic
|
|||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_CodeDirectiveAsync()
|
||||
{
|
||||
var txt = $"@code {{}}";
|
||||
var documentText = @"@code {}
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 1, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_CodeDirectiveBodyAsync()
|
||||
{
|
||||
var txt = @$"@code {{
|
||||
var documentText = @"@code {
|
||||
public void SomeMethod()
|
||||
{{
|
||||
{
|
||||
@DateTime.Now
|
||||
}}
|
||||
}}";
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 6, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_UsingDirective()
|
||||
{
|
||||
var txt = $"@using Microsoft.AspNetCore.Razor";
|
||||
var documentText = @"@using Microsoft.AspNetCore.Razor
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 1, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_FunctionsDirectiveAsync()
|
||||
{
|
||||
var txt = $"@functions {{}}";
|
||||
var documentText = @"@functions {}
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 1, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_NestedTextDirectives()
|
||||
{
|
||||
var txt = @$"@functions {{
|
||||
var documentText = @"@functions {
|
||||
private void BidsByShipment(string generatedId, int bids)
|
||||
{{
|
||||
{
|
||||
if (bids > 0)
|
||||
{{
|
||||
{
|
||||
<a class=""Thing"">
|
||||
@if(bids > 0)
|
||||
{{
|
||||
{
|
||||
<text>@DateTime.Now</text>
|
||||
}}
|
||||
}
|
||||
</a>
|
||||
}}
|
||||
}}";
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 14, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_NestedTransitions()
|
||||
{
|
||||
var txt = @$"@functions {{
|
||||
var documentText = @"@functions {
|
||||
Action<object> abc = @<span></span>;
|
||||
}}";
|
||||
}
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 3, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
#endregion
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_CommentAsync()
|
||||
{
|
||||
var txt = $"@* A comment *@";
|
||||
var documentText = @"@* A comment *@
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: true);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 1, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: true);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: true, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_MultiLineCommentMidlineAsync()
|
||||
{
|
||||
var txt = $@"<a />@* kdl
|
||||
var documentText = @"<a />@* kdl
|
||||
skd
|
||||
slf*@";
|
||||
slf*@
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetSemanticTokens_Razor_MultiLineCommentAsync()
|
||||
{
|
||||
var txt = $"@* {Environment.NewLine}" +
|
||||
$"stuff{Environment.NewLine}" +
|
||||
$" things *@";
|
||||
var documentText = @$"@*stuff
|
||||
things *@
|
||||
";
|
||||
|
||||
await AssertSemanticTokensAsync(txt, isRazor: false);
|
||||
var razorRange = new OSharp.Range
|
||||
{
|
||||
Start = new OSharp.Position { Line = 0, Character = 0 },
|
||||
End = new OSharp.Position { Line = 2, Character = 0 }
|
||||
};
|
||||
|
||||
var csharpTokens = await GetCSharpSemanticTokensResponseAsync(documentText, razorRange, isRazorFile: false);
|
||||
await AssertSemanticTokensAsync(documentText, isRazorFile: false, razorRange, csharpTokens: csharpTokens);
|
||||
}
|
||||
|
||||
private async Task AssertSemanticTokensAsync(
|
||||
string txt,
|
||||
bool isRazor,
|
||||
OmniSharpRange? range = null,
|
||||
string documentText,
|
||||
bool isRazorFile,
|
||||
OSharp.Range range,
|
||||
RazorSemanticTokensInfoService? service = null,
|
||||
ProvideSemanticTokensResponse? csharpTokens = null,
|
||||
int? documentVersion = 0)
|
||||
{
|
||||
if (range is null)
|
||||
{
|
||||
var lines = txt.Split(Environment.NewLine);
|
||||
range = new OmniSharpRange { Start = new Position { Line = 0, Character = 0 }, End = new Position { Line = lines.Length - 1, Character = lines[^1].Length } };
|
||||
};
|
||||
|
||||
await AssertSemanticTokensAsync(new string[] { txt }, new bool[] { isRazor }, range, service, csharpTokens, documentVersion);
|
||||
await AssertSemanticTokensAsync(new string[] { documentText }, new bool[] { isRazorFile }, range, service, csharpTokens, documentVersion);
|
||||
}
|
||||
|
||||
private async Task AssertSemanticTokensAsync(
|
||||
string[] txtArray,
|
||||
string[] documentTexts,
|
||||
bool[] isRazorArray,
|
||||
OmniSharpRange range,
|
||||
OSharp.Range range,
|
||||
RazorSemanticTokensInfoService? service = null,
|
||||
ProvideSemanticTokensResponse? csharpTokens = null,
|
||||
int? documentVersion = 0)
|
||||
|
@ -537,7 +785,7 @@ slf*@";
|
|||
csharpTokens = new ProvideSemanticTokensResponse(tokens: null, isFinalized: true, documentVersion);
|
||||
}
|
||||
|
||||
var (documentSnapshots, textDocumentIdentifiers) = CreateDocumentSnapshot(txtArray, isRazorArray, DefaultTagHelpers);
|
||||
var (documentSnapshots, textDocumentIdentifiers) = CreateDocumentSnapshot(documentTexts, isRazorArray, DefaultTagHelpers);
|
||||
|
||||
if (service is null)
|
||||
{
|
||||
|
@ -565,12 +813,12 @@ slf*@";
|
|||
|
||||
var languageServer = new Mock<ClientNotifierServiceBase>(MockBehavior.Strict);
|
||||
languageServer
|
||||
.Setup(l => l.SendRequestAsync(LanguageServerConstants.RazorProvideSemanticTokensRangeEndpoint, It.IsAny<SemanticTokensParams>()))
|
||||
.Setup(l => l.SendRequestAsync(LanguageServerConstants.RazorProvideSemanticTokensRangeEndpoint, It.IsAny<OSharp.SemanticTokensParams>()))
|
||||
.Returns(Task.FromResult(responseRouterReturns.Object));
|
||||
|
||||
var documentMappingService = new DefaultRazorDocumentMappingService(TestLoggerFactory.Instance);
|
||||
var loggingFactory = TestLoggerFactory.Instance;
|
||||
var projectSnapshotManagerDispatcher = LegacyDispatcher;
|
||||
var projectSnapshotManagerDispatcher = Dispatcher;
|
||||
var documentResolver = new TestDocumentResolver(documentSnapshots);
|
||||
|
||||
var documentVersionCache = new Mock<DocumentVersionCache>(MockBehavior.Strict);
|
||||
|
|
|
@ -6,23 +6,42 @@ using System.Collections.Generic;
|
|||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Razor.Language;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Completion;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Extensions;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.JsonRpc;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Semantic.Models;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Test.Common;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.Razor.Workspaces.Extensions;
|
||||
using Microsoft.CodeAnalysis.Text;
|
||||
using Microsoft.VisualStudio.LanguageServer.Protocol;
|
||||
using Xunit;
|
||||
using Xunit.Sdk;
|
||||
using OS = OmniSharp.Extensions.LanguageServer.Protocol.Models;
|
||||
using VS = Microsoft.VisualStudio.LanguageServer.Protocol;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.LanguageServer.Semantic
|
||||
{
|
||||
public abstract class SemanticTokenTestBase : TagHelperServiceTestBase
|
||||
{
|
||||
private static readonly AsyncLocal<string?> s_fileName = new AsyncLocal<string?>();
|
||||
private static readonly AsyncLocal<string?> s_fileName = new();
|
||||
|
||||
private static readonly string s_projectPath = TestProject.GetProjectDirectory(typeof(TagHelperServiceTestBase));
|
||||
|
||||
protected static readonly ServerCapabilities SemanticTokensServerCapabilities = new()
|
||||
{
|
||||
SemanticTokensOptions = new()
|
||||
{
|
||||
Full = false,
|
||||
Range = true
|
||||
}
|
||||
};
|
||||
|
||||
// Used by the test framework to set the 'base' name for test files.
|
||||
public static string? FileName
|
||||
{
|
||||
|
@ -39,7 +58,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Semantic
|
|||
protected int BaselineTestCount { get; set; }
|
||||
protected int BaselineEditTestCount { get; set; }
|
||||
|
||||
internal void AssertSemanticTokensMatchesBaseline(IEnumerable<int>? actualSemanticTokens)
|
||||
protected void AssertSemanticTokensMatchesBaseline(IEnumerable<int>? actualSemanticTokens)
|
||||
{
|
||||
if (FileName is null)
|
||||
{
|
||||
|
@ -79,7 +98,7 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Semantic
|
|||
Assert.True(semanticArray.Length == actual.Length, $"Expected length: {semanticArray.Length}, Actual length: {actual.Length}");
|
||||
}
|
||||
|
||||
internal int[]? GetBaselineTokens(string baselineFileName)
|
||||
protected int[]? GetBaselineTokens(string baselineFileName)
|
||||
{
|
||||
var semanticFile = TestFile.Create(baselineFileName, GetType().GetTypeInfo().Assembly);
|
||||
if (!semanticFile.Exists())
|
||||
|
@ -92,6 +111,58 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Semantic
|
|||
return semanticArray;
|
||||
}
|
||||
|
||||
private protected async Task<ProvideSemanticTokensResponse> GetCSharpSemanticTokensResponseAsync(
|
||||
string documentText, OS.Range razorRange, bool isRazorFile, int hostDocumentSyncVersion = 0)
|
||||
{
|
||||
var codeDocument = CreateCodeDocument(documentText, isRazorFile, DefaultTagHelpers);
|
||||
var csharpRange = GetMappedCSharpRange(codeDocument, razorRange);
|
||||
var csharpTokens = Array.Empty<int>();
|
||||
var isFinalized = true;
|
||||
|
||||
if (csharpRange is not null)
|
||||
{
|
||||
var csharpSourceText = codeDocument.GetCSharpSourceText();
|
||||
var files = new List<(Uri, SourceText)>();
|
||||
var documentUri = new Uri("C:\\TestSolution\\TestProject\\TestDocument.cs");
|
||||
files.Add((documentUri, csharpSourceText));
|
||||
|
||||
var exportProvider = TestCompositions.Roslyn.ExportProviderFactory.CreateExportProvider();
|
||||
using var workspace = CreateTestWorkspace(files, exportProvider);
|
||||
await using var csharpLspServer = await CreateCSharpLspServerAsync(workspace, exportProvider, SemanticTokensServerCapabilities);
|
||||
|
||||
var result = await csharpLspServer.ExecuteRequestAsync<SemanticTokensRangeParams, VSSemanticTokensResponse>(
|
||||
Methods.TextDocumentSemanticTokensRangeName,
|
||||
CreateVSSemanticTokensRangeParams(csharpRange.AsVSRange(), documentUri), CancellationToken.None);
|
||||
|
||||
csharpTokens = result?.Data;
|
||||
isFinalized = result?.IsFinalized ?? false;
|
||||
}
|
||||
|
||||
var csharpResponse = new ProvideSemanticTokensResponse(
|
||||
tokens: csharpTokens, isFinalized, hostDocumentSyncVersion);
|
||||
return csharpResponse;
|
||||
}
|
||||
|
||||
protected static OS.Range? GetMappedCSharpRange(RazorCodeDocument codeDocument, OS.Range razorRange)
|
||||
{
|
||||
var documentMappingService = new DefaultRazorDocumentMappingService(TestLoggerFactory.Instance);
|
||||
if (!documentMappingService.TryMapToProjectedDocumentRange(codeDocument, razorRange, out var csharpRange) &&
|
||||
!DefaultRazorSemanticTokensInfoService.TryGetMinimalCSharpRange(codeDocument, razorRange, out csharpRange))
|
||||
{
|
||||
// No C# in the range.
|
||||
return null;
|
||||
}
|
||||
|
||||
return csharpRange;
|
||||
}
|
||||
|
||||
protected static SemanticTokensRangeParams CreateVSSemanticTokensRangeParams(VS.Range range, Uri uri)
|
||||
=> new()
|
||||
{
|
||||
TextDocument = new TextDocumentIdentifier { Uri = uri },
|
||||
Range = range
|
||||
};
|
||||
|
||||
private static void GenerateSemanticBaseline(IEnumerable<int>? actual, string baselineFileName)
|
||||
{
|
||||
var builder = new StringBuilder();
|
||||
|
@ -140,5 +211,11 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Semantic
|
|||
|
||||
return results.ToArray();
|
||||
}
|
||||
|
||||
private class VSSemanticTokensResponse : SemanticTokens
|
||||
{
|
||||
[DataMember(Name = "isFinalized")]
|
||||
public bool IsFinalized { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,15 @@
|
|||
0 0 1 84 0 //razorTransition
|
||||
0 1 1 84 0 //razorTransition
|
||||
1 4 3 15 0 //keyword
|
||||
0 4 1 8 0 //variable
|
||||
0 4 1 34 0 //local name
|
||||
0 2 1 21 0 //operator
|
||||
0 2 1 43 0 //punctuation
|
||||
0 1 1 18 0 //string
|
||||
0 1 1 43 0 //punctuation
|
||||
0 1 1 43 0 //punctuation
|
||||
0 2 3 18 0 //string
|
||||
0 3 1 43 0 //punctuation
|
||||
1 4 1 91 0 //markupTagDelimiter
|
||||
0 1 1 92 0 //markupElement
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 6 1 84 0 //razorTransition
|
||||
0 1 1 8 0 //variable
|
||||
0 1 1 34 0 //local name
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 1 1 92 0 //markupElement
|
||||
|
|
|
@ -4,6 +4,6 @@
|
|||
1 0 1 84 0 //razorTransition
|
||||
0 1 1 84 0 //razorTransition
|
||||
0 1 8 8 0 //variable
|
||||
0 8 1 43 0 //punctuation
|
||||
0 8 1 21 0 //operator
|
||||
0 1 3 8 0 //variable
|
||||
0 3 1 84 0 //razorTransition
|
||||
|
|
|
@ -4,6 +4,6 @@
|
|||
1 0 1 84 0 //razorTransition
|
||||
0 1 1 84 0 //razorTransition
|
||||
0 2 3 15 0 //keyword
|
||||
0 4 1 8 0 //variable
|
||||
0 4 1 34 0 //local name
|
||||
0 2 1 21 0 //operator
|
||||
0 2 1 84 0 //razorTransition
|
||||
|
|
|
@ -4,12 +4,10 @@
|
|||
1 0 1 84 0 //razorTransition
|
||||
0 1 1 84 0 //razorTransition
|
||||
0 2 3 15 0 //keyword
|
||||
0 4 1 8 0 //variable
|
||||
0 4 1 34 0 //local name
|
||||
0 2 1 21 0 //operator
|
||||
0 2 1 21 0 //operator
|
||||
0 1 3 18 0 //string
|
||||
0 3 1 21 0 //operator
|
||||
0 1 1 21 0 //operator
|
||||
0 2 5 18 0 //string
|
||||
0 5 1 43 0 //punctuation
|
||||
0 1 1 84 0 //razorTransition
|
||||
1 0 1 84 0 //razorTransition
|
||||
0 1 1 8 0 //variable
|
||||
0 1 1 34 0 //local name
|
||||
|
|
|
@ -5,12 +5,10 @@
|
|||
0 4 1 84 0 //razorTransition
|
||||
0 1 1 84 0 //razorTransition
|
||||
0 1 3 15 0 //keyword
|
||||
0 4 1 8 0 //variable
|
||||
0 4 1 34 0 //local name
|
||||
0 2 1 21 0 //operator
|
||||
0 2 1 43 0 //punctuation
|
||||
0 1 6 18 0 //string
|
||||
0 6 1 43 0 //punctuation
|
||||
0 1 1 43 0 //punctuation
|
||||
0 2 8 18 0 //string
|
||||
0 8 1 43 0 //punctuation
|
||||
0 1 1 84 0 //razorTransition
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 1 1 92 0 //markupElement
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 4 87 0 //razorDirective
|
||||
1 0 1 84 0 //razorTransition
|
||||
1 4 6 15 0 //keyword
|
||||
0 7 3 15 0 //keyword
|
||||
0 4 1 31 1 //field name
|
||||
0 2 1 21 0 //operator
|
||||
0 2 1 19 0 //number
|
||||
0 1 1 43 0 //punctuation
|
||||
1 0 1 84 0 //razorTransition
|
|
@ -1,9 +0,0 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
1 0 1 84 0 //razorTransition
|
||||
0 1 1 84 0 //razorTransition
|
||||
0 2 3 15 0 //keyword
|
||||
0 4 1 8 1 //variable
|
||||
0 2 1 21 0 //operator
|
||||
0 2 1 84 0 //razorTransition
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 1 92 0 //markupElement
|
||||
0 2 8 94 0 //markupAttribute
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 4 97 0 //markupCommentPunctuation
|
||||
0 4 22 98 0 //markupComment
|
||||
0 22 3 97 0 //markupCommentPunctuation
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 1 84 0 //razorTransition
|
||||
0 1 5 92 0 //markupElement
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 89 0 //razorCommentTransition
|
||||
0 1 1 90 0 //razorCommentStar
|
||||
0 1 8 88 0 //razorComment
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
0 6 8 83 0 //razorTagHelperAttribute
|
||||
0 8 1 93 0 //markupOperator
|
||||
0 1 1 95 0 //markupAttributeQuote
|
||||
0 5 1 95 0 //markupAttributeQuote
|
||||
0 1 4 15 0 //keyword
|
||||
0 4 1 95 0 //markupAttributeQuote
|
||||
0 2 5 94 0 //markupAttribute
|
||||
0 5 1 93 0 //markupOperator
|
||||
0 1 1 95 0 //markupAttributeQuote
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 5 82 0 //razorTagHelperElement
|
||||
0 6 8 83 0 //razorTagHelperAttribute
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 5 82 0 //razorTagHelperElement
|
||||
0 6 8 94 0 //markupAttribute
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 5 92 0 //markupElement
|
||||
0 5 1 91 0 //markupTagDelimiter
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
3 0 1 91 0 //markupTagDelimiter
|
||||
0 13 15 18 0 //string
|
||||
2 0 1 91 0 //markupTagDelimiter
|
||||
0 1 1 92 0 //markupElement
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
1 6 1 91 0 //markupTagDelimiter
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 5 82 0 //razorTagHelperElement
|
||||
0 5 1 91 0 //markupTagDelimiter
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
|
|
|
@ -2,5 +2,15 @@
|
|||
0 0 1 84 0 //razorTransition
|
||||
0 1 4 87 0 //razorDirective
|
||||
0 5 1 84 0 //razorTransition
|
||||
3 0 1 84 0 //razorTransition
|
||||
2 0 1 84 0 //razorTransition
|
||||
1 4 6 15 0 //keyword
|
||||
0 7 4 15 0 //keyword
|
||||
0 5 10 35 0 //method name
|
||||
0 10 1 43 0 //punctuation
|
||||
0 1 1 43 0 //punctuation
|
||||
1 4 1 43 0 //punctuation
|
||||
1 0 1 84 0 //razorTransition
|
||||
0 1 8 8 0 //variable
|
||||
0 8 1 21 0 //operator
|
||||
0 1 3 8 0 //variable
|
||||
1 4 1 43 0 //punctuation
|
||||
1 0 1 84 0 //razorTransition
|
||||
|
|
|
@ -3,10 +3,11 @@
|
|||
0 1 12 87 0 //razorDirective
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 10 100 0 //razorComponentElement
|
||||
0 11 8 101 0 //razorComponentAttribute
|
||||
0 11 8 101 0 //RazorComponentAttribute
|
||||
0 8 1 93 0 //markupOperator
|
||||
0 1 1 95 0 //markupAttributeQuote
|
||||
0 5 1 95 0 //markupAttributeQuote
|
||||
0 1 4 15 0 //keyword
|
||||
0 4 1 95 0 //markupAttributeQuote
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 10 100 0 //razorComponentElement
|
||||
0 11 1 84 0 //razorTransition
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 10 100 0 //razorComponentElement
|
||||
0 11 1 84 0 //razorTransition
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 13 8 0 //variable
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 1 92 0 //markupElement
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 13 15 18 0 //string
|
||||
1 1 1 91 0 //markupTagDelimiter
|
||||
0 1 11 92 0 //markupElement
|
||||
0 12 1 84 0 //razorTransition
|
||||
0 1 9 86 0 //razorDirectiveAttribute
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 89 0 //razorCommentTransition
|
||||
0 1 1 90 0 //razorCommentStar
|
||||
0 1 1 88 0 //razorComment
|
||||
1 0 5 88 0 //razorComment
|
||||
1 0 8 88 0 //razorComment
|
||||
0 8 1 90 0 //razorCommentStar
|
||||
0 1 5 88 0 //razorComment
|
||||
1 0 7 88 0 //razorComment
|
||||
0 7 1 90 0 //razorCommentStar
|
||||
0 1 1 89 0 //razorCommentTransition
|
||||
|
|
|
@ -2,7 +2,25 @@
|
|||
0 0 1 84 0 //razorTransition
|
||||
0 1 9 87 0 //razorDirective
|
||||
0 10 1 84 0 //razorTransition
|
||||
5 24 1 91 0 //markupTagDelimiter
|
||||
1 16 7 15 0 //keyword
|
||||
0 8 4 15 0 //keyword
|
||||
0 5 14 35 0 //method name
|
||||
0 14 1 43 0 //punctuation
|
||||
0 1 6 15 0 //keyword
|
||||
0 7 11 39 0 //parameter name
|
||||
0 11 1 43 0 //punctuation
|
||||
0 2 3 15 0 //keyword
|
||||
0 4 4 39 0 //parameter name
|
||||
0 4 1 43 0 //punctuation
|
||||
1 16 1 43 0 //punctuation
|
||||
1 20 2 24 0 //keyword - control
|
||||
0 3 1 43 0 //punctuation
|
||||
0 1 4 39 0 //parameter name
|
||||
0 5 1 21 0 //operator
|
||||
0 2 1 19 0 //number
|
||||
0 1 1 43 0 //punctuation
|
||||
1 20 1 43 0 //punctuation
|
||||
1 24 1 91 0 //markupTagDelimiter
|
||||
0 1 1 92 0 //markupElement
|
||||
0 2 5 94 0 //markupAttribute
|
||||
0 5 1 93 0 //markupOperator
|
||||
|
@ -11,10 +29,24 @@
|
|||
0 5 1 95 0 //markupAttributeQuote
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
1 28 1 84 0 //razorTransition
|
||||
2 32 6 87 0 //razorDirective
|
||||
0 1 2 24 0 //keyword - control
|
||||
0 2 1 43 0 //punctuation
|
||||
0 1 4 39 0 //parameter name
|
||||
0 5 1 21 0 //operator
|
||||
0 2 1 19 0 //number
|
||||
0 1 1 43 0 //punctuation
|
||||
1 28 1 43 0 //punctuation
|
||||
1 32 6 87 0 //razorDirective
|
||||
0 6 1 84 0 //razorTransition
|
||||
0 13 7 87 0 //razorDirective
|
||||
2 24 1 91 0 //markupTagDelimiter
|
||||
0 1 8 8 0 //variable
|
||||
0 8 1 21 0 //operator
|
||||
0 1 3 8 0 //variable
|
||||
0 3 7 87 0 //razorDirective
|
||||
1 28 1 43 0 //punctuation
|
||||
1 24 1 91 0 //markupTagDelimiter
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 1 1 92 0 //markupElement
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
1 20 1 43 0 //punctuation
|
||||
1 16 1 43 0 //punctuation
|
||||
1 12 1 84 0 //razorTransition
|
||||
|
|
|
@ -2,7 +2,13 @@
|
|||
0 0 1 84 0 //razorTransition
|
||||
0 1 9 87 0 //razorDirective
|
||||
0 10 1 84 0 //razorTransition
|
||||
1 37 1 84 0 //razorTransition
|
||||
1 16 6 8 0 //variable
|
||||
0 6 1 43 0 //punctuation
|
||||
0 1 6 15 0 //keyword
|
||||
0 6 1 43 0 //punctuation
|
||||
0 2 3 31 0 //field name
|
||||
0 4 1 21 0 //operator
|
||||
0 2 1 84 0 //razorTransition
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 1 4 92 0 //markupElement
|
||||
0 4 1 91 0 //markupTagDelimiter
|
||||
|
@ -10,4 +16,5 @@
|
|||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 1 4 92 0 //markupElement
|
||||
0 4 1 91 0 //markupTagDelimiter
|
||||
0 1 1 43 0 //punctuation
|
||||
1 12 1 84 0 //razorTransition
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 5 92 0 //markupElement
|
||||
0 6 8 94 0 //markupAttribute
|
||||
|
|
|
@ -1,2 +1,8 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 5 15 0 //keyword
|
||||
0 6 9 8 0 //variable
|
||||
0 9 1 21 0 //operator
|
||||
0 1 10 8 0 //variable
|
||||
0 10 1 21 0 //operator
|
||||
0 1 5 8 0 //variable
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//line,characterPos,length,tokenType,modifier
|
||||
0 0 1 84 0 //razorTransition
|
||||
0 1 12 87 0 //razorDirective
|
||||
0 13 15 18 0 //string
|
||||
1 0 1 91 0 //markupTagDelimiter
|
||||
0 1 5 92 0 //markupElement
|
||||
0 6 8 94 0 //markupAttribute
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
0 6 8 83 0 //razorTagHelperAttribute
|
||||
0 8 1 93 0 //markupOperator
|
||||
0 1 1 95 0 //markupAttributeQuote
|
||||
0 5 1 95 0 //markupAttributeQuote
|
||||
0 1 4 15 0 //keyword
|
||||
0 4 1 95 0 //markupAttributeQuote
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
0 1 1 91 0 //markupTagDelimiter
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"methodDisplay": "method",
|
||||
"shadowCopy": false
|
||||
"shadowCopy": false,
|
||||
"parallelizeTestCollections": false
|
||||
}
|
|
@ -24,6 +24,8 @@ namespace Microsoft.AspNetCore.Razor.Test.Common
|
|||
private static readonly ConcurrentDictionary<string, Scope> s_scopes = new();
|
||||
private const string DefaultScope = "default";
|
||||
|
||||
private static readonly object s_lock = new();
|
||||
|
||||
internal static bool Enabled { get; private set; }
|
||||
|
||||
internal static ExportProvider[] ExportProvidersForCleanup
|
||||
|
@ -44,12 +46,15 @@ namespace Microsoft.AspNetCore.Razor.Test.Common
|
|||
|
||||
internal static void SetEnabled_OnlyUseExportProviderAttributeCanCall(bool value)
|
||||
{
|
||||
Enabled = value;
|
||||
if (!Enabled)
|
||||
lock (s_lock)
|
||||
{
|
||||
foreach (var scope in s_scopes.Values.ToArray())
|
||||
Enabled = value;
|
||||
if (!Enabled)
|
||||
{
|
||||
scope.Clear();
|
||||
foreach (var scope in s_scopes.Values.ToArray())
|
||||
{
|
||||
scope.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -146,7 +151,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Common
|
|||
_exportProviderFactory = exportProviderFactory;
|
||||
}
|
||||
|
||||
public ExportProvider GetOrCreateExportProvider()
|
||||
private ExportProvider GetOrCreateExportProvider()
|
||||
{
|
||||
if (!Enabled)
|
||||
{
|
||||
|
@ -210,7 +215,10 @@ namespace Microsoft.AspNetCore.Razor.Test.Common
|
|||
//
|
||||
// It may be clearer to refactor the implementation to only allow one call to CreateExportProvider in
|
||||
// the context of a single test. https://github.com/dotnet/roslyn/issues/25863
|
||||
return GetOrCreateExportProvider();
|
||||
lock (s_lock)
|
||||
{
|
||||
return GetOrCreateExportProvider();
|
||||
}
|
||||
}
|
||||
|
||||
private void RequireForSingleExportProvider([DoesNotReturnIf(false)] bool condition)
|
||||
|
|
|
@ -8,7 +8,7 @@ using System.Threading;
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Test.Common
|
||||
{
|
||||
internal partial class TestExportJoinableTaskContext
|
||||
public partial class TestExportJoinableTaskContext
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines a <see cref="SynchronizationContext"/> for use in cases where the synchronization context should not
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Common
|
|||
// Starting with 15.3 the editor took a dependency on JoinableTaskContext
|
||||
// in Text.Logic and IntelliSense layers as an editor host provided service.
|
||||
[Export]
|
||||
internal partial class TestExportJoinableTaskContext
|
||||
public partial class TestExportJoinableTaskContext
|
||||
{
|
||||
[ImportingConstructor]
|
||||
//[Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
|
||||
|
|
Загрузка…
Ссылка в новой задаче