import * as assert from 'assert'; import { prepareEnv } from '../../src/run'; import { RunnableEnvCfg } from '../../src/config'; import { Context } from '.'; import * as ra from '../../src/lsp_ext'; function makeRunnable(label: string): ra.Runnable { return { label, kind: "cargo", args: { cargoArgs: [], executableArgs: [], cargoExtraArgs: [] } }; } function fakePrepareEnv(runnableName: string, config: RunnableEnvCfg): Record { const runnable = makeRunnable(runnableName); return prepareEnv(runnable, config); } export async function getTests(ctx: Context) { await ctx.suite('Runnable env', suite => { suite.addTest('Global config works', async () => { const binEnv = fakePrepareEnv("run project_name", { "GLOBAL": "g" }); assert.strictEqual(binEnv["GLOBAL"], "g"); const testEnv = fakePrepareEnv("test some::mod::test_name", { "GLOBAL": "g" }); assert.strictEqual(testEnv["GLOBAL"], "g"); }); suite.addTest('null mask works', async () => { const config = [ { env: { DATA: "data" } } ]; const binEnv = fakePrepareEnv("run project_name", config); assert.strictEqual(binEnv["DATA"], "data"); const testEnv = fakePrepareEnv("test some::mod::test_name", config); assert.strictEqual(testEnv["DATA"], "data"); }); suite.addTest('order works', async () => { const config = [ { env: { DATA: "data" } }, { env: { DATA: "newdata" } } ]; const binEnv = fakePrepareEnv("run project_name", config); assert.strictEqual(binEnv["DATA"], "newdata"); const testEnv = fakePrepareEnv("test some::mod::test_name", config); assert.strictEqual(testEnv["DATA"], "newdata"); }); suite.addTest('mask works', async () => { const config = [ { env: { DATA: "data" } }, { mask: "^run", env: { DATA: "rundata" } }, { mask: "special_test$", env: { DATA: "special_test" } } ]; const binEnv = fakePrepareEnv("run project_name", config); assert.strictEqual(binEnv["DATA"], "rundata"); const testEnv = fakePrepareEnv("test some::mod::test_name", config); assert.strictEqual(testEnv["DATA"], "data"); const specialTestEnv = fakePrepareEnv("test some::mod::special_test", config); assert.strictEqual(specialTestEnv["DATA"], "special_test"); }); suite.addTest('exact test name works', async () => { const config = [ { env: { DATA: "data" } }, { mask: "some::mod::test_name", env: { DATA: "test special" } } ]; const testEnv = fakePrepareEnv("test some::mod::test_name", config); assert.strictEqual(testEnv["DATA"], "test special"); const specialTestEnv = fakePrepareEnv("test some::mod::another_test", config); assert.strictEqual(specialTestEnv["DATA"], "data"); }); suite.addTest('test mod name works', async () => { const config = [ { env: { DATA: "data" } }, { mask: "some::mod", env: { DATA: "mod special" } } ]; const testEnv = fakePrepareEnv("test some::mod::test_name", config); assert.strictEqual(testEnv["DATA"], "mod special"); const specialTestEnv = fakePrepareEnv("test some::mod::another_test", config); assert.strictEqual(specialTestEnv["DATA"], "mod special"); }); }); }