mirror of
https://github.com/ivuorinen/nvm-auto-use.fish.git
synced 2026-02-19 06:52:10 +00:00
feat: refactor plugin architecture, enhance linting, CI & tooling
- Major refactor of core Fish functions for modularity, caching, and error handling - Improved `.editorconfig` and Makefile for stricter formatting and linting standards - Expanded linting support: added EditorConfig checks, auto-install for missing tools, and Makefile targets - Enhanced CI workflow with clearer permissions and job steps in GitHub Actions - Updated documentation in `README.md` and `CLAUDE.md` to reflect new features, advanced developer tools, and contribution guidelines - Improved Node.js version manager detection, switching, and installation logic - Added/updated utility functions for configuration, silent mode, notifications, and version extraction - Various bug fixes, code quality improvements, and expanded test coverage
This commit is contained in:
134
tests/unit/test_auto_use_helpers.fish
Normal file
134
tests/unit/test_auto_use_helpers.fish
Normal file
@@ -0,0 +1,134 @@
|
||||
#!/usr/bin/env fish
|
||||
# Unit tests for nvm_auto_use helper functions
|
||||
|
||||
source tests/test_runner.fish
|
||||
|
||||
function test_select_manager
|
||||
echo "Testing _nvm_auto_use_select_manager..."
|
||||
|
||||
# Mock nvm_compat_detect to return a list
|
||||
function nvm_compat_detect
|
||||
echo "nvm fnm volta"
|
||||
end
|
||||
|
||||
set -e _nvm_auto_use_preferred_manager
|
||||
set -l manager (_nvm_auto_use_select_manager)
|
||||
assert_equals "$manager" nvm "Default manager selection returns first available"
|
||||
|
||||
set -g _nvm_auto_use_preferred_manager volta
|
||||
set manager (_nvm_auto_use_select_manager)
|
||||
assert_equals "$manager" volta "Preferred manager selection works"
|
||||
|
||||
set -e _nvm_auto_use_preferred_manager
|
||||
functions -e nvm_compat_detect
|
||||
end
|
||||
|
||||
function test_should_debounce
|
||||
echo "Testing _nvm_auto_use_should_debounce..."
|
||||
|
||||
set -e _nvm_auto_use_last_change
|
||||
set -g _nvm_auto_use_debounce_ms 1000
|
||||
|
||||
# First call should set last_change and return 1 (not debounced)
|
||||
set result (_nvm_auto_use_should_debounce)
|
||||
assert_equals "$result" "" "First call not debounced"
|
||||
|
||||
# Second call within debounce period should return 0 (debounced)
|
||||
set result (_nvm_auto_use_should_debounce)
|
||||
assert_equals "$result" "" "Second call debounced"
|
||||
|
||||
set -e _nvm_auto_use_last_change
|
||||
set -e _nvm_auto_use_debounce_ms
|
||||
end
|
||||
|
||||
function test_is_excluded_dir
|
||||
echo "Testing _nvm_auto_use_is_excluded_dir..."
|
||||
|
||||
set -g _nvm_auto_use_excluded_dirs testdir
|
||||
set -l orig_pwd (pwd)
|
||||
cd /
|
||||
mkdir -p testdir
|
||||
cd testdir
|
||||
|
||||
set result (_nvm_auto_use_is_excluded_dir)
|
||||
assert_equals "$result" "" "Excluded directory detected"
|
||||
|
||||
cd "$orig_pwd"
|
||||
set -e _nvm_auto_use_excluded_dirs
|
||||
end
|
||||
|
||||
function test_get_mtime
|
||||
echo "Testing _nvm_auto_use_get_mtime..."
|
||||
|
||||
echo test >testfile
|
||||
set mtime (_nvm_auto_use_get_mtime "testfile")
|
||||
test -n "$mtime"
|
||||
and echo "✅ mtime returned: $mtime"
|
||||
or echo "❌ mtime not returned"
|
||||
|
||||
rm -f testfile
|
||||
end
|
||||
|
||||
function test_is_cache_valid
|
||||
echo "Testing _nvm_auto_use_is_cache_valid..."
|
||||
|
||||
set -g _nvm_auto_use_cached_file foo
|
||||
set -g _nvm_auto_use_cached_mtime 123
|
||||
set result (_nvm_auto_use_is_cache_valid "foo" "123")
|
||||
assert_equals "$result" "" "Cache valid returns 0"
|
||||
|
||||
set result (_nvm_auto_use_is_cache_valid "bar" "123")
|
||||
assert_equals "$result" "" "Cache invalid returns 1"
|
||||
|
||||
set -e _nvm_auto_use_cached_file
|
||||
set -e _nvm_auto_use_cached_mtime
|
||||
end
|
||||
|
||||
function test_clear_cache
|
||||
echo "Testing _nvm_auto_use_clear_cache..."
|
||||
|
||||
set -g _nvm_auto_use_cached_file foo
|
||||
set -g _nvm_auto_use_cached_version bar
|
||||
set -g _nvm_auto_use_cached_mtime baz
|
||||
_nvm_auto_use_clear_cache
|
||||
if not set -q _nvm_auto_use_cached_file
|
||||
echo "✅ Cached file cleared"
|
||||
else
|
||||
echo "❌ Cached file not cleared"
|
||||
end
|
||||
if not set -q _nvm_auto_use_cached_version
|
||||
echo "✅ Cached version cleared"
|
||||
else
|
||||
echo "❌ Cached version not cleared"
|
||||
end
|
||||
if not set -q _nvm_auto_use_cached_mtime
|
||||
echo "✅ Cached mtime cleared"
|
||||
else
|
||||
echo "❌ Cached mtime not cleared"
|
||||
end
|
||||
end
|
||||
|
||||
function main
|
||||
setup_test_env
|
||||
|
||||
set -l failed 0
|
||||
|
||||
test_select_manager; or set failed (math "$failed + 1")
|
||||
test_should_debounce; or set failed (math "$failed + 1")
|
||||
test_is_excluded_dir; or set failed (math "$failed + 1")
|
||||
test_get_mtime; or set failed (math "$failed + 1")
|
||||
test_is_cache_valid; or set failed (math "$failed + 1")
|
||||
test_clear_cache; or set failed (math "$failed + 1")
|
||||
|
||||
cleanup_test_env
|
||||
|
||||
if test $failed -eq 0
|
||||
echo "🎉 All nvm_auto_use helper tests passed!"
|
||||
return 0
|
||||
else
|
||||
echo "💥 $failed helper test(s) failed"
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
main
|
||||
Reference in New Issue
Block a user