48 lines · 2.1 KB · TypeScript
RawDownload
import { describe, expect, it } from 'vitest' import type { DiscoveredInterpreter, EnvProvenance, RuntimeEnablement } from './notebook-runtime'import { isEnvEnabled, packageToolFor } from './notebook-runtime' const env = (provenance: EnvProvenance, envId = '/env'): DiscoveredInterpreter => ({  language: 'python',  provenance,  envId,  interpreterPath: envId,  label: envId,  runnable: true}) describe('isEnvEnabled', () => {  it('defaults app-managed and agent-created ON, only user-own OFF, with no explicit override', () => {    // App-managed + agent-created are app-controlled and default enabled (the agent must be able to    // bind an env it just created); only the user's OWN interpreters require an explicit opt-in.    expect(isEnvEnabled(env('app-managed'))).toBe(true)    expect(isEnvEnabled(env('agent-created'))).toBe(true)    expect(isEnvEnabled(env('user-own'))).toBe(false)  })   it('applies the provenance default when the enablement map has no entry for the env', () => {    const enablement: RuntimeEnablement = { enabled: { '/other': true }, installAuthorized: {} }    expect(isEnvEnabled(env('app-managed', '/env'), enablement)).toBe(true)    expect(isEnvEnabled(env('user-own', '/env'), enablement)).toBe(false)  })   it('lets an explicit override win over the provenance default in both directions', () => {    const disableManaged: RuntimeEnablement = { enabled: { '/env': false }, installAuthorized: {} }    const enableUserOwn: RuntimeEnablement = { enabled: { '/env': true }, installAuthorized: {} }    expect(isEnvEnabled(env('app-managed', '/env'), disableManaged)).toBe(false)    expect(isEnvEnabled(env('user-own', '/env'), enableUserOwn)).toBe(true)  })}) describe('packageToolFor', () => {  it('routes app-owned envs (any language) to micromamba', () => {    expect(packageToolFor('python', true)).toBe('micromamba')    expect(packageToolFor('r', true)).toBe('micromamba')  })   it("routes the user's own envs to their own pip / R library, never micromamba", () => {    expect(packageToolFor('python', false)).toBe('pip')    expect(packageToolFor('r', false)).toBe('r-library')  })})