|
1 | 1 | const t = require('tap')
|
2 | 2 | const { resolve } = require('node:path')
|
3 | 3 | const mockGlobals = require('@npmcli/mock-globals')
|
| 4 | +const Module = require('node:module') |
4 | 5 |
|
5 | 6 | // have to fake the node version, or else it'll only pass on this one
|
6 | 7 | mockGlobals(t, { 'process.version': 'v14.8.0', 'process.env.NODE_ENV': undefined })
|
@@ -1020,3 +1021,38 @@ t.test('otp changes auth-type', t => {
|
1020 | 1021 | t.strictSame(obj, { 'auth-type': 'legacy', otp: 123456 })
|
1021 | 1022 | t.end()
|
1022 | 1023 | })
|
| 1024 | + |
| 1025 | +t.test('node-gyp', t => { |
| 1026 | + t.test('when node-gyp is available', t => { |
| 1027 | + const defs = mockDefs() |
| 1028 | + t.type(defs['node-gyp'].default, 'string') |
| 1029 | + t.ok(defs['node-gyp'].default.length > 0, 'has a default path') |
| 1030 | + t.ok(defs['node-gyp'].default.includes('node-gyp'), 'path contains node-gyp') |
| 1031 | + t.end() |
| 1032 | + }) |
| 1033 | + |
| 1034 | + t.test('when node-gyp is not available', t => { |
| 1035 | + const origResolve = Module._resolveFilename |
| 1036 | + |
| 1037 | + Module._resolveFilename = function (request, parent, isMain, options) { |
| 1038 | + if (request === 'node-gyp/bin/node-gyp.js') { |
| 1039 | + const err = new Error(`Cannot find module '${request}'`) |
| 1040 | + err.code = 'MODULE_NOT_FOUND' |
| 1041 | + throw err |
| 1042 | + } |
| 1043 | + return origResolve.call(this, request, parent, isMain, options) |
| 1044 | + } |
| 1045 | + |
| 1046 | + try { |
| 1047 | + const defs = require('../../lib/definitions/definitions.js') |
| 1048 | + t.equal(defs['node-gyp'].default, '', 'returns empty string when node-gyp not found') |
| 1049 | + } finally { |
| 1050 | + // Restore the original resolve |
| 1051 | + Module._resolveFilename = origResolve |
| 1052 | + } |
| 1053 | + |
| 1054 | + t.end() |
| 1055 | + }) |
| 1056 | + |
| 1057 | + t.end() |
| 1058 | +}) |
0 commit comments