From 67bbfeb7e1ba9415b59fd9fada81f1c970a07a33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sun, 5 Sep 2021 12:57:30 +0200 Subject: [PATCH] test: make tests pass on Windows with Unix EOL It is possible on Windows to configure Git to checkout line-endings "as-is", which for Node.js means Unix-style. This change makes the tests that rely on line endings pass in that case. PR-URL: https://github.com/nodejs/node/pull/40002 Reviewed-By: James M Snell Reviewed-By: Antoine du Hamel Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca --- test/common/index.js | 8 +++++++- test/es-module/test-esm-invalid-pjson.js | 4 ++-- test/parallel/test-source-map-enable.js | 2 +- test/wasi/test-wasi.js | 8 ++++---- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/test/common/index.js b/test/common/index.js index 36873eb96f89b4..4f4e85bcaf94ac 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -878,8 +878,14 @@ const common = { throw new Error('common.PORT cannot be used in a parallelized test'); } return +process.env.NODE_COMMON_PORT || 12346; - } + }, + /** + * Returns the EOL character used by this Git checkout. + */ + get checkoutEOL() { + return fs.readFileSync(__filename).includes('\r\n') ? '\r\n' : '\n'; + }, }; const validProperties = new Set(Object.keys(common)); diff --git a/test/es-module/test-esm-invalid-pjson.js b/test/es-module/test-esm-invalid-pjson.js index 9f4711321230bf..cdbebb17b4bb34 100644 --- a/test/es-module/test-esm-invalid-pjson.js +++ b/test/es-module/test-esm-invalid-pjson.js @@ -1,6 +1,6 @@ 'use strict'; -const { mustCall, isWindows } = require('../common'); +const { mustCall, checkoutEOL } = require('../common'); const fixtures = require('../common/fixtures'); const { spawn } = require('child_process'); const { strictEqual, ok } = require('assert'); @@ -21,7 +21,7 @@ child.on('close', mustCall((code, signal) => { stderr.includes( `[ERR_INVALID_PACKAGE_CONFIG]: Invalid package config ${invalidJson} ` + `while importing "invalid-pjson" from ${entry}. ` + - `Unexpected token } in JSON at position ${isWindows ? 16 : 14}` + `Unexpected token } in JSON at position ${12 + checkoutEOL.length * 2}` ), stderr); })); diff --git a/test/parallel/test-source-map-enable.js b/test/parallel/test-source-map-enable.js index eab718813fc379..8e4f8e3a028062 100644 --- a/test/parallel/test-source-map-enable.js +++ b/test/parallel/test-source-map-enable.js @@ -250,7 +250,7 @@ function nextdir() { 'istanbul-throw.js', coverageDirectory ); - if (common.isWindows) { + if (common.checkoutEOL === '\r\n') { assert.deepStrictEqual(sourceMap.lineLengths, [1086, 31, 185, 649, 0]); } else { assert.deepStrictEqual(sourceMap.lineLengths, [1085, 30, 184, 648, 0]); diff --git a/test/wasi/test-wasi.js b/test/wasi/test-wasi.js index 8d99a91b4af570..6c00b5a7b72503 100644 --- a/test/wasi/test-wasi.js +++ b/test/wasi/test-wasi.js @@ -34,7 +34,7 @@ if (process.argv[2] === 'wasi-child') { } else { const assert = require('assert'); const cp = require('child_process'); - const { EOL } = require('os'); + const { checkoutEOL } = common; function runWASI(options) { console.log('executing', options.test); @@ -69,7 +69,7 @@ if (process.argv[2] === 'wasi-child') { } runWASI({ test: 'exitcode', exitCode: 120 }); runWASI({ test: 'fd_prestat_get_refresh' }); - runWASI({ test: 'freopen', stdout: `hello from input2.txt${EOL}` }); + runWASI({ test: 'freopen', stdout: `hello from input2.txt${checkoutEOL}` }); runWASI({ test: 'ftruncate' }); runWASI({ test: 'getentropy' }); @@ -87,10 +87,10 @@ if (process.argv[2] === 'wasi-child') { runWASI({ test: 'readdir' }); } - runWASI({ test: 'read_file', stdout: `hello from input.txt${EOL}` }); + runWASI({ test: 'read_file', stdout: `hello from input.txt${checkoutEOL}` }); runWASI({ test: 'read_file_twice', - stdout: `hello from input.txt${EOL}hello from input.txt${EOL}` + stdout: `hello from input.txt${checkoutEOL}hello from input.txt${checkoutEOL}` }); runWASI({ test: 'stat' }); runWASI({ test: 'write_file' });