| import * as assert from "assert"; | |
| import { _private } from "../../src/bootstrap"; | |
| import type { Context } from "."; | |
| export async function getTests(ctx: Context) { | |
| await ctx.suite("Bootstrap/Select toolchain RA", (suite) => { | |
| suite.addTest("Order of nightly RA", async () => { | |
| assert.deepStrictEqual( | |
| await _private.orderFromPath( | |
| "/Users/myuser/.rustup/toolchains/nightly-2022-11-22-aarch64-apple-darwin/bin/rust-analyzer", | |
| async function (path: string) { | |
| assert.deepStrictEqual( | |
| path, | |
| "/Users/myuser/.rustup/toolchains/nightly-2022-11-22-aarch64-apple-darwin/bin/rust-analyzer", | |
| ); | |
| return "rust-analyzer 1.67.0-nightly (b7bc90fe 2022-11-21)"; | |
| }, | |
| ), | |
| "0-2022-11-21/0", | |
| ); | |
| }); | |
| suite.addTest("Order of versioned RA", async () => { | |
| assert.deepStrictEqual( | |
| await _private.orderFromPath( | |
| "/Users/myuser/.rustup/toolchains/1.72.1-aarch64-apple-darwin/bin/rust-analyzer", | |
| async function (path: string) { | |
| assert.deepStrictEqual( | |
| path, | |
| "/Users/myuser/.rustup/toolchains/1.72.1-aarch64-apple-darwin/bin/rust-analyzer", | |
| ); | |
| return "rust-analyzer 1.72.1 (d5c2e9c3 2023-09-13)"; | |
| }, | |
| ), | |
| "0-2023-09-13/1", | |
| ); | |
| }); | |
| suite.addTest("Order of versioned RA when unable to obtain version date", async () => { | |
| assert.deepStrictEqual( | |
| await _private.orderFromPath( | |
| "/Users/myuser/.rustup/toolchains/1.72.1-aarch64-apple-darwin/bin/rust-analyzer", | |
| async function () { | |
| return "rust-analyzer 1.72.1"; | |
| }, | |
| ), | |
| "2", | |
| ); | |
| }); | |
| suite.addTest("Order of stable RA", async () => { | |
| assert.deepStrictEqual( | |
| await _private.orderFromPath( | |
| "/Users/myuser/.rustup/toolchains/stable-aarch64-apple-darwin/bin/rust-analyzer", | |
| async function (path: string) { | |
| assert.deepStrictEqual( | |
| path, | |
| "/Users/myuser/.rustup/toolchains/stable-aarch64-apple-darwin/bin/rust-analyzer", | |
| ); | |
| return "rust-analyzer 1.79.0 (129f3b99 2024-06-10)"; | |
| }, | |
| ), | |
| "0-2024-06-10/1", | |
| ); | |
| }); | |
| suite.addTest("Order with invalid path to RA", async () => { | |
| assert.deepStrictEqual( | |
| await _private.orderFromPath("some-weird-path", async function () { | |
| return undefined; | |
| }), | |
| "2", | |
| ); | |
| }); | |
| suite.addTest("Earliest RA between nightly and stable", async () => { | |
| assert.deepStrictEqual( | |
| await _private.earliestToolchainPath( | |
| "/Users/myuser/.rustup/toolchains/stable-aarch64-apple-darwin/bin/rust-analyzer", | |
| "/Users/myuser/.rustup/toolchains/nightly-2022-11-22-aarch64-apple-darwin/bin/rust-analyzer", | |
| async function (path: string) { | |
| if ( | |
| path === | |
| "/Users/myuser/.rustup/toolchains/nightly-2022-11-22-aarch64-apple-darwin/bin/rust-analyzer" | |
| ) { | |
| return "rust-analyzer 1.67.0-nightly (b7bc90fe 2022-11-21)"; | |
| } else { | |
| return "rust-analyzer 1.79.0 (129f3b99 2024-06-10)"; | |
| } | |
| }, | |
| ), | |
| "/Users/myuser/.rustup/toolchains/nightly-2022-11-22-aarch64-apple-darwin/bin/rust-analyzer", | |
| ); | |
| }); | |
| }); | |
| 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 | |
| `, | |
| ), | |
| ); | |
| }); | |
| }); | |
| } |