diff --git a/test/PowerShellEditorServices.Test.Host/LanguageServerTests.cs b/test/PowerShellEditorServices.Test.Host/LanguageServerTests.cs
index eeaac47cb..b4d9fbd6b 100644
--- a/test/PowerShellEditorServices.Test.Host/LanguageServerTests.cs
+++ b/test/PowerShellEditorServices.Test.Host/LanguageServerTests.cs
@@ -825,7 +825,9 @@ await this.SendRequest(
Assert.StartsWith("5.", versionDetails.Version);
Assert.StartsWith("5.", versionDetails.DisplayVersion);
Assert.Equal("Desktop", versionDetails.Edition);
- Assert.Equal("x86", versionDetails.Architecture);
+
+ string expectedArchitecture = (IntPtr.Size == 8) ? "x64" : "x86";
+ Assert.Equal(expectedArchitecture, versionDetails.Architecture);
}
private async Task SendOpenFileEvent(string filePath, bool waitForDiagnostics = true)
diff --git a/test/PowerShellEditorServices.Test.Host/PowerShellEditorServices.Test.Host.csproj b/test/PowerShellEditorServices.Test.Host/PowerShellEditorServices.Test.Host.csproj
index c3344c0d1..7aec43019 100644
--- a/test/PowerShellEditorServices.Test.Host/PowerShellEditorServices.Test.Host.csproj
+++ b/test/PowerShellEditorServices.Test.Host/PowerShellEditorServices.Test.Host.csproj
@@ -22,6 +22,7 @@
6.0.0-alpha13
+
diff --git a/test/PowerShellEditorServices.Test.Host/ServerTestsBase.cs b/test/PowerShellEditorServices.Test.Host/ServerTestsBase.cs
index 0d89acf51..741b69abe 100644
--- a/test/PowerShellEditorServices.Test.Host/ServerTestsBase.cs
+++ b/test/PowerShellEditorServices.Test.Host/ServerTestsBase.cs
@@ -51,6 +51,11 @@ protected async Task> LaunchService(
Path.Combine(
Path.GetDirectoryName(assemblyPath), $"session-{++sessionCounter}.json");
+ if (File.Exists(sessionPath))
+ {
+ File.Delete(sessionPath);
+ }
+
string editorServicesModuleVersion =
string.Format(
"{0}.{1}.{2}",
@@ -106,13 +111,33 @@ protected async Task> LaunchService(
// Start the process
this.serviceProcess.Start();
- // Wait for the server to finish initializing
- while (!File.Exists(sessionPath) || (new FileInfo(sessionPath).Length == 0))
+ string sessionDetailsText = string.Empty;
+
+ // Wait up to ~5 seconds for the server to finish initializing
+ var maxRetryAttempts = 10;
+ while (maxRetryAttempts-- > 0)
{
- Thread.Sleep(100);
+ try
+ {
+ using (var stream = new FileStream(sessionPath, FileMode.Open, FileAccess.Read, FileShare.None))
+ using (var reader = new StreamReader(stream))
+ {
+ sessionDetailsText = reader.ReadToEnd();
+ break;
+ }
+ }
+ catch (FileNotFoundException)
+ {
+ }
+ catch (Exception ex)
+ {
+ Debug.WriteLine($"Session details at '{sessionPath}' not available: {ex.Message}");
+ }
+
+ Thread.Sleep(500);
}
- JObject result = JObject.Parse(File.ReadAllText(sessionPath));
+ JObject result = JObject.Parse(sessionDetailsText);
if (result["status"].Value() == "started")
{
return new Tuple(
@@ -120,6 +145,8 @@ protected async Task> LaunchService(
result["debugServicePort"].Value());
}
+ Debug.WriteLine($"Failed to read session details from '{sessionPath}'");
+
return null;
}
diff --git a/test/PowerShellEditorServices.Test.Protocol/PowerShellEditorServices.Test.Protocol.csproj b/test/PowerShellEditorServices.Test.Protocol/PowerShellEditorServices.Test.Protocol.csproj
index 7b8db1e84..9f10745c8 100644
--- a/test/PowerShellEditorServices.Test.Protocol/PowerShellEditorServices.Test.Protocol.csproj
+++ b/test/PowerShellEditorServices.Test.Protocol/PowerShellEditorServices.Test.Protocol.csproj
@@ -12,6 +12,7 @@
+
9.0.1
diff --git a/test/PowerShellEditorServices.Test/PowerShellEditorServices.Test.csproj b/test/PowerShellEditorServices.Test/PowerShellEditorServices.Test.csproj
index 8eb7f18df..199cd3b52 100644
--- a/test/PowerShellEditorServices.Test/PowerShellEditorServices.Test.csproj
+++ b/test/PowerShellEditorServices.Test/PowerShellEditorServices.Test.csproj
@@ -15,6 +15,7 @@
6.0.0-alpha13
+