UNPKG

magicpatch

Version:

Adds IPython / Jupyter magic commands to IJavascript

171 lines (158 loc) 4.79 kB
/* global $$ */ const {testMagic} = require("./helpers/magicpatch"); const {assert} = require("chai"); const path = require("path"); let startDir = process.cwd(); describe("%cd", function() { afterEach(function() { process.chdir(startDir); $$.addMagic.utils.setHiddenGlobal("_dh", [process.cwd()]); }); it("starts with cwd in history", function() { assert.isArray(global._dh); assert.strictEqual(global._dh[0], startDir); }); it("changes dirs", async function() { let destPath = path.resolve(startDir, ".."); await testMagic( // magic command "%cd ..", // return value undefined, // stdout [destPath], // stderr [], // print output // true, ); assert.strictEqual(process.cwd(), destPath); assert.strictEqual(global._dh.length, 2); assert.strictEqual(global._dh[0], startDir); assert.strictEqual(global._dh[1], destPath); }); it("goes home with no args", async function() { await testMagic( // magic command "%cd", // return value undefined, // stdout [process.env.HOME], // stderr [], // print output // true, ); assert.strictEqual(process.cwd(), process.env.HOME); }); it("last", async function() { let destPath = path.resolve(startDir, ".."); await testMagic( // magic command "%cd ..\n" + "%cd -l\n", // return value undefined, // stdout [destPath, startDir], // stderr [], // print output // true, ); assert.strictEqual(process.cwd(), startDir); assert.strictEqual(global._dh.length, 3); assert.strictEqual(global._dh[0], startDir); assert.strictEqual(global._dh[1], destPath); assert.strictEqual(global._dh[2], startDir); }); it("last errors on only one history dir", async function() { await testMagic( // magic command "%cd -l", // return value undefined, // stdout [], // stderr ["%cd can't change to last dir: you haven't changed directories yet"], // print output // true, ); assert.strictEqual(process.cwd(), startDir); assert.strictEqual(global._dh.length, 1); assert.strictEqual(global._dh[0], startDir); }); it("quiet", async function() { let destPath = path.resolve(startDir, ".."); await testMagic( // magic command "%cd -q ..", // return value undefined, // stdout [], // stderr [], // print output // true, ); assert.strictEqual(process.cwd(), destPath); }); it("history number", async function() { let destPath = path.resolve(startDir, ".."); await testMagic( // magic command "%cd ..\n" + "%cd -n 0\n", // return value undefined, // stdout [destPath, startDir], // stderr [], // print output // true, ); assert.strictEqual(process.cwd(), startDir); assert.strictEqual(global._dh.length, 3); assert.strictEqual(global._dh[0], startDir); assert.strictEqual(global._dh[1], destPath); assert.strictEqual(global._dh[2], startDir); }); it("errors on non-number history arg", async function() { await testMagic( // magic command "%cd -n 0a", // return value undefined, // stdout [], // stderr ["%cd expected number argument but got 0a"], // print output // true, ); assert.strictEqual(process.cwd(), startDir); }); it("doesn't add to dhist if directory is the same", async function() { await testMagic( // magic command "%cd .\n" + "%cd .\n" + "%cd .\n", // return value undefined, // stdout [startDir, startDir, startDir], // stderr [], // print output // true, ); assert.strictEqual(process.cwd(), startDir); assert.strictEqual(global._dh.length, 1); assert.strictEqual(global._dh[0], startDir); }); });