Skip to content

Commit 4a4e201

Browse files
committed
async initialize
1 parent ab1c902 commit 4a4e201

File tree

7 files changed

+40
-37
lines changed

7 files changed

+40
-37
lines changed

FineCodeCoverageTests/Initializer_Tests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public void Should_Have_Initial_InitializeStatus_As_Initializing()
3131
[Test]
3232
public void Should_Log_Initializing_When_Initialize()
3333
{
34-
initializer.Initialize();
34+
initializer.InitializeAsync();
3535
mocker.Verify<ILogger>(l => l.Log("Initializing"));
3636
}
3737

@@ -40,7 +40,7 @@ private void InitializeWithException(Action<Exception> callback = null)
4040
var initializeException = new Exception("initialize exception");
4141
mocker.Setup<ICoverageProjectFactory>(a => a.Initialize()).Throws(initializeException);
4242

43-
initializer.Initialize();
43+
initializer.InitializeAsync();
4444
callback?.Invoke(initializeException);
4545

4646
}
@@ -69,14 +69,14 @@ public void Should_Log_Failed_Initialization_With_Exception_if_Exception_When_In
6969
[Test]
7070
public void Should_Set_InitializeStatus_To_Initialized_When_Successfully_Completed()
7171
{
72-
initializer.Initialize();
72+
initializer.InitializeAsync();
7373
Assert.AreEqual(InitializeStatus.Initialized, initializer.InitializeStatus);
7474
}
7575

7676
[Test]
7777
public void Should_Log_Initialized_When_Successfully_Completed()
7878
{
79-
initializer.Initialize();
79+
initializer.InitializeAsync();
8080
mocker.Verify<ILogger>(l => l.Log("Initialized"));
8181
}
8282

@@ -93,19 +93,19 @@ public void Should_Initialize_Dependencies_In_Order()
9393
callOrder.Add(2);
9494
});
9595

96-
mocker.GetMock<IPackageInitializer>().Setup(p => p.Initialize()).Callback(() =>
96+
mocker.GetMock<IPackageInitializer>().Setup(p => p.InitializeAsync()).Callback(() =>
9797
{
9898
callOrder.Add(3);
9999
});
100100

101-
initializer.Initialize();
101+
initializer.InitializeAsync();
102102
Assert.AreEqual(new List<int> { 1, 2, 3 }, callOrder);
103103
}
104104

105105
[Test]
106106
public void Should_Pass_Itself_To_FCCEngine_For_InitializeStatus()
107107
{
108-
initializer.Initialize();
108+
initializer.InitializeAsync();
109109
mocker.Verify<IFCCEngine>(engine => engine.Initialize(initializer));
110110
}
111111

FineCodeCoverageTests/TestContainerDiscovery_Tests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void SetUp()
6868
[Test]
6969
public void It_Should_Initialize_As_Is_The_Entrance()
7070
{
71-
mocker.Verify<IInitializer>(i => i.Initialize());
71+
mocker.Verify<IInitializer>(i => i.InitializeAsync());
7272
}
7373

7474
[Test]
@@ -82,7 +82,7 @@ public void It_Should_Watch_For_Operation_State_Change_Before_Initialize()
8282
order.Add(1);
8383
});
8484
var mockInitializer = mocker.GetMock<IInitializer>();
85-
mockInitializer.Setup(i => i.Initialize()).Callback(() =>
85+
mockInitializer.Setup(i => i.InitializeAsync()).Callback(() =>
8686
{
8787
order.Add(2);
8888
});

SharedProject/Impl/TestContainerDiscovery/IInitializer.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
namespace FineCodeCoverage.Impl
1+
using System.Threading.Tasks;
2+
3+
namespace FineCodeCoverage.Impl
24
{
35
internal interface IInitializer : IInitializeStatusProvider
46
{
5-
void Initialize();
7+
Task InitializeAsync();
68
}
79

810
}

SharedProject/Impl/TestContainerDiscovery/IPackageInitializer.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
namespace FineCodeCoverage.Impl
1+
using System.Threading.Tasks;
2+
3+
namespace FineCodeCoverage.Impl
24
{
35
internal interface IPackageInitializer
46
{
5-
void Initialize();
7+
Task InitializeAsync();
68
}
79

810
}

SharedProject/Impl/TestContainerDiscovery/Initializer.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.ComponentModel.Composition;
3+
using System.Threading.Tasks;
34
using FineCodeCoverage.Engine;
45
using FineCodeCoverage.Engine.Model;
56

@@ -29,15 +30,15 @@ IPackageInitializer packageInitializer
2930
this.coverageProjectFactory = coverageProjectFactory;
3031
this.packageInitializer = packageInitializer;
3132
}
32-
public void Initialize()
33+
public async Task InitializeAsync()
3334
{
3435
try
3536
{
3637
logger.Log($"Initializing");
3738

3839
coverageProjectFactory.Initialize();
3940
fccEngine.Initialize(this);
40-
packageInitializer.Initialize();
41+
await packageInitializer.InitializeAsync();
4142

4243
logger.Log($"Initialized");
4344
}

SharedProject/Impl/TestContainerDiscovery/PackageInitializer.cs

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
using System;
22
using System.ComponentModel.Composition;
3-
using System.Diagnostics.CodeAnalysis;
43
using System.IO;
54
using FineCodeCoverage.Engine;
65
using FineCodeCoverage.Output;
76
using Microsoft.VisualStudio.Shell;
87
using Microsoft.VisualStudio.Shell.Interop;
8+
using Task = System.Threading.Tasks.Task;
99

1010
namespace FineCodeCoverage.Impl
1111
{
@@ -25,31 +25,29 @@ public PackageInitializer(
2525
this.serviceProvider = serviceProvider;
2626
}
2727

28-
public void Initialize()
28+
public async Task InitializeAsync()
2929
{
30-
ThreadHelper.JoinableTaskFactory.Run(async () =>
30+
await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
31+
32+
if (serviceProvider.GetService(typeof(SVsShell)) is IVsShell shell)
3133
{
32-
await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
34+
var packageToBeLoadedGuid = new Guid(OutputToolWindowPackage.PackageGuidString);
35+
shell.LoadPackage(ref packageToBeLoadedGuid, out var package);
36+
37+
var outputWindowInitializedFile = Path.Combine(fccEngine.AppDataFolderPath, "outputWindowInitialized");
3338

34-
if (serviceProvider.GetService(typeof(SVsShell)) is IVsShell shell)
39+
if (File.Exists(outputWindowInitializedFile))
3540
{
36-
var packageToBeLoadedGuid = new Guid(OutputToolWindowPackage.PackageGuidString);
37-
shell.LoadPackage(ref packageToBeLoadedGuid, out var package);
38-
39-
var outputWindowInitializedFile = Path.Combine(fccEngine.AppDataFolderPath, "outputWindowInitialized");
40-
41-
if (File.Exists(outputWindowInitializedFile))
42-
{
43-
await OutputToolWindowCommand.Instance.FindToolWindowAsync();
44-
}
45-
else
46-
{
47-
// for first time users, the window is automatically docked
48-
await OutputToolWindowCommand.Instance.ShowToolWindowAsync();
49-
File.WriteAllText(outputWindowInitializedFile, string.Empty);
50-
}
41+
await OutputToolWindowCommand.Instance.FindToolWindowAsync();
5142
}
52-
});
43+
else
44+
{
45+
// for first time users, the window is automatically docked
46+
await OutputToolWindowCommand.Instance.ShowToolWindowAsync();
47+
File.WriteAllText(outputWindowInitializedFile, string.Empty);
48+
}
49+
}
50+
5351
}
5452
}
5553

SharedProject/Impl/TestContainerDiscovery/TestContainerDiscoverer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ IReportGeneratorUtil reportGeneratorUtil
5959
initializeThread = new Thread(() =>
6060
{
6161
operationState.StateChanged += OperationState_StateChanged;
62-
initializer.Initialize();
62+
_ = initializer.InitializeAsync();
6363
});
6464
initializeThread.Start();
6565

0 commit comments

Comments
 (0)