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 +