diff options
Diffstat (limited to 'cli/lsp/testing')
-rw-r--r-- | cli/lsp/testing/execution.rs | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/cli/lsp/testing/execution.rs b/cli/lsp/testing/execution.rs index dcf980fd6..bc780a475 100644 --- a/cli/lsp/testing/execution.rs +++ b/cli/lsp/testing/execution.rs @@ -14,6 +14,7 @@ use crate::lsp::client::TestingNotification; use crate::lsp::config; use crate::lsp::logging::lsp_log; use crate::ops; +use crate::ops::testing::create_stdout_stderr_pipes; use crate::proc_state; use crate::tools::test; @@ -183,11 +184,17 @@ async fn test_specifier( options: Option<Value>, ) -> Result<(), AnyError> { if !token.is_cancelled() { + let (stdout_writer, stderr_writer) = + create_stdout_stderr_pipes(channel.clone()); let mut worker = create_main_worker( &ps, specifier.clone(), permissions, - vec![ops::testing::init(channel.clone())], + vec![ops::testing::init( + channel.clone(), + stdout_writer, + stderr_writer, + )], ); worker @@ -752,16 +759,20 @@ impl test::TestReporter for LspTestReporter { .get(origin) .and_then(|v| v.last().map(|td| td.into())) }); - match output { - test::TestOutput::Console(value) => { - self.progress(lsp_custom::TestRunProgressMessage::Output { - value: value.replace('\n', "\r\n"), - test, - // TODO(@kitsonk) test output should include a location - location: None, - }) + let value = match output { + test::TestOutput::PrintStdout(value) + | test::TestOutput::PrintStderr(value) => value.replace('\n', "\r\n"), + test::TestOutput::Stdout(bytes) | test::TestOutput::Stderr(bytes) => { + String::from_utf8_lossy(bytes).replace('\n', "\r\n") } - } + }; + + self.progress(lsp_custom::TestRunProgressMessage::Output { + value, + test, + // TODO(@kitsonk) test output should include a location + location: None, + }) } fn report_result( |