diff --git a/test/parallel/test-readline-position.js b/test/parallel/test-readline-position.js index 9a1a011b0056ee..4e1114418eb380 100644 --- a/test/parallel/test-readline-position.js +++ b/test/parallel/test-readline-position.js @@ -14,16 +14,26 @@ const ctrlU = { ctrl: true, name: 'u' }; prompt: '' }); - for (const [cursor, string] of [ + const tests = [ [1, 'a'], [2, 'ab'], - [2, '丁'], - [0, '\u0301'], // COMBINING ACUTE ACCENT - [1, 'a\u0301'], // á - [0, '\u20DD'], // COMBINING ENCLOSING CIRCLE - [2, 'a\u20DDb'], // a⃝b - [0, '\u200E'] // LEFT-TO-RIGHT MARK - ]) { + [2, '丁'] + ]; + + // The non-ICU JS implementation of character width calculation is only aware + // of the wide/narrow distinction. Only test these more advanced cases when + // ICU is available. + if (process.binding('config').hasIntl) { + tests.push( + [0, '\u0301'], // COMBINING ACUTE ACCENT + [1, 'a\u0301'], // á + [0, '\u20DD'], // COMBINING ENCLOSING CIRCLE + [2, 'a\u20DDb'], // a⃝b + [0, '\u200E'] // LEFT-TO-RIGHT MARK + ); + } + + for (const [cursor, string] of tests) { rl.write(string); assert.strictEqual(rl._getCursorPos().cols, cursor); rl.write(null, ctrlU);