1'use strict'; 2 3const common = require('../../common'); 4const tmpdir = require('../../common/tmpdir'); 5const child_process = require('child_process'); 6const fs = require('fs'); 7const path = require('path'); 8const url = require('url'); 9const filename = require.resolve(`./build/${common.buildType}/test_general`); 10const test_general = require(filename); 11const assert = require('assert'); 12 13tmpdir.refresh(); 14 15{ 16 // TODO(gabrielschulhof): This test may need updating if/when the filename 17 // becomes a full-fledged URL. 18 assert.strictEqual(test_general.filename, url.pathToFileURL(filename).href); 19} 20 21{ 22 const urlTestDir = path.join(tmpdir.path, 'foo%#bar'); 23 const urlTestFile = path.join(urlTestDir, path.basename(filename)); 24 fs.mkdirSync(urlTestDir, { recursive: true }); 25 fs.copyFileSync(filename, urlTestFile); 26 // Use a child process as indirection so that the built-in modules is not loaded 27 // into this process and can be removed here. 28 const reportedFilename = child_process.spawnSync( 29 process.execPath, 30 ['-p', `require(${JSON.stringify(urlTestFile)}).filename`], 31 { encoding: 'utf8' }).stdout.trim(); 32 assert.doesNotMatch(reportedFilename, /foo%#bar/); 33 assert.strictEqual(reportedFilename, url.pathToFileURL(urlTestFile).href); 34 fs.rmSync(urlTestDir, { 35 force: true, 36 recursive: true, 37 maxRetries: 256, 38 }); 39} 40 41{ 42 const [ major, minor, patch, release ] = test_general.testGetNodeVersion(); 43 assert.strictEqual(process.version.split('-')[0], 44 `v${major}.${minor}.${patch}`); 45 assert.strictEqual(release, process.release.name); 46} 47