You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.3 KiB
34 lines
1.3 KiB
"use strict"; |
|
// Copyright 2021 Google Inc. Use of this source code is governed by an |
|
// MIT-style license that can be found in the LICENSE file or at |
|
// https://opensource.org/licenses/MIT. |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.run = run; |
|
const fs = require("fs"); |
|
const p = require("path"); |
|
const del = require("del"); |
|
/** |
|
* Runs `test` within a sandbox directory. This directory is made available via |
|
* the `dir` function, which acts like `p.join()` but includes the sandbox |
|
* directory at the beginning. |
|
* |
|
* Handles all buildup and teardown. Returns a promise that resolves when `test` |
|
* finishes running. |
|
*/ |
|
async function run(test, options) { |
|
const testDir = p.join(p.dirname(__filename), 'sandbox', `${Math.random()}`.slice(2)); |
|
fs.mkdirSync(testDir, { recursive: true }); |
|
if (options?.sassPathDirs) { |
|
process.env.SASS_PATH = options.sassPathDirs.join(process.platform === 'win32' ? ';' : ':'); |
|
} |
|
try { |
|
await test((...paths) => p.join(testDir, ...paths)); |
|
} |
|
finally { |
|
if (options?.sassPathDirs) |
|
process.env.SASS_PATH = undefined; |
|
// TODO(awjin): Change this to rmSync once we drop support for Node 12. |
|
del.sync(testDir, { force: true }); |
|
} |
|
} |
|
//# sourceMappingURL=sandbox.js.map
|