Skip to content

Commit

Permalink
Merge pull request #1831 from JoeRobich/add-project-information
Browse files Browse the repository at this point in the history
Add ProjectCapablity to ProjectConfigurationMessage
  • Loading branch information
JoeRobich committed Jun 10, 2020
2 parents b9e417f + 350d58d commit 8bba43d
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public static void UnresolvedDepdendencies(this IEventEmitter emitter, string pr
HashedString projectId,
HashedString sessionId,
int outputKind,
IEnumerable<string> projectCapabilities,
IEnumerable<string> targetFrameworks,
HashedString sdkVersion,
IEnumerable<HashedString> references,
Expand All @@ -57,6 +58,7 @@ public static void UnresolvedDepdendencies(this IEventEmitter emitter, string pr
{
var projectConfiguration = new ProjectConfigurationMessage()
{
ProjectCapabilities = projectCapabilities,
TargetFrameworks = targetFrameworks,
SdkVersion = sdkVersion.Value,
OutputKind = outputKind,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ public class ProjectConfigurationMessage
public string ProjectId { get; set; }
public string SessionId { get; set; }
public int OutputKind { get; set; }
public IEnumerable<string> ProjectCapabilities { get; set; }
public IEnumerable<string> TargetFrameworks { get; set; }
public string SdkVersion { get; set; }
public IEnumerable<string> References { get; set; }
Expand Down
1 change: 1 addition & 0 deletions src/OmniSharp.MSBuild/ProjectFile/ItemNames.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ internal static class ItemNames
public const string Content = nameof(Content);
public const string EditorConfigFiles = nameof(EditorConfigFiles);
public const string PackageReference = nameof(PackageReference);
public const string ProjectCapability = nameof(ProjectCapability);
public const string ProjectReference = nameof(ProjectReference);
public const string ReferencePath = nameof(ReferencePath);
}
Expand Down
8 changes: 7 additions & 1 deletion src/OmniSharp.MSBuild/ProjectLoadListener.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public void ProjectLoaded(ProjectLoadedEventArgs args)
var targetFrameworks = GetTargetFrameworks(args.ProjectInstance);
var sdkVersion = GetSdkVersion(args);
var outputKind = GetOutputKind(args);
var projectCapabilities = GetProjectCapabilities(args.ProjectInstance);

if (args.References == null)
{
Expand All @@ -50,7 +51,7 @@ public void ProjectLoaded(ProjectLoadedEventArgs args)
var hashedReferences = GetHashedReferences(args);
var (hashedFileExtensions, fileCounts) = GetUniqueHashedFileExtensionsAndCounts(args);

_eventEmitter.ProjectInformation(projectId, sessionId, (int)outputKind, targetFrameworks, sdkVersion, hashedReferences, hashedFileExtensions, fileCounts);
_eventEmitter.ProjectInformation(projectId, sessionId, (int)outputKind, projectCapabilities, targetFrameworks, sdkVersion, hashedReferences, hashedFileExtensions, fileCounts);
}
catch (Exception ex)
{
Expand Down Expand Up @@ -105,6 +106,11 @@ private static IEnumerable<HashedString> GetHashedReferences(ProjectLoadedEventA
return referenceNames.Select(_referenceHashingAlgorithm.HashInput);
}

private IEnumerable<string> GetProjectCapabilities(ProjectInstance projectInstance)
{
return projectInstance.GetItems(ItemNames.ProjectCapability).Select(item => item.ToString());
}

// Internal for testing
internal static IEnumerable<string> GetTargetFrameworks(ProjectInstance projectInstance)
{
Expand Down
14 changes: 14 additions & 0 deletions tests/OmniSharp.MSBuild.Tests/ProjectLoadListenerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,20 @@ public async Task The_output_kind_is_emitted()
}
}

[Fact]
public async Task The_correct_project_capablities_is_emitted()
{
// Arrange
var emitter = new ProjectLoadTestEventEmitter();

using (var testProject = await TestAssets.Instance.GetTestProjectAsync("NetCore31Project"))
using (var host = CreateMSBuildTestHost(testProject.Directory, emitter.AsExportDescriptionProvider(LoggerFactory)))
{
Assert.Single(emitter.ReceivedMessages);
Assert.Equal("GenerateDocumentationFile CSharp Managed ReferencesFolder LanguageService RelativePathDerivedDefaultNamespace AssemblyReferences COMReferences ProjectReferences SharedProjectReferences OutputGroups AllTargetOutputGroups VisualStudioWellKnownOutputGroups SingleFileGenerators DeclaredSourceItems UserSourceItems BuildWindowsDesktopTarget CrossPlatformExecutable Pack", string.Join(" ", emitter.ReceivedMessages[0].ProjectCapabilities));
}
}

[Fact]
public async Task The_correct_sdk_version_is_emitted()
{
Expand Down

0 comments on commit 8bba43d

Please sign in to comment.