From a77b2987bc90879af30a39ba274df9061cc7fbae Mon Sep 17 00:00:00 2001 From: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:49:43 -0700 Subject: fix(ext/node): Match punycode module behavior to node (#22847) Fixes #19214. We were using the `idna` crate to implement our polyfill for `punycode.toASCII` and `punycode.toUnicode`. The `idna` crate is correct, and adheres to the IDNA2003/2008 spec, but it turns out `node`'s implementations don't really follow any spec! Instead, node splits the domain by `'.'` and punycode encodes/decodes each part. This means that node's implementations will happily work on codepoints that are disallowed by the IDNA specs, causing the error in #19214. While fixing this, I went ahead and matched the node behavior on all of the punycode functions and enabled node's punycode test in our `node_compat` suite. --- tests/integration/node_unit_tests.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'tests/integration') diff --git a/tests/integration/node_unit_tests.rs b/tests/integration/node_unit_tests.rs index 3c824b6b2..2fd7e78f6 100644 --- a/tests/integration/node_unit_tests.rs +++ b/tests/integration/node_unit_tests.rs @@ -77,6 +77,7 @@ util::unit_test_factory!( path_test, perf_hooks_test, process_test, + punycode_test, querystring_test, readline_test, repl_test, -- cgit v1.2.3