| 
22 | 22 | 'use strict';  | 
23 | 23 | const common = require('../common');  | 
24 | 24 | const assert = require('assert');  | 
 | 25 | +const { execSync } = require('child_process');  | 
25 | 26 | 
 
  | 
26 |  | -const error_desc = {  | 
 | 27 | +const errorMessagesByPlatform = {  | 
27 | 28 |   win32: ['%1 is not a valid Win32 application'],  | 
28 | 29 |   linux: ['file too short', 'Exec format error'],  | 
29 | 30 |   sunos: ['unknown file type', 'not an ELF file'],  | 
30 | 31 |   darwin: ['file too short']  | 
31 | 32 | };  | 
32 |  | -const dlerror_msg = error_desc[process.platform];  | 
 | 33 | +// If we don't know a priori what the error would be, we accept anything.  | 
 | 34 | +const errorMessages = errorMessagesByPlatform[process.platform] || [''];  | 
 | 35 | + | 
 | 36 | +// On Windows, error messages are MUI dependent  | 
 | 37 | +// Ref: https://github.com/nodejs/node/issues/13376  | 
 | 38 | +let localeOk = true;  | 
 | 39 | +if (common.isWindows) {  | 
 | 40 | +  const powerShellFindMUI =  | 
 | 41 | +    'powershell -NoProfile -ExecutionPolicy Unrestricted -c ' +  | 
 | 42 | +    '"(Get-UICulture).TwoLetterISOLanguageName"';  | 
 | 43 | +  try {  | 
 | 44 | +    // If MUI != 'en' we'll ignore the content of the message  | 
 | 45 | +    localeOk = execSync(powerShellFindMUI).toString('utf8').trim() === 'en';  | 
 | 46 | +  } catch (_) {  | 
 | 47 | +    // It's only a best effort try to find the MUI  | 
 | 48 | +  }  | 
 | 49 | +}  | 
33 | 50 | 
 
  | 
34 | 51 | assert.throws(  | 
35 | 52 |   () => { require('../fixtures/module-loading-error.node'); },  | 
36 | 53 |   (e) => {  | 
37 |  | -    if (dlerror_msg && !dlerror_msg.some((msg) => e.message.includes(msg)))  | 
38 |  | -      return false;  | 
39 |  | -    if (e.name !== 'Error')  | 
 | 54 | +    if (localeOk && !errorMessages.some((msg) => e.message.includes(msg)))  | 
40 | 55 |       return false;  | 
41 |  | -    return true;  | 
 | 56 | +    return e.name === 'Error';  | 
42 | 57 |   }  | 
43 | 58 | );  | 
44 | 59 | 
 
  | 
 | 
0 commit comments