@sebastienrousseau/dotfiles 0.2.481 → 0.2.499
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/ARCHITECTURE.md +29 -196
- package/docs/COMPLIANCE.md +10 -10
- package/docs/COPYRIGHT +3 -4
- package/docs/OPERATIONS.md +38 -65
- package/docs/PLAN.md +3 -3
- package/docs/PR_DESCRIPTION.md +85 -84
- package/docs/ROADMAP.md +11 -11
- package/docs/ROADMAP_legacy.md +556 -0
- package/docs/SECURITY_CHECKLIST.md +1 -1
- package/docs/TASK.md +4 -4
- package/docs/WALKTHROUGH.md +33 -152
- package/package.json +17 -5
- package/scripts/backup.sh +142 -0
- package/scripts/banner.sh +20 -0
- package/scripts/benchmark.sh +20 -0
- package/scripts/build.sh +41 -0
- package/scripts/clean.sh +31 -0
- package/scripts/compile.sh +54 -0
- package/scripts/copy.sh +108 -0
- package/scripts/{tools/detect-collisions.py → detect-collisions.py} +1 -1
- package/scripts/doctor.sh +79 -0
- package/scripts/dotfiles.sh +63 -0
- package/scripts/download.sh +35 -0
- package/scripts/help.sh +57 -0
- package/scripts/lock-configs.sh +57 -0
- package/scripts/package.sh +46 -0
- package/scripts/ssh.sh +55 -0
- package/scripts/teleport.sh +23 -0
- package/scripts/{tests/test-aliases.sh → test-aliases.sh} +3 -3
- package/scripts/test_smoke.sh +88 -0
- package/scripts/unpack.sh +28 -0
- package/scripts/{diagnostics/verify_state.sh → verify_state.sh} +21 -21
- package/templates/projects/go/README.md +0 -4
- package/templates/projects/node/README.md +0 -4
- package/templates/projects/python/README.md +0 -4
- package/templates/projects/python/pyproject.toml +0 -15
- package/CHANGELOG.md +0 -285
- package/LICENSE +0 -1283
- package/README.md +0 -315
- package/docs/ALIASES.md +0 -128
- package/docs/FEATURES.md +0 -166
- package/docs/FONTS.md +0 -147
- package/docs/INSTALL.md +0 -119
- package/docs/KEYS.md +0 -40
- package/docs/KEY_ROTATION.md +0 -219
- package/docs/LEGACY_ROADMAP.md +0 -142
- package/docs/NEOVIM_IDE_GUIDE.md +0 -52
- package/docs/README.md +0 -269
- package/docs/REPO_AUDIT.md +0 -23
- package/docs/SCREENSHOTS.md +0 -116
- package/docs/SECRETS.md +0 -76
- package/docs/SECURITY.md +0 -30
- package/docs/TESTING.md +0 -190
- package/docs/TOOLS.md +0 -146
- package/docs/TROUBLESHOOTING.md +0 -112
- package/docs/UTILS.md +0 -105
- package/docs/WSL2_NIX_TROUBLESHOOTING.md +0 -723
- package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -101
- package/docs/adr/ADR-002-shell-performance.md +0 -121
- package/docs/adr/ADR-003-security-first.md +0 -140
- package/docs/adr/ADR-004-cli-architecture.md +0 -157
- package/docs/adr/ADR-005-chezmoi-choice.md +0 -89
- package/docs/adr/ADR-006-shell-selection.md +0 -115
- package/docs/adr/README.md +0 -33
- package/docs/themes/README.md +0 -20
- package/dot_config/aider/aider.conf.yml +0 -32
- package/dot_config/alacritty/alacritty.toml.tmpl +0 -483
- package/dot_config/ansible/ansible.cfg.tmpl +0 -11
- package/dot_config/atuin/config.toml +0 -23
- package/dot_config/bat/config +0 -8
- package/dot_config/brave-flags.conf.tmpl +0 -7
- package/dot_config/btop/btop.conf +0 -16
- package/dot_config/btop/themes/tokyonight.theme +0 -34
- package/dot_config/bun/bunfig.toml.tmpl +0 -33
- package/dot_config/claude/mcp_servers.json +0 -49
- package/dot_config/clippy.toml +0 -55
- package/dot_config/containers/containers.conf +0 -14
- package/dot_config/curl/dot_curlrc +0 -18
- package/dot_config/dlv/config.yml +0 -39
- package/dot_config/docker/config.json.tmpl +0 -15
- package/dot_config/dotfiles/boot/README.md +0 -11
- package/dot_config/dotfiles/grub/README.md +0 -11
- package/dot_config/dotfiles/lock/README.md +0 -11
- package/dot_config/dotfiles/versions.env.tmpl +0 -19
- package/dot_config/duf/duf.conf +0 -6
- package/dot_config/duti/defaults.duti +0 -5
- package/dot_config/emoji/emoji.txt +0 -34
- package/dot_config/fastfetch/config.jsonc +0 -28
- package/dot_config/firefox/user.js +0 -8
- package/dot_config/flatpak/flatpak.list +0 -4
- package/dot_config/fontconfig/fonts.conf.tmpl +0 -44
- package/dot_config/gem/gemrc +0 -9
- package/dot_config/gh/config.yml +0 -12
- package/dot_config/ghostty/config.tmpl +0 -661
- package/dot_config/git/attributes +0 -12
- package/dot_config/git/config.tmpl +0 -77
- package/dot_config/git/ignore +0 -27
- package/dot_config/gnupg/gpg-agent.conf.tmpl +0 -11
- package/dot_config/go/aliases.sh +0 -61
- package/dot_config/go/env.sh +0 -24
- package/dot_config/go/golangci.yml +0 -118
- package/dot_config/go/gopls.json +0 -30
- package/dot_config/goose/config.yaml +0 -29
- package/dot_config/gtk-3.0/gtk.css.tmpl +0 -305
- package/dot_config/gtk-3.0/settings.ini.tmpl +0 -66
- package/dot_config/gtk-4.0/gtk.css.tmpl +0 -309
- package/dot_config/gtk-4.0/settings.ini.tmpl +0 -21
- package/dot_config/htop/htoprc +0 -20
- package/dot_config/ice/README.md +0 -13
- package/dot_config/inputrc +0 -2
- package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
- package/dot_config/just/justfile +0 -104
- package/dot_config/k9s/config.yaml.tmpl +0 -65
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
- package/dot_config/karabiner/karabiner.json +0 -14
- package/dot_config/kitty/kitty.conf.tmpl +0 -517
- package/dot_config/lazydocker/config.yml +0 -186
- package/dot_config/lazygit/config.yml +0 -23
- package/dot_config/lsd/config.yaml +0 -19
- package/dot_config/mas/masapps.txt +0 -5
- package/dot_config/minikube/config.json +0 -13
- package/dot_config/mise/config.toml +0 -41
- package/dot_config/mongosh/mongoshrc.js +0 -67
- package/dot_config/mycli/myclirc +0 -67
- package/dot_config/nano/nanorc +0 -28
- package/dot_config/ncdu/config +0 -12
- package/dot_config/nvim/init.lua +0 -4
- package/dot_config/nvim/lazy-lock.json +0 -27
- package/dot_config/nvim/lua/config/autocmds.lua +0 -63
- package/dot_config/nvim/lua/config/keymaps.lua +0 -87
- package/dot_config/nvim/lua/config/lazy.lua +0 -34
- package/dot_config/nvim/lua/config/options.lua +0 -48
- package/dot_config/nvim/lua/plugins/coding.lua +0 -234
- package/dot_config/nvim/lua/plugins/dap.lua +0 -201
- package/dot_config/nvim/lua/plugins/editor.lua +0 -59
- package/dot_config/nvim/lua/plugins/git.lua +0 -9
- package/dot_config/nvim/lua/plugins/lsp.lua +0 -221
- package/dot_config/nvim/lua/plugins/markdown.lua +0 -17
- package/dot_config/nvim/lua/plugins/rust.lua +0 -33
- package/dot_config/nvim/lua/plugins/sessions.lua +0 -32
- package/dot_config/nvim/lua/plugins/ui.lua +0 -537
- package/dot_config/nvim/snippets/all.lua +0 -9
- package/dot_config/nvim/snippets/python.lua +0 -16
- package/dot_config/pip/pip.conf.tmpl +0 -32
- package/dot_config/pypoetry/config.toml.tmpl +0 -6
- package/dot_config/pyrightconfig.json.tmpl +0 -5
- package/dot_config/raycast/README.md +0 -13
- package/dot_config/redis/redisclirc +0 -41
- package/dot_config/shell/00-container-detect.sh +0 -53
- package/dot_config/shell/00-core-paths.sh.tmpl +0 -95
- package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
- package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
- package/dot_config/shell/50-logic-functions.sh.tmpl +0 -10
- package/dot_config/shell/90-theme-switch.sh +0 -70
- package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -35
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -23
- package/dot_config/shell/Brewfile +0 -207
- package/dot_config/shell/Brewfile.cask +0 -92
- package/dot_config/shell/Brewfile.cli +0 -119
- package/dot_config/shell/README.md +0 -267
- package/dot_config/shell/custom/context_suggest.zsh +0 -68
- package/dot_config/shell/custom/error_analysis.zsh +0 -45
- package/dot_config/sops/dot_sops.yaml +0 -23
- package/dot_config/starship.toml.tmpl +0 -124
- package/dot_config/task/Taskfile.yml +0 -86
- package/dot_config/tflint/tflint.hcl.tmpl +0 -9
- package/dot_config/tmux/tmux.conf.tmpl +0 -181
- package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
- package/dot_config/vscode/extensions.txt +0 -11
- package/dot_config/vscode/settings.json.tmpl +0 -123
- package/dot_config/waybar/style.css +0 -8
- package/dot_config/wezterm/wezterm.lua.tmpl +0 -236
- package/dot_config/wget/wgetrc +0 -12
- package/dot_config/yarn/yarnrc.yml.tmpl +0 -36
- package/dot_config/yazi/yazi.toml +0 -40
- package/dot_config/zellij/config.kdl +0 -79
- package/dot_config/zsh/dot_zprofile +0 -13
- package/dot_config/zsh/dot_zshenv +0 -6
- package/dot_config/zsh/dot_zshrc.tmpl +0 -199
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -5
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
- package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -123
- package/dot_config/zsh/rc.d/40-bell.zsh.tmpl +0 -20
- package/dot_config/zsh/rc.d/50-login-fortune.zsh.tmpl +0 -9
- package/dot_local/bin/executable_ai_core +0 -130
- package/dot_local/bin/executable_b64 +0 -59
- package/dot_local/bin/executable_dot +0 -178
- package/dot_local/bin/executable_dot_completion +0 -55
- package/dot_local/bin/executable_epoch +0 -62
- package/dot_local/bin/executable_extract +0 -108
- package/dot_local/bin/executable_git-ai-commit +0 -160
- package/dot_local/bin/executable_git-ai-diff +0 -154
- package/dot_local/bin/executable_hash +0 -123
- package/dot_local/bin/executable_hex +0 -79
- package/dot_local/bin/executable_ip +0 -37
- package/dot_local/bin/executable_jsonv +0 -54
- package/dot_local/bin/executable_jwt +0 -78
- package/dot_local/bin/executable_kill-port +0 -59
- package/dot_local/bin/executable_lorem +0 -103
- package/dot_local/bin/executable_regex +0 -96
- package/dot_local/bin/executable_tmux-sessionizer +0 -187
- package/dot_local/bin/executable_tour +0 -137
- package/dot_local/bin/executable_update +0 -108
- package/dot_local/bin/executable_uuid +0 -57
- package/dot_local/bin/executable_yamlv +0 -39
- package/dot_local/bin/executable_zig-install +0 -89
- package/dot_local/bin/voice_ops +0 -7
- package/dot_local/share/bash-completion/completions/dot +0 -54
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/install.sh +0 -255
- package/scripts/ci/validate-ci-config.sh +0 -222
- package/scripts/demo/record.sh +0 -41
- package/scripts/diagnostics/benchmark.sh +0 -201
- package/scripts/diagnostics/doctor.sh +0 -115
- package/scripts/diagnostics/drift-dashboard.sh +0 -26
- package/scripts/diagnostics/health.sh +0 -356
- package/scripts/diagnostics/history-analysis.sh +0 -77
- package/scripts/diagnostics/security-score.sh +0 -392
- package/scripts/dot/commands/appearance.sh +0 -63
- package/scripts/dot/commands/core.sh +0 -130
- package/scripts/dot/commands/diagnostics.sh +0 -100
- package/scripts/dot/commands/meta.sh +0 -117
- package/scripts/dot/commands/restore.sh +0 -209
- package/scripts/dot/commands/secrets.sh +0 -81
- package/scripts/dot/commands/security.sh +0 -73
- package/scripts/dot/commands/tools.sh +0 -228
- package/scripts/dot/lib/utils.sh +0 -72
- package/scripts/fonts/install-nerd-fonts.sh +0 -59
- package/scripts/fonts/patch-fonts.sh +0 -34
- package/scripts/ops/chezmoi-apply.sh +0 -42
- package/scripts/ops/chezmoi-diff.sh +0 -14
- package/scripts/ops/chezmoi-remove.sh +0 -43
- package/scripts/ops/chezmoi-update.sh +0 -16
- package/scripts/ops/heal.sh +0 -466
- package/scripts/ops/health-check.sh +0 -380
- package/scripts/ops/rollback.sh +0 -531
- package/scripts/ops/teleport.sh +0 -32
- package/scripts/secrets/age-init.sh +0 -69
- package/scripts/secrets/create-secrets-file.sh +0 -44
- package/scripts/secrets/encrypt-ssh-key.sh +0 -42
- package/scripts/security/backup.sh +0 -17
- package/scripts/security/dns-doh.sh +0 -29
- package/scripts/security/encryption-check.sh +0 -39
- package/scripts/security/enforce-policies.sh +0 -339
- package/scripts/security/firewall.sh +0 -34
- package/scripts/security/lock-configs.sh +0 -57
- package/scripts/security/lock-screen.sh +0 -33
- package/scripts/security/manage-secrets.sh +0 -415
- package/scripts/security/telemetry-kill.sh +0 -28
- package/scripts/security/usb-safety.sh +0 -29
- package/scripts/tests/README.md +0 -241
- package/scripts/tests/benchmark.sh +0 -91
- package/scripts/tests/framework/assertions.sh +0 -283
- package/scripts/tests/framework/mocks.sh +0 -201
- package/scripts/tests/framework/test_runner.sh +0 -189
- package/scripts/tests/integration/test_install.sh +0 -237
- package/scripts/tests/performance/benchmark_runner.sh +0 -156
- package/scripts/tests/performance/regression_check.sh +0 -73
- package/scripts/tests/performance/stress_test.sh +0 -65
- package/scripts/tests/test-docker.sh +0 -48
- package/scripts/tests/unit/test_ai_aliases.sh +0 -158
- package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
- package/scripts/tests/unit/test_backup.sh +0 -227
- package/scripts/tests/unit/test_case_functions.sh +0 -238
- package/scripts/tests/unit/test_cd_aliases.sh +0 -367
- package/scripts/tests/unit/test_dot_cli.sh +0 -217
- package/scripts/tests/unit/test_encode64.sh +0 -67
- package/scripts/tests/unit/test_environment.sh +0 -78
- package/scripts/tests/unit/test_extract.sh +0 -163
- package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
- package/scripts/tests/unit/test_genpass.sh +0 -298
- package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
- package/scripts/tests/unit/test_installers.sh +0 -172
- package/scripts/tests/unit/test_keygen.sh +0 -68
- package/scripts/tests/unit/test_logging.sh +0 -96
- package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
- package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
- package/scripts/tests/unit/test_prependpath.sh +0 -66
- package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
- package/scripts/tests/unit/test_rd.sh +0 -230
- package/scripts/tests/unit/test_security_fixes.sh +0 -130
- package/scripts/tests/unit/test_security_scripts.sh +0 -87
- package/scripts/tests/unit/test_template_validation.sh +0 -238
- package/scripts/tests/unit/test_utility_functions.sh +0 -144
- package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
- package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
- package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
- package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
- package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
- package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
- package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
- package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
- package/scripts/tests/unit/test_zipf.sh +0 -76
- package/scripts/theme/apply-gnome-theme.sh +0 -297
- package/scripts/theme/install-boot-logo.sh +0 -61
- package/scripts/theme/install-catppuccin-themes.sh +0 -346
- package/scripts/theme/install-cursors.sh +0 -24
- package/scripts/theme/install-file-icons.sh +0 -25
- package/scripts/theme/install-grub-theme.sh +0 -51
- package/scripts/theme/install-lock-icon.sh +0 -29
- package/scripts/theme/switch.sh +0 -250
- package/scripts/theme/wallpaper-rotate.sh +0 -82
- package/scripts/theme/wallpaper-sync.sh +0 -42
- package/scripts/tools/cmatrix.sh +0 -20
- package/scripts/tools/emoji-picker.sh +0 -45
- package/scripts/tools/figlet-banner.sh +0 -17
- package/scripts/tools/log-rotate.sh +0 -29
- package/scripts/tools/lolcat-wrap.sh +0 -18
- package/scripts/tools/pipes.sh +0 -47
- package/scripts/tuning/linux.sh +0 -175
- package/scripts/tuning/macos.sh +0 -46
- package/templates/projects/molecule/README.md +0 -7
- package/templates/projects/molecule/converge.yml +0 -7
- package/templates/projects/molecule/molecule.yml +0 -16
- package/templates/projects/packer/README.md +0 -15
- package/templates/projects/packer/main.pkr.hcl +0 -15
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# shellcheck disable=SC2016,SC2317
|
|
3
|
-
# SC2016: Single quotes are intentional for mock data containing literal $variables
|
|
4
|
-
# SC2317: Function overrides are intentional for test mocking
|
|
5
|
-
# Comprehensive Package Managers Tests
|
|
6
|
-
# Achieves 100% line and branch coverage for package_managers.sh
|
|
7
|
-
|
|
8
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
-
source "$SCRIPT_DIR/../framework/assertions.sh"
|
|
10
|
-
source "$SCRIPT_DIR/../framework/mocks.sh"
|
|
11
|
-
|
|
12
|
-
echo "Testing package managers comprehensive coverage..."
|
|
13
|
-
|
|
14
|
-
# Test has_brew when brew is available
|
|
15
|
-
test_start "has_brew_available"
|
|
16
|
-
mock_init
|
|
17
|
-
mock_command "brew" "Homebrew 4.0.0" 0
|
|
18
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
19
|
-
assert_true "has_brew" "should return true when brew is available"
|
|
20
|
-
mock_cleanup
|
|
21
|
-
|
|
22
|
-
# Test has_brew when brew is not available
|
|
23
|
-
test_start "has_brew_unavailable"
|
|
24
|
-
mock_init
|
|
25
|
-
mock_command "brew" "" 1
|
|
26
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
27
|
-
assert_false "has_brew" "should return false when brew is not available"
|
|
28
|
-
mock_cleanup
|
|
29
|
-
|
|
30
|
-
# Test has_apt when apt-get is available
|
|
31
|
-
test_start "has_apt_available"
|
|
32
|
-
mock_init
|
|
33
|
-
mock_command "apt-get" "apt 2.4.8" 0
|
|
34
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
35
|
-
assert_true "has_apt" "should return true when apt-get is available"
|
|
36
|
-
mock_cleanup
|
|
37
|
-
|
|
38
|
-
# Test has_apt when apt-get is not available
|
|
39
|
-
test_start "has_apt_unavailable"
|
|
40
|
-
mock_init
|
|
41
|
-
mock_command "apt-get" "" 1
|
|
42
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
43
|
-
assert_false "has_apt" "should return false when apt-get is not available"
|
|
44
|
-
mock_cleanup
|
|
45
|
-
|
|
46
|
-
# Test has_dnf when dnf is available
|
|
47
|
-
test_start "has_dnf_available"
|
|
48
|
-
mock_init
|
|
49
|
-
mock_command "dnf" "dnf 4.14.0" 0
|
|
50
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
51
|
-
assert_true "has_dnf" "should return true when dnf is available"
|
|
52
|
-
mock_cleanup
|
|
53
|
-
|
|
54
|
-
# Test has_dnf when dnf is not available
|
|
55
|
-
test_start "has_dnf_unavailable"
|
|
56
|
-
mock_init
|
|
57
|
-
mock_command "dnf" "" 1
|
|
58
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
59
|
-
assert_false "has_dnf" "should return false when dnf is not available"
|
|
60
|
-
mock_cleanup
|
|
61
|
-
|
|
62
|
-
# Test has_pacman when pacman is available
|
|
63
|
-
test_start "has_pacman_available"
|
|
64
|
-
mock_init
|
|
65
|
-
mock_command "pacman" "Pacman v6.0.1" 0
|
|
66
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
67
|
-
assert_true "has_pacman" "should return true when pacman is available"
|
|
68
|
-
mock_cleanup
|
|
69
|
-
|
|
70
|
-
# Test has_pacman when pacman is not available
|
|
71
|
-
test_start "has_pacman_unavailable"
|
|
72
|
-
mock_init
|
|
73
|
-
mock_command "pacman" "" 1
|
|
74
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
75
|
-
assert_false "has_pacman" "should return false when pacman is not available"
|
|
76
|
-
mock_cleanup
|
|
77
|
-
|
|
78
|
-
# Test install_homebrew when brew is already installed
|
|
79
|
-
test_start "install_homebrew_already_installed"
|
|
80
|
-
mock_init
|
|
81
|
-
mock_command "brew" "Homebrew 4.0.0" 0
|
|
82
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
83
|
-
assert_exit_code 0 "install_homebrew"
|
|
84
|
-
mock_cleanup
|
|
85
|
-
|
|
86
|
-
# Test install_homebrew in non-interactive mode
|
|
87
|
-
test_start "install_homebrew_noninteractive"
|
|
88
|
-
mock_init
|
|
89
|
-
mock_command "brew" "" 1 # Not installed
|
|
90
|
-
mock_env "DOTFILES_NONINTERACTIVE" "1"
|
|
91
|
-
mock_command "curl" "#!/bin/bash\necho 'Homebrew installer mock'" 0
|
|
92
|
-
mock_command "/bin/bash" "Installation successful" 0
|
|
93
|
-
mock_file "/opt/homebrew/bin/brew" ""
|
|
94
|
-
mock_command "/opt/homebrew/bin/brew" "shellenv output" 0
|
|
95
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
96
|
-
# Should install without prompting
|
|
97
|
-
assert_exit_code 0 "install_homebrew"
|
|
98
|
-
mock_cleanup
|
|
99
|
-
|
|
100
|
-
# Test install_homebrew with Apple Silicon path
|
|
101
|
-
test_start "install_homebrew_apple_silicon"
|
|
102
|
-
mock_init
|
|
103
|
-
mock_command "brew" "" 1 # Not installed
|
|
104
|
-
mock_env "DOTFILES_NONINTERACTIVE" "1"
|
|
105
|
-
mock_command "curl" "#!/bin/bash\necho 'Homebrew installer mock'" 0
|
|
106
|
-
mock_command "/bin/bash" "Installation successful" 0
|
|
107
|
-
mock_file "/opt/homebrew/bin/brew" ""
|
|
108
|
-
chmod +x "/opt/homebrew/bin/brew"
|
|
109
|
-
mock_command "/opt/homebrew/bin/brew" 'export PATH="/opt/homebrew/bin:$PATH"' 0
|
|
110
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
111
|
-
assert_exit_code 0 "install_homebrew"
|
|
112
|
-
# Verify Apple Silicon path is used
|
|
113
|
-
assert_file_exists "/opt/homebrew/bin/brew" "Apple Silicon brew should exist"
|
|
114
|
-
mock_cleanup
|
|
115
|
-
|
|
116
|
-
# Test install_homebrew with Intel Mac path
|
|
117
|
-
test_start "install_homebrew_intel_mac"
|
|
118
|
-
mock_init
|
|
119
|
-
mock_command "brew" "" 1 # Not installed
|
|
120
|
-
mock_env "DOTFILES_NONINTERACTIVE" "1"
|
|
121
|
-
mock_command "curl" "#!/bin/bash\necho 'Homebrew installer mock'" 0
|
|
122
|
-
mock_command "/bin/bash" "Installation successful" 0
|
|
123
|
-
# No Apple Silicon path, create Intel path
|
|
124
|
-
mock_file "/usr/local/bin/brew" ""
|
|
125
|
-
chmod +x "/usr/local/bin/brew"
|
|
126
|
-
mock_command "/usr/local/bin/brew" 'export PATH="/usr/local/bin:$PATH"' 0
|
|
127
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
128
|
-
assert_exit_code 0 "install_homebrew"
|
|
129
|
-
# Verify Intel path is used
|
|
130
|
-
assert_file_exists "/usr/local/bin/brew" "Intel brew should exist"
|
|
131
|
-
mock_cleanup
|
|
132
|
-
|
|
133
|
-
# Test verify_package_manager for debian
|
|
134
|
-
test_start "verify_package_manager_debian"
|
|
135
|
-
mock_init
|
|
136
|
-
mock_env "target_os" "debian"
|
|
137
|
-
mock_command "apt-get" "apt 2.4.8" 0
|
|
138
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
139
|
-
assert_exit_code 0 "verify_package_manager"
|
|
140
|
-
mock_cleanup
|
|
141
|
-
|
|
142
|
-
# Test verify_package_manager for debian without apt
|
|
143
|
-
test_start "verify_package_manager_debian_no_apt"
|
|
144
|
-
mock_init
|
|
145
|
-
mock_env "target_os" "debian"
|
|
146
|
-
mock_command "apt-get" "" 1
|
|
147
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
148
|
-
assert_exit_code 1 "verify_package_manager"
|
|
149
|
-
mock_cleanup
|
|
150
|
-
|
|
151
|
-
# Test verify_package_manager for wsl2
|
|
152
|
-
test_start "verify_package_manager_wsl2"
|
|
153
|
-
mock_init
|
|
154
|
-
mock_env "target_os" "wsl2"
|
|
155
|
-
mock_command "apt-get" "apt 2.4.8" 0
|
|
156
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
157
|
-
assert_exit_code 0 "verify_package_manager"
|
|
158
|
-
mock_cleanup
|
|
159
|
-
|
|
160
|
-
# Test verify_package_manager for wsl2 without apt
|
|
161
|
-
test_start "verify_package_manager_wsl2_no_apt"
|
|
162
|
-
mock_init
|
|
163
|
-
mock_env "target_os" "wsl2"
|
|
164
|
-
mock_command "apt-get" "" 1
|
|
165
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
166
|
-
assert_exit_code 1 "verify_package_manager"
|
|
167
|
-
mock_cleanup
|
|
168
|
-
|
|
169
|
-
# Test verify_package_manager for fedora
|
|
170
|
-
test_start "verify_package_manager_fedora"
|
|
171
|
-
mock_init
|
|
172
|
-
mock_env "target_os" "fedora"
|
|
173
|
-
mock_command "dnf" "dnf 4.14.0" 0
|
|
174
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
175
|
-
assert_exit_code 0 "verify_package_manager"
|
|
176
|
-
mock_cleanup
|
|
177
|
-
|
|
178
|
-
# Test verify_package_manager for fedora without dnf
|
|
179
|
-
test_start "verify_package_manager_fedora_no_dnf"
|
|
180
|
-
mock_init
|
|
181
|
-
mock_env "target_os" "fedora"
|
|
182
|
-
mock_command "dnf" "" 1
|
|
183
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
184
|
-
assert_exit_code 1 "verify_package_manager"
|
|
185
|
-
mock_cleanup
|
|
186
|
-
|
|
187
|
-
# Test verify_package_manager for arch
|
|
188
|
-
test_start "verify_package_manager_arch"
|
|
189
|
-
mock_init
|
|
190
|
-
mock_env "target_os" "arch"
|
|
191
|
-
mock_command "pacman" "Pacman v6.0.1" 0
|
|
192
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
193
|
-
assert_exit_code 0 "verify_package_manager"
|
|
194
|
-
mock_cleanup
|
|
195
|
-
|
|
196
|
-
# Test verify_package_manager for arch without pacman
|
|
197
|
-
test_start "verify_package_manager_arch_no_pacman"
|
|
198
|
-
mock_init
|
|
199
|
-
mock_env "target_os" "arch"
|
|
200
|
-
mock_command "pacman" "" 1
|
|
201
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
202
|
-
assert_exit_code 1 "verify_package_manager"
|
|
203
|
-
mock_cleanup
|
|
204
|
-
|
|
205
|
-
# Test verify_package_manager for macos (should succeed without checks)
|
|
206
|
-
test_start "verify_package_manager_macos"
|
|
207
|
-
mock_init
|
|
208
|
-
mock_env "target_os" "macos"
|
|
209
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
210
|
-
assert_exit_code 0 "verify_package_manager"
|
|
211
|
-
mock_cleanup
|
|
212
|
-
|
|
213
|
-
# Test verify_package_manager for unknown OS (should succeed)
|
|
214
|
-
test_start "verify_package_manager_unknown"
|
|
215
|
-
mock_init
|
|
216
|
-
mock_env "target_os" "unknown"
|
|
217
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
218
|
-
assert_exit_code 0 "verify_package_manager"
|
|
219
|
-
mock_cleanup
|
|
220
|
-
|
|
221
|
-
# Test bootstrap_package_manager for macos with successful homebrew install
|
|
222
|
-
test_start "bootstrap_package_manager_macos_success"
|
|
223
|
-
mock_init
|
|
224
|
-
mock_env "target_os" "macos"
|
|
225
|
-
mock_env "DOTFILES_NONINTERACTIVE" "1"
|
|
226
|
-
mock_command "brew" "" 1 # Not installed initially
|
|
227
|
-
mock_command "curl" "#!/bin/bash\necho 'Homebrew installer'" 0
|
|
228
|
-
mock_command "/bin/bash" "Installation successful" 0
|
|
229
|
-
mock_file "/opt/homebrew/bin/brew" ""
|
|
230
|
-
chmod +x "/opt/homebrew/bin/brew"
|
|
231
|
-
mock_command "/opt/homebrew/bin/brew" 'export PATH="/opt/homebrew/bin:$PATH"' 0
|
|
232
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
233
|
-
assert_exit_code 0 "bootstrap_package_manager"
|
|
234
|
-
mock_cleanup
|
|
235
|
-
|
|
236
|
-
# Test bootstrap_package_manager for macos with failed homebrew install
|
|
237
|
-
test_start "bootstrap_package_manager_macos_failure"
|
|
238
|
-
mock_init
|
|
239
|
-
mock_env "target_os" "macos"
|
|
240
|
-
mock_env "DOTFILES_NONINTERACTIVE" "0" # Interactive mode
|
|
241
|
-
mock_command "brew" "" 1 # Not installed
|
|
242
|
-
# Mock user declining installation by making install_homebrew return 1
|
|
243
|
-
# This simulates the user saying "no" to the prompt
|
|
244
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
245
|
-
# Override install_homebrew to return failure
|
|
246
|
-
install_homebrew() { return 1; }
|
|
247
|
-
assert_exit_code 1 "bootstrap_package_manager"
|
|
248
|
-
mock_cleanup
|
|
249
|
-
|
|
250
|
-
# Test bootstrap_package_manager for non-macos systems
|
|
251
|
-
test_start "bootstrap_package_manager_linux"
|
|
252
|
-
mock_init
|
|
253
|
-
mock_env "target_os" "debian"
|
|
254
|
-
mock_command "apt-get" "apt 2.4.8" 0
|
|
255
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
256
|
-
assert_exit_code 0 "bootstrap_package_manager"
|
|
257
|
-
mock_cleanup
|
|
258
|
-
|
|
259
|
-
# Test check_prerequisites with all commands available
|
|
260
|
-
test_start "check_prerequisites_all_available"
|
|
261
|
-
mock_init
|
|
262
|
-
mock_command "curl" "curl 7.81.0" 0
|
|
263
|
-
mock_command "git" "git version 2.34.1" 0
|
|
264
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
265
|
-
assert_exit_code 0 "check_prerequisites"
|
|
266
|
-
mock_cleanup
|
|
267
|
-
|
|
268
|
-
# Test check_prerequisites with missing curl
|
|
269
|
-
test_start "check_prerequisites_missing_curl"
|
|
270
|
-
mock_init
|
|
271
|
-
mock_command "curl" "" 1
|
|
272
|
-
mock_command "git" "git version 2.34.1" 0
|
|
273
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
274
|
-
assert_exit_code 1 "check_prerequisites"
|
|
275
|
-
mock_cleanup
|
|
276
|
-
|
|
277
|
-
# Test check_prerequisites with missing git
|
|
278
|
-
test_start "check_prerequisites_missing_git"
|
|
279
|
-
mock_init
|
|
280
|
-
mock_command "curl" "curl 7.81.0" 0
|
|
281
|
-
mock_command "git" "" 1
|
|
282
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
283
|
-
assert_exit_code 1 "check_prerequisites"
|
|
284
|
-
mock_cleanup
|
|
285
|
-
|
|
286
|
-
# Test check_prerequisites with missing both commands
|
|
287
|
-
test_start "check_prerequisites_missing_both"
|
|
288
|
-
mock_init
|
|
289
|
-
mock_command "curl" "" 1
|
|
290
|
-
mock_command "git" "" 1
|
|
291
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
292
|
-
assert_exit_code 1 "check_prerequisites"
|
|
293
|
-
mock_cleanup
|
|
294
|
-
|
|
295
|
-
# Test check_prerequisites error message contains missing commands
|
|
296
|
-
test_start "check_prerequisites_error_message_curl"
|
|
297
|
-
mock_init
|
|
298
|
-
mock_command "curl" "" 1
|
|
299
|
-
mock_command "git" "git version 2.34.1" 0
|
|
300
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
301
|
-
output=$(check_prerequisites 2>&1) || true
|
|
302
|
-
assert_output_contains "Missing required commands: curl" "echo '$output'"
|
|
303
|
-
mock_cleanup
|
|
304
|
-
|
|
305
|
-
# Test check_prerequisites error message contains multiple missing commands
|
|
306
|
-
test_start "check_prerequisites_error_message_both"
|
|
307
|
-
mock_init
|
|
308
|
-
mock_command "curl" "" 1
|
|
309
|
-
mock_command "git" "" 1
|
|
310
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
311
|
-
output=$(check_prerequisites 2>&1) || true
|
|
312
|
-
assert_output_contains "Missing required commands: curl git" "echo '$output'"
|
|
313
|
-
mock_cleanup
|
|
314
|
-
|
|
315
|
-
# Test OS detection dependency
|
|
316
|
-
test_start "package_managers_sources_os_detection"
|
|
317
|
-
source "$REPO_ROOT/install/lib/package_managers.sh"
|
|
318
|
-
# Should have sourced os_detection.sh and have its functions available
|
|
319
|
-
assert_true "command -v detect_os >/dev/null" "should have detect_os function from os_detection.sh"
|
|
320
|
-
|
|
321
|
-
echo "Package managers comprehensive coverage tests completed."
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# shellcheck disable=SC1090,SC1091
|
|
3
|
-
# Unit tests for prependpath function
|
|
4
|
-
|
|
5
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
-
REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../../.." && pwd)}"
|
|
7
|
-
source "$SCRIPT_DIR/../framework/assertions.sh"
|
|
8
|
-
|
|
9
|
-
# Source the function
|
|
10
|
-
FUNC_FILE="$REPO_ROOT/.chezmoitemplates/functions/prependpath.sh"
|
|
11
|
-
if [[ -f "$FUNC_FILE" ]]; then
|
|
12
|
-
source "$FUNC_FILE"
|
|
13
|
-
else
|
|
14
|
-
echo "SKIP: prependpath.sh not found at $FUNC_FILE"
|
|
15
|
-
echo "RESULTS:0:0:0"
|
|
16
|
-
exit 0
|
|
17
|
-
fi
|
|
18
|
-
|
|
19
|
-
echo "Testing prependpath function..."
|
|
20
|
-
|
|
21
|
-
# Test function exists
|
|
22
|
-
test_start "prependpath_function_exists"
|
|
23
|
-
assert_true "type prependpath &>/dev/null" "prependpath function should exist"
|
|
24
|
-
|
|
25
|
-
# Test adding new path
|
|
26
|
-
test_start "prependpath_add_new"
|
|
27
|
-
if type prependpath &>/dev/null; then
|
|
28
|
-
OLD_PATH="$PATH"
|
|
29
|
-
test_path="/test/unique/path/$$"
|
|
30
|
-
prependpath "$test_path" 2>/dev/null || true
|
|
31
|
-
|
|
32
|
-
if [[ "$PATH" == "$test_path:"* ]]; then
|
|
33
|
-
assert_true "true" "new path should be prepended"
|
|
34
|
-
else
|
|
35
|
-
# Some implementations modify PATH differently
|
|
36
|
-
assert_true "true" "prependpath executed"
|
|
37
|
-
fi
|
|
38
|
-
PATH="$OLD_PATH"
|
|
39
|
-
fi
|
|
40
|
-
|
|
41
|
-
# Test duplicate prevention
|
|
42
|
-
test_start "prependpath_no_duplicate"
|
|
43
|
-
if type prependpath &>/dev/null; then
|
|
44
|
-
OLD_PATH="$PATH"
|
|
45
|
-
test_path="/usr/bin" # Common path that likely exists
|
|
46
|
-
original_count=$(echo "$PATH" | tr ':' '\n' | grep -c "^${test_path}$" || echo 0)
|
|
47
|
-
|
|
48
|
-
prependpath "$test_path" 2>/dev/null || true
|
|
49
|
-
new_count=$(echo "$PATH" | tr ':' '\n' | grep -c "^${test_path}$" || echo 0)
|
|
50
|
-
|
|
51
|
-
# Should not have more occurrences than before (or at most 1 more)
|
|
52
|
-
assert_true "[[ $new_count -le $((original_count + 1)) ]]" "should not create duplicates"
|
|
53
|
-
PATH="$OLD_PATH"
|
|
54
|
-
fi
|
|
55
|
-
|
|
56
|
-
# Test empty argument
|
|
57
|
-
test_start "prependpath_empty_arg"
|
|
58
|
-
if type prependpath &>/dev/null; then
|
|
59
|
-
OLD_PATH="$PATH"
|
|
60
|
-
prependpath "" 2>/dev/null || true
|
|
61
|
-
# Should not crash
|
|
62
|
-
assert_true "true" "empty arg should not crash"
|
|
63
|
-
PATH="$OLD_PATH"
|
|
64
|
-
fi
|
|
65
|
-
|
|
66
|
-
print_summary
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# shellcheck disable=SC1090,SC1091,SC2016
|
|
3
|
-
# Unit tests for the refactored prependpath function (string match version)
|
|
4
|
-
|
|
5
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
-
REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../../.." && pwd)}"
|
|
7
|
-
source "$SCRIPT_DIR/../framework/assertions.sh"
|
|
8
|
-
|
|
9
|
-
FUNC_FILE="$REPO_ROOT/.chezmoitemplates/functions/prependpath.sh"
|
|
10
|
-
|
|
11
|
-
echo "Testing refactored prependpath function..."
|
|
12
|
-
|
|
13
|
-
# Test: prependpath.sh has valid syntax
|
|
14
|
-
test_start "prependpath_syntax"
|
|
15
|
-
assert_exit_code 0 "bash -n '$FUNC_FILE'"
|
|
16
|
-
|
|
17
|
-
# Test: uses string match (not pipe chain)
|
|
18
|
-
test_start "prependpath_uses_string_match"
|
|
19
|
-
assert_file_contains "$FUNC_FILE" '":${PATH}:"' "should use string match pattern"
|
|
20
|
-
|
|
21
|
-
# Test: prependpath adds new directory
|
|
22
|
-
test_start "prependpath_adds_new"
|
|
23
|
-
result=$(bash -c '
|
|
24
|
-
source "'"$FUNC_FILE"'"
|
|
25
|
-
PATH="/usr/bin:/bin"
|
|
26
|
-
prependpath "/opt/new"
|
|
27
|
-
echo "$PATH"
|
|
28
|
-
')
|
|
29
|
-
if [[ "$result" == "/opt/new:/usr/bin:/bin" ]]; then
|
|
30
|
-
((TESTS_PASSED++)) || true
|
|
31
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: prepends new directory"
|
|
32
|
-
else
|
|
33
|
-
((TESTS_FAILED++)) || true
|
|
34
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: should prepend new directory"
|
|
35
|
-
echo -e " Actual: $result"
|
|
36
|
-
fi
|
|
37
|
-
|
|
38
|
-
# Test: prependpath does not duplicate existing directory
|
|
39
|
-
test_start "prependpath_no_duplicate"
|
|
40
|
-
result=$(bash -c '
|
|
41
|
-
source "'"$FUNC_FILE"'"
|
|
42
|
-
PATH="/usr/bin:/bin"
|
|
43
|
-
prependpath "/usr/bin"
|
|
44
|
-
echo "$PATH"
|
|
45
|
-
')
|
|
46
|
-
if [[ "$result" == "/usr/bin:/bin" ]]; then
|
|
47
|
-
((TESTS_PASSED++)) || true
|
|
48
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: does not duplicate existing path"
|
|
49
|
-
else
|
|
50
|
-
((TESTS_FAILED++)) || true
|
|
51
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: should not duplicate existing path"
|
|
52
|
-
echo -e " Actual: $result"
|
|
53
|
-
fi
|
|
54
|
-
|
|
55
|
-
# Test: prependpath handles path as substring correctly
|
|
56
|
-
test_start "prependpath_substring_not_matched"
|
|
57
|
-
result=$(bash -c '
|
|
58
|
-
source "'"$FUNC_FILE"'"
|
|
59
|
-
PATH="/usr/bin:/bin"
|
|
60
|
-
prependpath "/usr/bi"
|
|
61
|
-
echo "$PATH"
|
|
62
|
-
')
|
|
63
|
-
if [[ "$result" == "/usr/bi:/usr/bin:/bin" ]]; then
|
|
64
|
-
((TESTS_PASSED++)) || true
|
|
65
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: partial match not treated as duplicate"
|
|
66
|
-
else
|
|
67
|
-
((TESTS_FAILED++)) || true
|
|
68
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: partial match should not be treated as duplicate"
|
|
69
|
-
echo -e " Actual: $result"
|
|
70
|
-
fi
|
|
71
|
-
|
|
72
|
-
# Test: prependpath handles empty PATH
|
|
73
|
-
test_start "prependpath_empty_path"
|
|
74
|
-
result=$(bash -c '
|
|
75
|
-
source "'"$FUNC_FILE"'"
|
|
76
|
-
PATH=""
|
|
77
|
-
prependpath "/usr/bin"
|
|
78
|
-
echo "$PATH"
|
|
79
|
-
')
|
|
80
|
-
if [[ "$result" == "/usr/bin:" ]]; then
|
|
81
|
-
((TESTS_PASSED++)) || true
|
|
82
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: handles empty PATH"
|
|
83
|
-
else
|
|
84
|
-
((TESTS_FAILED++)) || true
|
|
85
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: should handle empty PATH"
|
|
86
|
-
echo -e " Actual: $result"
|
|
87
|
-
fi
|
|
88
|
-
|
|
89
|
-
print_summary
|