Skip to content

Commit 50844c2

Browse files
committed
Don't emit warnings for unreadable or non-file package.json
1 parent 1e9690b commit 50844c2

File tree

3 files changed

+45
-9
lines changed

3 files changed

+45
-9
lines changed

libexec/nodenv-package-json-engine

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ package_json_has_precedence() {
2323
}
2424

2525
find_package_json_path() {
26-
root="$1"
26+
local package_json root="$1"
2727
while [ -n "$root" ]; do
28-
if [ -e "${root}/package.json" ]; then
29-
echo "${root}/package.json"
28+
package_json="$root/package.json"
29+
30+
if [ -r "$package_json" ] && [ -f "$package_json" ]; then
31+
echo "$package_json"
3032
return
3133
fi
3234
root="${root%/*}"

test/nodenv-package-json-engine.bats

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,35 @@ load test_helper
5656
assert_success "5.0.0 (set by NODENV_VERSION environment variable)"
5757
}
5858

59-
@test 'Does not match babel preset env settings' {
60-
cd_into_babel_env_package
59+
@test 'Does not match arbitrary "node" key in package.json' {
60+
in_package_with_babel_env
61+
62+
run nodenv version-name
63+
64+
assert_success 'system'
65+
}
66+
67+
@test 'Handles missing package.json' {
68+
in_example_package
69+
70+
run nodenv version-name
71+
72+
assert_success 'system'
73+
}
74+
75+
@test 'Does not fail with unreadable package.json' {
76+
in_example_package
77+
touch package.json
78+
chmod -r package.json
79+
80+
run nodenv version-name
81+
82+
assert_success 'system'
83+
}
84+
85+
@test 'Does not fail with non-file package.json' {
86+
in_example_package
87+
mkdir package.json
6188

6289
run nodenv version-name
6390

test/test_helper.bash

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,23 @@ setup() {
1414
export PATH="$node_modules_bin:/usr/bin:/bin:/usr/sbin:/sbin"
1515

1616
export NODENV_ROOT="$BATS_TEST_DIRNAME/fixtures/nodenv_root"
17+
18+
19+
cd "$EXAMPLE_PACKAGE_DIR" || return 1
1720
}
1821

1922
teardown() {
2023
rm -f "$EXAMPLE_PACKAGE_DIR"/.node-version
21-
rm -f "$EXAMPLE_PACKAGE_DIR"/package.json
24+
rm -rf "$EXAMPLE_PACKAGE_DIR"/package.json
2225
rm -f "$NODENV_ROOT/version"
2326
}
2427

25-
in_package_for_engine() {
28+
in_example_package() {
2629
cd "$EXAMPLE_PACKAGE_DIR" || return 1
30+
}
31+
32+
in_package_for_engine() {
33+
in_example_package
2734
cat << JSON > package.json
2835
{
2936
"engines": {
@@ -33,8 +40,8 @@ in_package_for_engine() {
3340
JSON
3441
}
3542

36-
cd_into_babel_env_package() {
37-
cd "$EXAMPLE_PACKAGE_DIR" || return 1
43+
in_package_with_babel_env() {
44+
in_example_package
3845
cat << JSON > package.json
3946
{
4047
"presets": [

0 commit comments

Comments
 (0)