Skip to content

Commit 0297e69

Browse files
Simplify API
1 parent c9b73c6 commit 0297e69

File tree

4 files changed

+37
-42
lines changed

4 files changed

+37
-42
lines changed

CodeConverter/Shared/SolutionConverter.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,15 @@ private SolutionConverter(string solutionFilePath,
8181
_solutionFileTextEditor = solutionFileTextEditor;
8282
}
8383

84-
public async Task<IAsyncEnumerable<ConversionResult>> Convert()
84+
public async IAsyncEnumerable<ConversionResult> Convert()
8585
{
8686
var projectsToUpdateReferencesOnly = _projectsToConvert.First().Solution.Projects.Except(_projectsToConvert);
8787
var solutionResult = string.IsNullOrWhiteSpace(_sourceSolutionContents) ? Enumerable.Empty<ConversionResult>() : ConvertSolutionFile().Yield();
8888
var convertedProjects = await ConvertProjects();
89-
return convertedProjects
90-
.Concat(UpdateProjectReferences(projectsToUpdateReferencesOnly).Concat(solutionResult).ToAsyncEnumerable());
89+
var projectsAndSolutionResults = UpdateProjectReferences(projectsToUpdateReferencesOnly).Concat(solutionResult).ToAsyncEnumerable();
90+
await foreach (var p in convertedProjects.Concat(projectsAndSolutionResults)) {
91+
yield return p;
92+
}
9193
}
9294

9395
private async Task<IAsyncEnumerable<ConversionResult>> ConvertProjects()

CommandLine/CodeConv.Shared/MSBuildWorkspaceConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public async IAsyncEnumerable<ConversionResult> ConvertProjectsWhereAsync(Func<P
6363
: LanguageNames.CSharp;
6464

6565
var projectsToConvert = solution.Projects.Where(p => p.Language == languageNameToConvert && shouldConvertProject(p)).ToArray();
66-
var results = await SolutionConverter.CreateFor(languageConversion, projectsToConvert, progress, token).Convert();
66+
var results = SolutionConverter.CreateFor(languageConversion, projectsToConvert, progress, token).Convert();
6767
await foreach (var r in results.WithCancellation(token)) yield return r;
6868
}
6969

Tests/LanguageAgnostic/SolutionFileTextEditorTests.cs

Lines changed: 30 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
namespace ICSharpCode.CodeConverter.Tests.LanguageAgnostic
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.IO.Abstractions;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
using ICSharpCode.CodeConverter.CSharp;
9+
using ICSharpCode.CodeConverter.Shared;
10+
using Microsoft.CodeAnalysis;
11+
using Moq;
12+
using Xunit;
13+
14+
namespace ICSharpCode.CodeConverter.Tests.LanguageAgnostic
215
{
3-
using System;
4-
using System.Collections.Generic;
5-
using System.IO;
6-
using System.IO.Abstractions;
7-
using System.Linq;
8-
using System.Text;
9-
using System.Threading.Tasks;
10-
using ICSharpCode.CodeConverter.CSharp;
11-
using ICSharpCode.CodeConverter.Shared;
12-
using Microsoft.CodeAnalysis;
13-
using Moq;
14-
using Xunit;
15-
1616
public class SolutionFileTextEditorTests : IDisposable
1717
{
1818
private Solution _sln;
@@ -246,9 +246,7 @@ public async Task Convert_WhenReferencedByProjFileInDifferentProjFolderThenUpdat
246246
var slnConverter = SolutionConverter.CreateFor<VBToCSConversion>(new List<Project> {testProject}, solutionProjectReference);
247247

248248
//Act
249-
var convertedProjFile = (await slnConverter.Convert().SingleAwaitAsync(result =>
250-
new ValueTask<bool>(result.SourcePathOrNull == referencingProject.FilePath)))
251-
.ConvertedCode;
249+
var convertedProjFile = await GetConvertedCode(slnConverter, referencingProject);
252250

253251
//Assert
254252
var expectedProjFile = GetProjectProjectReference(new []
@@ -286,9 +284,7 @@ public async Task Convert_WhenReferencedByProjFileInSameFolderThenUpdatedAsync()
286284
var slnConverter = SolutionConverter.CreateFor<VBToCSConversion>(new List<Project> {testProject}, solutionProjectReference);
287285

288286
//Act
289-
var convertedProjFile = (await slnConverter.Convert().SingleAwaitAsync(result =>
290-
new ValueTask<bool>(result.SourcePathOrNull == referencingProject.FilePath)))
291-
.ConvertedCode;
287+
var convertedProjFile = await GetConvertedCode(slnConverter, referencingProject);
292288

293289
//Assert
294290
var expectedProjFile = GetProjectProjectReference(new []
@@ -326,9 +322,7 @@ public async Task Convert_WhenReferencedByProjFileInSlnFolderThenUpdatedAsync()
326322
var slnConverter = SolutionConverter.CreateFor<VBToCSConversion>(new List<Project> {testProject}, solutionProjectReference);
327323

328324
//Act
329-
var convertedProjFile = (await slnConverter.Convert().SingleAwaitAsync(result =>
330-
new ValueTask<bool>(result.SourcePathOrNull == referencingProject.FilePath)))
331-
.ConvertedCode;
325+
var convertedProjFile = await GetConvertedCode(slnConverter, referencingProject);
332326

333327
//Assert
334328
var expectedProjFile = GetProjectProjectReference(new []
@@ -366,9 +360,7 @@ public async Task Convert_WhenReferencedProjectInSlnFolderThenUpdatedAsync()
366360
var slnConverter = SolutionConverter.CreateFor<VBToCSConversion>(new List<Project> {testProject}, solutionProjectReference);
367361

368362
//Act
369-
var convertedProjFile = (await slnConverter.Convert().SingleAwaitAsync(result =>
370-
new ValueTask<bool>(result.SourcePathOrNull == referencingProject.FilePath)))
371-
.ConvertedCode;
363+
var convertedProjFile = await GetConvertedCode(slnConverter, referencingProject);
372364

373365
//Assert
374366
var expectedProjFile = GetProjectProjectReference(new []
@@ -411,9 +403,7 @@ public async Task Convert_GivenDifferentReferencedLibraryWhenSameProjFolderThenN
411403
var slnConverter = SolutionConverter.CreateFor<VBToCSConversion>(new List<Project> {testProject}, solutionProjectReference);
412404

413405
//Act
414-
var convertedProjFile = (await slnConverter.Convert().SingleAwaitAsync(result =>
415-
new ValueTask<bool>(result.SourcePathOrNull == referencingProject.FilePath)))
416-
.ConvertedCode;
406+
var convertedProjFile = await GetConvertedCode(slnConverter, referencingProject);
417407

418408
//Assert
419409
var expectedProjFile = GetProjectProjectReference(new []
@@ -443,10 +433,10 @@ public async Task Convert_GivenDifferentReferencedLibraryWhenSameProjFileNameThe
443433
var testProjReference = new ProjectReference(testProject.Id);
444434
var otherTestProjReference = new ProjectReference(otherTestProject.Id);
445435
_sln = _sln.WithProjectReferences(referencingProject.Id,
446-
new[] {testProjReference, otherTestProjReference});
436+
new[] { testProjReference, otherTestProjReference });
447437
testProject = _sln.GetProject(testProject.Id);
448438

449-
var projReference = GetProjectProjectReference(new []
439+
var projReference = GetProjectProjectReference(new[]
450440
{
451441
@"..\Prefix.VbLibrary\VbLibrary.vbproj",
452442
@"..\VbLibrary\VbLibrary.vbproj"
@@ -455,15 +445,13 @@ public async Task Convert_GivenDifferentReferencedLibraryWhenSameProjFileNameThe
455445
_fsMock.Setup(mock => mock.File.ReadAllText(It.IsAny<string>())).Returns(projReference);
456446
TextReplacementConverter.FileSystem = _fsMock.Object;
457447

458-
var slnConverter = SolutionConverter.CreateFor<VBToCSConversion>(new List<Project> {testProject}, solutionProjectReference);
448+
var slnConverter = SolutionConverter.CreateFor<VBToCSConversion>(new List<Project> { testProject }, solutionProjectReference);
459449

460450
//Act
461-
var convertedProjFile = (await slnConverter.Convert().SingleAwaitAsync(result =>
462-
new ValueTask<bool>(result.SourcePathOrNull == referencingProject.FilePath)))
463-
.ConvertedCode;
451+
var convertedProjFile = await GetConvertedCode(slnConverter, referencingProject);
464452

465453
//Assert
466-
var expectedProjFile = GetProjectProjectReference(new []
454+
var expectedProjFile = GetProjectProjectReference(new[]
467455
{
468456
@"..\Prefix.VbLibrary\VbLibrary.vbproj",
469457
@"..\VbLibrary\VbLibrary.csproj"
@@ -551,5 +539,11 @@ private Project AddTestProject(string projFileName, string projDirName, string p
551539

552540
return project;
553541
}
542+
543+
private static async Task<string> GetConvertedCode(SolutionConverter slnConverter, Project referencingProject)
544+
{
545+
return (await slnConverter.Convert().SingleAsync(result => result.SourcePathOrNull == referencingProject.FilePath))
546+
.ConvertedCode;
547+
}
554548
}
555549
}

Vsix/CodeConversion.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,7 @@ private async IAsyncEnumerable<ConversionResult> ConvertProjectUnhandled<TLangua
272272
var conversionOptions = new ConversionOptions(){AbandonOptionalTasksAfter = await GetAbandonOptionalTasksAfterAsync()};
273273
var solutionConverter = SolutionConverter.CreateFor<TLanguageConversion>(projects, progress: CreateOutputWindowProgress(), cancellationToken: cancellationToken, conversionOptions: conversionOptions);
274274

275-
var results = await solutionConverter.Convert();
276-
await foreach(var result in results) yield return result;
275+
await foreach (var result in solutionConverter.Convert()) yield return result;
277276
}
278277

279278
private async Task<TimeSpan> GetAbandonOptionalTasksAfterAsync() => TimeSpan.FromMinutes((await GetOptions()).FormattingTimeout);

0 commit comments

Comments
 (0)