UNPKG

2.05 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const process = tslib_1.__importStar(require("process"));
5const fsx = tslib_1.__importStar(require("fs-extra"));
6const fsTreeUtils = tslib_1.__importStar(require("fs-tree-utils"));
7const unique_temp_path_1 = tslib_1.__importDefault(require("unique-temp-path"));
8var base;
9(function (base) {
10 function createFactory({ setup, teardown }) {
11 const forAsync = (fn) => async () => {
12 const sm = await setup();
13 const mt = await fn(sm);
14 await teardown(mt);
15 };
16 const forSync = (fn) => forAsync(async (sm) => fn(sm));
17 return Object.assign(forAsync, {
18 forAsync,
19 forSync
20 });
21 }
22 base.createFactory = createFactory;
23})(base = exports.base || (exports.base = {}));
24exports.createFactory = base.createFactory;
25var virtualEnvironment;
26(function (virtualEnvironment) {
27 function createFactory(tree, container = unique_temp_path_1.default()) {
28 const previousWorkingDirectory = process.cwd();
29 const info = { tree, container, previousWorkingDirectory };
30 async function populate() {
31 await depopulate();
32 await fsTreeUtils.create(tree, container);
33 return info;
34 }
35 async function depopulate() {
36 await fsx.remove(container);
37 return info;
38 }
39 const setup = async () => {
40 await populate();
41 process.chdir(container);
42 return info;
43 };
44 const teardown = async () => {
45 process.chdir(previousWorkingDirectory);
46 await depopulate();
47 };
48 const apply = base.createFactory({ setup, teardown });
49 return { info, apply };
50 }
51 virtualEnvironment.createFactory = createFactory;
52})(virtualEnvironment = exports.virtualEnvironment || (exports.virtualEnvironment = {}));
53exports.default = exports.createFactory;
54//# sourceMappingURL=setup-teardown.js.map
\No newline at end of file