Skip to content

Commit

Permalink
process: fix process.features.typescript when Amaro is unavailable
Browse files Browse the repository at this point in the history
PR-URL: #55323
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
  • Loading branch information
aduh95 authored Oct 11, 2024
1 parent 27f8d9e commit f98d9c1
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 25 deletions.
2 changes: 1 addition & 1 deletion lib/internal/bootstrap/node.js
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ ObjectDefineProperty(process, 'features', {
const { emitWarning, emitWarningSync } = require('internal/process/warning');
const { getOptionValue } = require('internal/options');

let kTypeStrippingMode = null;
let kTypeStrippingMode = process.config.variables.node_use_amaro ? null : false;
// This must be a getter, as getOptionValue does not work
// before bootstrapping.
ObjectDefineProperty(process.features, 'typescript', {
Expand Down
49 changes: 25 additions & 24 deletions test/es-module/test-typescript.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,31 @@ import * as fixtures from '../common/fixtures.mjs';
import { match, strictEqual } from 'node:assert';
import { test } from 'node:test';

test('expect process.features.typescript to be \'strip\' when --experimental-strip-types', async () => {
const result = await spawnPromisified(process.execPath, [
'--no-warnings',
'--experimental-strip-types',
fixtures.path('typescript/echo-process-features-typescript.cjs'),
]);

strictEqual(result.stderr, '');
strictEqual(result.stdout, process.config.variables.node_use_amaro ? 'strip\n' : 'false\n');
strictEqual(result.code, 0);
});

test('expect process.features.typescript to be \'transform\' when --experimental-transform-types', async () => {
const result = await spawnPromisified(process.execPath, [
'--no-warnings',
'--experimental-transform-types',
fixtures.path('typescript/echo-process-features-typescript.cjs'),
]);

strictEqual(result.stderr, '');
strictEqual(result.stdout, process.config.variables.node_use_amaro ? 'transform\n' : 'false\n');
strictEqual(result.code, 0);
});


if (!process.config.variables.node_use_amaro) skip('Requires Amaro');

test('execute a TypeScript file', async () => {
Expand Down Expand Up @@ -353,30 +378,6 @@ test('execute a TypeScript test mocking module', { skip: isWindows && process.ar
strictEqual(result.code, 0);
});

test('expect process.features.typescript to be \'strip\' when --experimental-strip-types', async () => {
const result = await spawnPromisified(process.execPath, [
'--no-warnings',
'--experimental-strip-types',
'-p', 'process.features.typescript',
]);

strictEqual(result.stderr, '');
strictEqual(result.stdout, 'strip\n');
strictEqual(result.code, 0);
});

test('expect process.features.typescript to be \'transform\' when --experimental-transform-types', async () => {
const result = await spawnPromisified(process.execPath, [
'--no-warnings',
'--experimental-transform-types',
'-p', 'process.features.typescript',
]);

strictEqual(result.stderr, '');
strictEqual(result.stdout, 'transform\n');
strictEqual(result.code, 0);
});

test('expect process.features.typescript to be false without type-stripping', async () => {
strictEqual(process.features.typescript, false);
});
Expand Down
2 changes: 2 additions & 0 deletions test/fixtures/typescript/echo-process-features-typescript.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
'use strict';
console.log(process.features.typescript);

0 comments on commit f98d9c1

Please sign in to comment.