Skip to content

Commit 135c613

Browse files
authored
Merge pull request #495 from tonyhallett/fix-no-mscodecoverage-non-sdk-style
different behaviour for non sdk style for IVsBuildPropertyStorage ?
2 parents 830cfc2 + 9f91cea commit 135c613

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

SharedProject/Core/MsTestPlatform/CodeCoverage/ProjectRunSettingsGenerator.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Linq;
88
using FineCodeCoverage.Core.Utilities;
99
using System.Xml.Linq;
10+
using FineCodeCoverage.Output;
1011

1112
namespace FineCodeCoverage.Engine.MsTestPlatform.CodeCoverage
1213
{
@@ -15,16 +16,19 @@ internal class ProjectRunSettingsGenerator : IProjectRunSettingsGenerator
1516
{
1617
private readonly IFileUtil fileUtil;
1718
private readonly IVsRunSettingsWriter vsRunSettingsWriter;
19+
private readonly ILogger logger;
1820
private const string fccGeneratedRunSettingsSuffix = "fcc-mscodecoverage-generated";
1921

2022
[ImportingConstructor]
2123
public ProjectRunSettingsGenerator(
2224
IFileUtil fileUtil,
23-
IVsRunSettingsWriter vsRunSettingsWriter
25+
IVsRunSettingsWriter vsRunSettingsWriter,
26+
ILogger logger
2427
)
2528
{
2629
this.fileUtil = fileUtil;
2730
this.vsRunSettingsWriter = vsRunSettingsWriter;
31+
this.logger = logger;
2832
}
2933

3034
public Task RemoveGeneratedProjectSettingsAsync(IEnumerable<ICoverageProject> coverageProjects)
@@ -43,7 +47,7 @@ public Task WriteProjectsRunSettingsAsync(IEnumerable<ICoverageProjectRunSetting
4347
{
4448
var coverageProject = coverageProjectRunSettings.CoverageProject;
4549
var projectRunSettingsFilePath = GeneratedProjectRunSettingsFilePath(coverageProject);
46-
return WriteProjectRunSettingsAsync(coverageProject.Id, projectRunSettingsFilePath, coverageProjectRunSettings.RunSettings);
50+
return WriteProjectRunSettingsAsync(coverageProject.Id, coverageProject.ProjectName, projectRunSettingsFilePath, coverageProjectRunSettings.RunSettings);
4751
})
4852
);
4953

@@ -54,13 +58,18 @@ internal static string GeneratedProjectRunSettingsFilePath(ICoverageProject cove
5458
return Path.Combine(coverageProject.CoverageOutputFolder, $"{coverageProject.ProjectName}-{fccGeneratedRunSettingsSuffix}.runsettings");
5559
}
5660

57-
private async Task WriteProjectRunSettingsAsync(Guid projectGuid, string projectRunSettingsFilePath, string projectRunSettings)
61+
private async Task WriteProjectRunSettingsAsync(Guid projectGuid,string projectName, string projectRunSettingsFilePath, string projectRunSettings)
5862
{
5963
var ok = await vsRunSettingsWriter.WriteRunSettingsFilePathAsync(projectGuid, projectRunSettingsFilePath);
6064
if (ok)
6165
{
6266
projectRunSettings = XDocument.Parse(projectRunSettings).FormatXml();
6367
fileUtil.WriteAllText(projectRunSettingsFilePath, projectRunSettings);
68+
logger.Log($"runsettings written to {projectRunSettingsFilePath}", projectRunSettings);
69+
}
70+
else
71+
{
72+
logger.Log($"Issue writing runsettings for {projectName}");
6473
}
6574
}
6675

SharedProject/Core/Utilities/ProjectFilePropertyWriter.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ public async System.Threading.Tasks.Task<bool> WritePropertyAsync(IVsHierarchy p
1313
await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
1414
if (projectHierarchy is IVsBuildPropertyStorage vsBuildPropertyStorage)
1515
{
16-
if(vsBuildPropertyStorage.GetPropertyValue(propertyName, string.Empty, (uint)_PersistStorageType.PST_PROJECT_FILE, out var v) == VSConstants.S_OK)
16+
var result = vsBuildPropertyStorage.GetPropertyValue(propertyName, string.Empty, (uint)_PersistStorageType.PST_PROJECT_FILE, out var v);
17+
if (result == VSConstants.S_OK && v == value)
1718
{
18-
if (v == value)
19-
{
20-
return true;
21-
}
22-
return vsBuildPropertyStorage.SetPropertyValue(propertyName, string.Empty, (uint)_PersistStorageType.PST_PROJECT_FILE, value) == VSConstants.S_OK;
19+
return true;
2320
}
21+
22+
return vsBuildPropertyStorage.SetPropertyValue(propertyName, string.Empty, (uint)_PersistStorageType.PST_PROJECT_FILE, value) == VSConstants.S_OK;
23+
2424
}
2525

2626
return false;

0 commit comments

Comments
 (0)