1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-26 16:09:27 -05:00

fix(lsp): handle template literal as first arg in test function (#17076)

This commit is contained in:
Leo Kettmeir 2022-12-16 14:53:30 +01:00 committed by Bartek Iwańczuk
parent 98e7c91be4
commit bb079e0a42
No known key found for this signature in database
GPG key ID: 0C6BCDDC3B3AD750

View file

@ -153,9 +153,7 @@ fn check_call_expr(
// (e.g. `test name`)
ast::Expr::Tpl(tpl) => {
if tpl.quasis.len() == 1 {
if let Some(tpl_element) = tpl.quasis.get(0) {
maybe_name = Some(tpl_element.raw.to_string());
}
maybe_name = Some(tpl.quasis[0].raw.to_string());
}
}
_ => (),
@ -205,6 +203,24 @@ fn check_call_expr(
}
Some((name, steps))
}
ast::Expr::Tpl(tpl) => {
if tpl.quasis.len() == 1 {
let mut steps = vec![];
match node.args.get(1).map(|es| es.expr.as_ref()) {
Some(ast::Expr::Fn(fn_expr)) => {
steps = fn_to_steps(parent, level, &fn_expr.function);
}
Some(ast::Expr::Arrow(arrow_expr)) => {
steps = arrow_to_steps(parent, level, arrow_expr);
}
_ => (),
}
Some((tpl.quasis[0].raw.to_string(), steps))
} else {
None
}
}
_ => None,
}
} else {
@ -511,17 +527,31 @@ pub mod tests {
}
});
Deno.test({
name: `test b`,
async fn(t) {
await t.step(`b step`, ({ step }) => {
await step({
name: `sub step`,
fn() {}
})
});
}
});
Deno.test(async function useFnName({ step: s }) {
await s("step c", () => {});
});
Deno.test("test b", () => {});
Deno.test("test c", () => {});
Deno.test(`test d`, () => {});
const { test } = Deno;
test("test c", () => {});
test("test e", () => {});
const t = Deno.test;
t("test d", () => {});
t("test f", () => {});
"#;
let parsed_module = deno_ast::parse_module(deno_ast::ParseParams {
@ -561,42 +591,73 @@ pub mod tests {
}
],
},
TestDefinition {
id: "86b4c821900e38fc89f24bceb0e45193608ab3f9d2a6019c7b6a5aceff5d7df2".to_string(),
level: 0,
name: "useFnName".to_string(),
range: new_range(254, 258),
steps: vec![
TestDefinition {
id: "67a390d0084ae5fb88f3510c470a72a553581f1d0d5ba5fa89aee7a754f3953a".to_string(),
level: 1,
name: "step c".to_string(),
range: new_range(313, 314),
steps: vec![],
}
]
},
TestDefinition {
id: "580eda89d7f5e619774c20e13b7d07a8e77c39cba101d60565144d48faa837cb".to_string(),
level: 0,
name: "test b".to_string(),
range: new_range(358, 362),
steps: vec![],
range: new_range(254, 258),
steps: vec![
TestDefinition {
id: "888e28419fc6c00cadfaad26e1e3e16e09e4322b3579fdfa9cc3fdb75976704a".to_string(),
level: 1,
name: "b step".to_string(),
range: new_range(325, 329),
steps: vec![
TestDefinition {
id: "abf356f59139b77574089615f896a6f501c010985d95b8a93abeb0069ccb2201".to_string(),
level: 2,
name: "sub step".to_string(),
range: new_range(374, 378),
steps: vec![],
}
]
}
],
},
TestDefinition {
id: "86b4c821900e38fc89f24bceb0e45193608ab3f9d2a6019c7b6a5aceff5d7df2".to_string(),
level: 0,
name: "useFnName".to_string(),
range: new_range(496, 500),
steps: vec![
TestDefinition {
id:
"67a390d0084ae5fb88f3510c470a72a553581f1d0d5ba5fa89aee7a754f3953a".to_string(),
level: 1,
name: "step c".to_string(),
range: new_range(555, 556),
steps: vec![],
}
],
},
TestDefinition {
id: "0b7c6bf3cd617018d33a1bf982a08fe088c5bb54fcd5eb9e802e7c137ec1af94".to_string(),
level: 0,
name: "test c".to_string(),
range: new_range(420, 424),
range: new_range(600, 604),
steps: vec![],
},
TestDefinition {
id: "69d9fe87f64f5b66cb8b631d4fd2064e8224b8715a049be54276c42189ff8f9f".to_string(),
level: 0,
name: "test d".to_string(),
range: new_range(480, 481),
range: new_range(638, 642),
steps: vec![],
}
},
TestDefinition {
id: "b2fd155c2a5e468eddf77a5eb13f97ddeeeafab322f0fc223ec0810ab2a29d42".to_string(),
level: 0,
name: "test e".to_string(),
range: new_range(700, 704),
steps: vec![],
},
TestDefinition {
id: "6387faad3a1f27fb3078a7d350040f4e6b516994076c855a0446943927461f58".to_string(),
level: 0,
name: "test f".to_string(),
range: new_range(760, 761),
steps: vec![],
},
]
);
}