Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not hash target frameworks and rename ProjectGuid->ProjectId #1454

Merged
merged 2 commits into from
Apr 12, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,15 @@ public static void UnresolvedDepdendencies(this IEventEmitter emitter, string pr
}

public static void ProjectInformation(this IEventEmitter emitter,
HashedString projectGuid,
IEnumerable<HashedString> targetFrameworks,
HashedString projectId,
IEnumerable<string> targetFrameworks,
IEnumerable<HashedString> references,
IEnumerable<HashedString> fileExtensions)
{
var projectConfiguration = new ProjectConfigurationMessage()
{
TargetFrameworks = targetFrameworks.Select(hashed => hashed.Value),
ProjectGuid = projectGuid.Value,
TargetFrameworks = targetFrameworks,
ProjectId = projectId.Value,
References = references.Select(hashed => hashed.Value),
FileExtensions = fileExtensions.Select(hashed => hashed.Value)
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace OmniSharp.Models.Events
{
public class ProjectConfigurationMessage
{
public string ProjectGuid { get; set; }
public string ProjectId { get; set; }
public IEnumerable<string> TargetFrameworks { get; set; }
public IEnumerable<string> References { get; set; }
public IEnumerable<string> FileExtensions { get; set; }
Expand Down
13 changes: 6 additions & 7 deletions src/OmniSharp.MSBuild/ProjectLoadListener.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ public void ProjectLoaded(ProjectLoadedEventArgs args)
{
try
{
var projectGuid = GetProjectId(args);
var hashedTargetFrameworks = GetHashedTargetFrameworks(args.ProjectInstance);
var projectId = GetProjectId(args);
var targetFrameworks = GetTargetFrameworks(args.ProjectInstance);

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

_eventEmitter.ProjectInformation(projectGuid, hashedTargetFrameworks, hashedReferences, hashedFileExtensions);
_eventEmitter.ProjectInformation(projectId, targetFrameworks, hashedReferences, hashedFileExtensions);
}
catch (Exception ex)
{
Expand Down Expand Up @@ -80,7 +80,7 @@ private static IEnumerable<HashedString> GetHashedReferences(ProjectLoadedEventA
}

// Internal for testing
internal static IEnumerable<HashedString> GetHashedTargetFrameworks(ProjectInstance projectInstance)
internal static IEnumerable<string> GetTargetFrameworks(ProjectInstance projectInstance)
{
var targetFrameworks = projectInstance.GetPropertyValue(TargetFrameworks);
if (string.IsNullOrEmpty(targetFrameworks))
Expand All @@ -96,11 +96,10 @@ internal static IEnumerable<HashedString> GetHashedTargetFrameworks(ProjectInsta
{
return targetFrameworks.Split(';')
.Where(tfm => !string.IsNullOrWhiteSpace(tfm))
.Select(tfm => tfm.ToLower())
.Select(_tfmAndFileHashingAlgorithm.HashInput);
.Select(tfm => tfm.ToLower());
}

return new List<HashedString>();
return new List<string>();
}
}
}
32 changes: 12 additions & 20 deletions tests/OmniSharp.MSBuild.Tests/ProjectLoadListenerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,48 +37,45 @@ public void GetTargetFramework_ReturnsTargetFramework()
// Arrange

const string targetFramework = "net461";
var expectedTFM = GetHashedTargetFramework(targetFramework);
var projectInstance = new ProjectInstance(ProjectRootElement.Create());
projectInstance.SetProperty(ProjectLoadListener.TargetFramework, targetFramework);

// Act
var tfm = ProjectLoadListener.GetHashedTargetFrameworks(projectInstance);
var tfm = ProjectLoadListener.GetTargetFrameworks(projectInstance);

// Assert
Assert.Equal(expectedTFM, tfm.First().Value);
Assert.Equal(targetFramework, tfm.First());
}

[Fact]
public void GetTargetFramework_NoTFM_ReturnsTargetFrameworkVersion()
{
// Arrange
const string targetFramework = "v4.6.1";
var expectedTFM = GetHashedTargetFramework(targetFramework);
var projectInstance = new ProjectInstance(ProjectRootElement.Create());
projectInstance.SetProperty(ProjectLoadListener.TargetFrameworkVersion, targetFramework);

// Act
var tfm = ProjectLoadListener.GetHashedTargetFrameworks(projectInstance);
var tfm = ProjectLoadListener.GetTargetFrameworks(projectInstance);

// Assert
Assert.Equal(expectedTFM, tfm.First().Value);
Assert.Equal(targetFramework, tfm.First());
}

[Fact]
public void GetTargetFramework_PrioritizesTargetFrameworkOverVersion()
{
// Arrange
const string targetFramework = "v4.6.1";
var expectedTFM = GetHashedTargetFramework(targetFramework);
var projectInstance = new ProjectInstance(ProjectRootElement.Create());
projectInstance.SetProperty(ProjectLoadListener.TargetFramework, targetFramework);
projectInstance.SetProperty(ProjectLoadListener.TargetFrameworkVersion, "Unexpected");

// Act
var tfm = ProjectLoadListener.GetHashedTargetFrameworks(projectInstance);
var tfm = ProjectLoadListener.GetTargetFrameworks(projectInstance);

// Assert
Assert.Equal(expectedTFM, tfm.First().Value);
Assert.Equal(targetFramework, tfm.First());
}

[Fact]
Expand All @@ -88,7 +85,7 @@ public void GetTargetFramework_NoTFM_ReturnsEmpty()
var projectInstance = new ProjectInstance(ProjectRootElement.Create());

// Act
var tfm = ProjectLoadListener.GetHashedTargetFrameworks(projectInstance);
var tfm = ProjectLoadListener.GetTargetFrameworks(projectInstance);

// Assert
Assert.Empty(tfm);
Expand All @@ -98,7 +95,7 @@ public void GetTargetFramework_NoTFM_ReturnsEmpty()
public async Task The_target_framework_is_emitted()
{
// Arrange
var expectedTFM = GetHashedTargetFramework("netcoreapp2.1");
var expectedTFM = "netcoreapp2.1";
var messages = new List<ProjectConfigurationMessage>();
var emitter = new ProjectLoadTestEventEmitter(messages);

Expand Down Expand Up @@ -134,7 +131,7 @@ public async Task If_there_is_a_solution_file_the_project_guid_present_in_it_is_
{
var expectedGuid = "A4C2694D-AEB4-4CB1-8951-5290424EF883".ToLower();
Assert.Single(messages);
Assert.Equal(messages[0].ProjectGuid, expectedGuid);
Assert.Equal(messages[0].ProjectId, expectedGuid);
}
}

Expand All @@ -157,7 +154,7 @@ public async Task If_there_is_no_solution_file_the_hash_of_project_file_content_
var projectFileContent = File.ReadAllText(Directory.GetFiles(testProject.Directory, "*.csproj").Single());
var expectedGuid = GetHashedReference($"Filename: HelloWorld.csproj\n{projectFileContent}");
Assert.Single(messages);
Assert.Equal(messages[0].ProjectGuid, expectedGuid);
Assert.Equal(messages[0].ProjectId, expectedGuid);
}
}

Expand Down Expand Up @@ -205,8 +202,8 @@ public async Task If_there_are_multiple_target_frameworks_they_are_emitted()
Assert.Single(messages);
var tfm = messages[0].TargetFrameworks.ToArray();
Assert.Equal(2, tfm.Count());
Assert.Equal(tfm[0], GetHashedTargetFramework("netstandard1.3"));
Assert.Equal(tfm[1], GetHashedTargetFramework("netstandard2.0"));
Assert.Equal("netstandard1.3", tfm[0]);
Assert.Equal("netstandard2.0",tfm[1]);
}
}

Expand All @@ -232,11 +229,6 @@ public async Task The_hashed_references_of_the_source_files_are_emitted()
}
}

private string GetHashedTargetFramework(string targetFramework)
{
return _tfmAndFileHashingAlgorithm.HashInput(targetFramework).Value;
}

private string GetHashedFileExtension(string fileExtension)
{
return _tfmAndFileHashingAlgorithm.HashInput(fileExtension).Value;
Expand Down