| 'use strict'; |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| const { promisify } = require('util'); |
| const execFile = require('child_process').execFile; |
| const fixtures = require('../common/fixtures'); |
| |
| const echoFixture = fixtures.path('echo.js'); |
| const promisified = promisify(execFile); |
| const invalidArgTypeError = { |
| code: 'ERR_INVALID_ARG_TYPE', |
| name: 'TypeError' |
| }; |
| |
| { |
| // Verify that the signal option works properly |
| const ac = new AbortController(); |
| const signal = ac.signal; |
| const promise = promisified(process.execPath, [echoFixture, 0], { signal }); |
| |
| ac.abort(); |
| |
| assert.rejects( |
| promise, |
| { name: 'AbortError' } |
| ).then(common.mustCall()); |
| } |
| |
| { |
| // Verify that the signal option works properly when already aborted |
| const signal = AbortSignal.abort(); |
| |
| assert.rejects( |
| promisified(process.execPath, [echoFixture, 0], { signal }), |
| { name: 'AbortError' } |
| ).then(common.mustCall()); |
| } |
| |
| { |
| // Verify that if something different than Abortcontroller.signal |
| // is passed, ERR_INVALID_ARG_TYPE is thrown |
| const signal = {}; |
| assert.throws(() => { |
| promisified(process.execPath, [echoFixture, 0], { signal }); |
| }, invalidArgTypeError); |
| } |
| |
| { |
| // Verify that if something different than Abortcontroller.signal |
| // is passed, ERR_INVALID_ARG_TYPE is thrown |
| const signal = 'world!'; |
| assert.throws(() => { |
| promisified(process.execPath, [echoFixture, 0], { signal }); |
| }, invalidArgTypeError); |
| } |