test: cover vm with negative tests

Test the impossibility of creating
an abstract instance of the Module.
Test of SyntheticModule to throw exception
if invalid params in constructor

PR-URL: https://github.com/nodejs/node/pull/31028
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
This commit is contained in:
Andrew Kuzmenko 2019-12-18 18:43:22 +03:00 committed by Rich Trott
parent ea6a4576ae
commit ee14a64537

View File

@ -4,7 +4,12 @@
const common = require('../common');
const assert = require('assert');
const { SourceTextModule, SyntheticModule, createContext } = require('vm');
const {
Module,
SourceTextModule,
SyntheticModule,
createContext
} = require('vm');
const util = require('util');
(async function test1() {
@ -107,3 +112,38 @@ const util = require('util');
assert.notStrictEqual(dep, undefined);
assert.strictEqual(dep, m.dependencySpecifiers);
}
// Check the impossibility of creating an abstract instance of the Module.
{
common.expectsError(() => new Module(), {
message: 'Module is not a constructor',
type: TypeError
});
}
// Check to throws invalid exportNames
{
common.expectsError(() => new SyntheticModule(undefined, () => {}, {}), {
message: 'The "exportNames" argument must be an Array of strings.' +
' Received undefined',
type: TypeError
});
}
// Check to throws invalid evaluateCallback
{
common.expectsError(() => new SyntheticModule([], undefined, {}), {
message: 'The "evaluateCallback" argument must be of type function.' +
' Received undefined',
type: TypeError
});
}
// Check to throws invalid options
{
common.expectsError(() => new SyntheticModule([], () => {}, null), {
message: 'The "options" argument must be of type object.' +
' Received null',
type: TypeError
});
}