summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/lsp_tests.rs50
-rw-r--r--tests/util/server/src/builders.rs8
-rw-r--r--tests/util/server/src/lsp.rs19
3 files changed, 75 insertions, 2 deletions
diff --git a/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs
index 9348d625c..862de41f6 100644
--- a/tests/integration/lsp_tests.rs
+++ b/tests/integration/lsp_tests.rs
@@ -11787,6 +11787,56 @@ fn lsp_jupyter_byonm_diagnostics() {
}
#[test]
+fn lsp_deno_future_env_byonm() {
+ let context = TestContextBuilder::for_npm()
+ .env("DENO_FUTURE", "1")
+ .use_temp_cwd()
+ .build();
+ let temp_dir = context.temp_dir();
+ temp_dir.path().join("package.json").write_json(&json!({
+ "dependencies": {
+ "@denotest/esm-basic": "*",
+ },
+ }));
+ context.run_npm("install");
+ let mut client = context.new_lsp_command().build();
+ client.initialize_default();
+ let diagnostics = client.did_open(json!({
+ "textDocument": {
+ "uri": temp_dir.uri().join("file.ts").unwrap(),
+ "languageId": "typescript",
+ "version": 1,
+ "text": r#"
+ import "npm:chalk";
+ import "@denotest/esm-basic";
+ "#,
+ },
+ }));
+ assert_eq!(
+ json!(diagnostics.all()),
+ json!([
+ {
+ "range": {
+ "start": {
+ "line": 1,
+ "character": 15,
+ },
+ "end": {
+ "line": 1,
+ "character": 26,
+ },
+ },
+ "severity": 1,
+ "code": "resolver-error",
+ "source": "deno",
+ "message": format!("Could not find a matching package for 'npm:chalk' in '{}'. You must specify this as a package.json dependency when the node_modules folder is not managed by Deno.", temp_dir.path().join("package.json")),
+ },
+ ])
+ );
+ client.shutdown();
+}
+
+#[test]
fn lsp_sloppy_imports_warn() {
let context = TestContextBuilder::new().use_temp_cwd().build();
let temp_dir = context.temp_dir();
diff --git a/tests/util/server/src/builders.rs b/tests/util/server/src/builders.rs
index 8c93ceeb0..9490c4c44 100644
--- a/tests/util/server/src/builders.rs
+++ b/tests/util/server/src/builders.rs
@@ -292,9 +292,13 @@ impl TestContext {
}
pub fn new_lsp_command(&self) -> LspClientBuilder {
- LspClientBuilder::new_with_dir(self.deno_dir.clone())
+ let mut builder = LspClientBuilder::new_with_dir(self.deno_dir.clone())
.deno_exe(&self.deno_exe)
- .set_root_dir(self.temp_dir.path().clone())
+ .set_root_dir(self.temp_dir.path().clone());
+ for (key, value) in &self.envs {
+ builder = builder.env(key, value);
+ }
+ builder
}
pub fn run_npm(&self, args: impl AsRef<str>) {
diff --git a/tests/util/server/src/lsp.rs b/tests/util/server/src/lsp.rs
index cc6808390..be455b463 100644
--- a/tests/util/server/src/lsp.rs
+++ b/tests/util/server/src/lsp.rs
@@ -33,7 +33,10 @@ use serde::Serialize;
use serde_json::json;
use serde_json::to_value;
use serde_json::Value;
+use std::collections::HashMap;
use std::collections::HashSet;
+use std::ffi::OsStr;
+use std::ffi::OsString;
use std::io;
use std::io::BufRead;
use std::io::BufReader;
@@ -465,6 +468,7 @@ pub struct LspClientBuilder {
root_dir: PathRef,
use_diagnostic_sync: bool,
deno_dir: TempDir,
+ envs: HashMap<OsString, OsString>,
}
impl LspClientBuilder {
@@ -481,6 +485,7 @@ impl LspClientBuilder {
root_dir: deno_dir.path().clone(),
use_diagnostic_sync: true,
deno_dir,
+ envs: Default::default(),
}
}
@@ -514,6 +519,17 @@ impl LspClientBuilder {
self
}
+ pub fn env(
+ mut self,
+ key: impl AsRef<OsStr>,
+ value: impl AsRef<OsStr>,
+ ) -> Self {
+ self
+ .envs
+ .insert(key.as_ref().to_owned(), value.as_ref().to_owned());
+ self
+ }
+
pub fn build(&self) -> LspClient {
self.build_result().unwrap()
}
@@ -534,6 +550,9 @@ impl LspClientBuilder {
.arg("lsp")
.stdin(Stdio::piped())
.stdout(Stdio::piped());
+ for (key, value) in &self.envs {
+ command.env(key, value);
+ }
if self.capture_stderr {
command.stderr(Stdio::piped());
} else if !self.print_stderr {