@nteract/fs-kernels
Version:
A manager for the filesystem aspects of Juyter kernels
127 lines (118 loc) • 3.74 kB
text/typescript
import fs from "fs";
import jp from "../src/jupyter-paths";
import { execSync } from "child_process";
const actual = JSON.parse(
execSync("python3 -m jupyter --paths --json").toString()
);
// case-insensitive comparisons
actual.data = actual.data.filter(fs.existsSync).map(path => {
return path.toLowerCase();
});
actual.config = actual.config.filter(fs.existsSync).map(path => {
return path.toLowerCase();
});
describe.skip("dataDirs", () => {
it("returns a promise that resolves to a list of directories that exist", done => {
return jp.dataDirs({ withSysPrefix: true }).then(dirs => {
dirs = dirs.map(dir => {
return dir.toLowerCase();
});
expect(Array.isArray(dirs)).toBe(true);
dirs.forEach(el => {
expect(typeof el).toBe("string");
});
expect(dirs).toStrictEqual(actual.data);
done();
});
});
it("works even in the absence of python", done => {
jp.guessSysPrefix = jest.fn(() => null);
const result = jp.dataDirs({ withSysPrefix: true }).then(dirs => {
dirs = dirs.map(dir => {
return dir.toLowerCase();
});
expect(Array.isArray(dirs)).toBe(true);
dirs.forEach(el => {
expect(typeof el).toBe("string");
});
expect(actual.data).toEqual(dirs);
expect(actual.data.length).not.toBeLessThan(dirs.length);
done();
});
jp.guessSysPrefix.mockRestore();
return result;
});
it("returns a promise that resolves to a list of directories that exist", done => {
return jp.dataDirs({ askJupyter: () => new Promise(actual) }).then(dirs => {
dirs = dirs.map(dir => {
return dir.toLowerCase();
});
expect(Array.isArray(dirs)).toBe(true);
dirs.forEach(el => {
expect(typeof el).toBe("string");
});
expect(dirs).toStrictEqual(actual.data);
done();
});
});
it("returns immediately with a guess by default", async done => {
let dirs = await jp.dataDirs();
dirs = dirs.map(dir => {
return dir.toLowerCase();
});
expect(Array.isArray(dirs)).toBe(true);
dirs.forEach(el => {
expect(typeof el).toBe("string");
});
expect(dirs).toStrictEqual(actual.data);
done();
});
});
describe.skip("runtimeDir", () => {
it("returns the directory where runtime data is stored", async done => {
expect(await jp.runtimeDir()).toEqual(actual.runtime[0]);
done();
});
});
describe.skip("configDirs", () => {
it("returns a promise that resolves to a list of directories that exist", done => {
return jp.configDirs({ withSysPrefix: true }).then(dirs => {
dirs = dirs.map(dir => {
return dir.toLowerCase();
});
expect(Array.isArray(dirs)).toBe(true);
dirs.forEach(el => {
expect(typeof el).toBe("string");
});
expect(dirs).toStrictEqual(actual.config);
done();
});
});
it("returns a promise that resolves to a list of directories that exist", done => {
return jp
.configDirs({ askJupyter: () => new Promise(actual) })
.then(dirs => {
dirs = dirs.map(dir => {
return dir.toLowerCase();
});
expect(Array.isArray(dirs)).toBe(true);
dirs.forEach(el => {
expect(typeof el).toBe("string");
});
expect(dirs).toStrictEqual(actual.config);
done();
});
});
it("returns immediately with a guess by default", async done => {
let dirs = await jp.configDirs();
dirs = dirs.map(dir => {
return dir.toLowerCase();
});
expect(Array.isArray(dirs)).toBe(true);
dirs.forEach(el => {
expect(typeof el).toBe("string");
});
expect(dirs).toStrictEqual(actual.config);
done();
});
});