Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'editors/code/tests/unit/bootstrap.test.ts')
-rw-r--r--editors/code/tests/unit/bootstrap.test.ts71
1 files changed, 71 insertions, 0 deletions
diff --git a/editors/code/tests/unit/bootstrap.test.ts b/editors/code/tests/unit/bootstrap.test.ts
index baabf4f897..259428da41 100644
--- a/editors/code/tests/unit/bootstrap.test.ts
+++ b/editors/code/tests/unit/bootstrap.test.ts
@@ -93,4 +93,75 @@ export async function getTests(ctx: Context) {
);
});
});
+
+ await ctx.suite("Bootstrap/Detect RA component in toolchain file", (suite) => {
+ suite.addTest("Single line components array", async () => {
+ assert.ok(
+ _private.declaresRaComponent(
+ `[toolchain]
+channel = "1.88"
+components = ["cargo", "rust-analyzer", "rustfmt"]
+`,
+ ),
+ );
+ });
+
+ suite.addTest("Multi line components array", async () => {
+ assert.ok(
+ _private.declaresRaComponent(
+ `[toolchain]
+channel = "1.88"
+components = [
+ "cargo",
+ "rust-analyzer",
+ "rustfmt",
+]
+profile = "default"
+`,
+ ),
+ );
+ });
+
+ suite.addTest("Components array with literal strings", async () => {
+ assert.ok(_private.declaresRaComponent(`components = ['cargo', 'rust-analyzer']`));
+ });
+
+ suite.addTest("Components array without RA", async () => {
+ assert.ok(
+ !_private.declaresRaComponent(
+ `[toolchain]
+channel = "1.88"
+components = [
+ "cargo",
+ "rustfmt",
+]
+`,
+ ),
+ );
+ });
+
+ suite.addTest("No components array", async () => {
+ assert.ok(
+ !_private.declaresRaComponent(
+ `[toolchain]
+channel = "1.88"
+`,
+ ),
+ );
+ });
+
+ suite.addTest("RA mentioned outside the components array", async () => {
+ assert.ok(
+ !_private.declaresRaComponent(
+ `[toolchain]
+channel = "1.88"
+components = [
+ "cargo",
+]
+# add "rust-analyzer" here to use the matching server
+`,
+ ),
+ );
+ });
+ });
}