mirror of
https://github.com/nvm-sh/nvm.git
synced 2026-02-07 18:32:50 +08:00
[Fix] prevent sed errors when pattern contains #
When `.nvmrc` or alias files contained comments (lines with `#`), the `#` character could end up in the search pattern passed to sed, causing "unterminated regular expression" errors because `#` is used as the sed address delimiter. This commit fixes the issue in two places: 1. `nvm_alias`: Strip comments from alias file contents before returning them, and trim trailing whitespace 2. `nvm_ls`: Escape `#` characters in SEARCH_PATTERN so they're treated as literal characters in the sed address Fixes #3761
This commit is contained in:
23
test/fast/Unit tests/nvm_ls handles hash in pattern
Executable file
23
test/fast/Unit tests/nvm_ls handles hash in pattern
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
|
||||
die () { echo "$@" ; exit 1; }
|
||||
|
||||
\. ../../../nvm.sh
|
||||
|
||||
# Test: nvm_ls with pattern containing # should not cause sed error
|
||||
# This is a regression test for https://github.com/nvm-sh/nvm/issues/3761
|
||||
|
||||
# The pattern with # should not cause sed "unterminated regular expression" error
|
||||
# It's OK if it returns N/A (no match), but it should not produce sed errors
|
||||
OUTPUT="$(nvm_ls 'foo#bar' 2>&1)"
|
||||
EXIT_CODE=$?
|
||||
|
||||
# Check that output doesn't contain sed error message
|
||||
echo "$OUTPUT" | grep -q "unterminated regular expression" && \
|
||||
die "nvm_ls with # in pattern caused sed 'unterminated regular expression' error: $OUTPUT"
|
||||
echo "$OUTPUT" | grep -q "invalid command code" && \
|
||||
die "nvm_ls with # in pattern caused sed 'invalid command code' error: $OUTPUT"
|
||||
|
||||
# Should return N/A with exit code 3 (not found)
|
||||
[ "$EXIT_CODE" = "3" ] || die "nvm_ls 'foo#bar' should exit with code 3, got $EXIT_CODE"
|
||||
echo "$OUTPUT" | grep -q "N/A" || die "nvm_ls 'foo#bar' should output N/A, got: $OUTPUT"
|
||||
Reference in New Issue
Block a user