Tap parser fails when test name includes non ASCII characters
Version
v20.0.0-pre
Platform
Darwin Moshes-MBP.localdomain 21.1.0 Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:01 PDT 2021; root:xnu-8019.41.5~1/RELEASE_ARM64_T6000 arm64
Subsystem
test_runner
What steps will reproduce the bug?
// test.mjs
import { it } from 'node:test'
it('أهلا', () => {});
run ./node --test test.mjs
How often does it reproduce? Is there a required condition?
always
What is the expected behavior?
the same as when running ./node test.mjs
without --test
:
TAP version 13
# Subtest: أهلا
ok 1 - أهلا
---
duration_ms: 0.6085
...
1..1
# tests 1
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 4.2505
What do you see instead?
TAP version 13
# Subtest: /Users/moshe/repos/node/b.mjs
not ok 1 - /Users/moshe/repos/node/b.mjs
---
duration_ms: 90.51875
failureType: 'uncaughtException'
error: 'Unexpected character: أ at line 1, column 0'
code: 'ERR_TAP_LEXER_ERROR'
stack: |-
Socket.emit (node:events:519:28)
Socket.read (node:net:724:39)
async Promise.all (index 1)
...
1..1
# tests 1
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 92.843875
Additional information
according to TAP spec we should support any text:
Description Any text after the test number but before a # is the description of the test point. Descriptions should not begin with a digit so that they are not confused with the test point number. The harness may do whatever it wants with the description.
the issue seems to be with #isLiteralSymbol