mirror of https://github.com/nodejs/node.git
49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
const assert = require('assert');
|
||
|
const fixtures = require('../common/fixtures');
|
||
|
const tmpdir = require('../common/tmpdir');
|
||
|
const fs = require('fs');
|
||
|
const path = require('path');
|
||
|
const common = require('../common');
|
||
|
const { WASI } = require('wasi');
|
||
|
|
||
|
function returnOnExitEnvToValue(env) {
|
||
|
const envValue = env.RETURN_ON_EXIT;
|
||
|
if (envValue === undefined) {
|
||
|
return undefined;
|
||
|
}
|
||
|
|
||
|
return envValue === 'true';
|
||
|
}
|
||
|
|
||
|
common.expectWarning('ExperimentalWarning',
|
||
|
'WASI is an experimental feature and might change at any time');
|
||
|
|
||
|
tmpdir.refresh();
|
||
|
const wasmDir = path.join(__dirname, '..', 'wasi', 'wasm');
|
||
|
const wasiPreview1 = new WASI({
|
||
|
version: 'preview1',
|
||
|
args: ['foo', '-bar', '--baz=value'],
|
||
|
env: process.env,
|
||
|
preopens: {
|
||
|
'/sandbox': fixtures.path('wasi'),
|
||
|
'/tmp': tmpdir.path,
|
||
|
},
|
||
|
returnOnExit: returnOnExitEnvToValue(process.env),
|
||
|
});
|
||
|
|
||
|
// Validate the getImportObject helper
|
||
|
assert.strictEqual(wasiPreview1.wasiImport,
|
||
|
wasiPreview1.getImportObject().wasi_snapshot_preview1);
|
||
|
const modulePathPreview1 = path.join(wasmDir, `${process.argv[2]}.wasm`);
|
||
|
const bufferPreview1 = fs.readFileSync(modulePathPreview1);
|
||
|
|
||
|
(async () => {
|
||
|
const { instance: instancePreview1 } =
|
||
|
await WebAssembly.instantiate(bufferPreview1,
|
||
|
wasiPreview1.getImportObject());
|
||
|
|
||
|
wasiPreview1.start(instancePreview1);
|
||
|
})().then(common.mustCall());
|