@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,68 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# shellcheck disable=SC1090,SC1091,SC2034
|
|
3
|
-
# Unit tests for keygen 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/keygen.sh"
|
|
11
|
-
if [[ -f "$FUNC_FILE" ]]; then
|
|
12
|
-
source "$FUNC_FILE"
|
|
13
|
-
else
|
|
14
|
-
echo "SKIP: keygen.sh not found at $FUNC_FILE"
|
|
15
|
-
echo "RESULTS:0:0:0"
|
|
16
|
-
exit 0
|
|
17
|
-
fi
|
|
18
|
-
|
|
19
|
-
echo "Testing keygen function..."
|
|
20
|
-
|
|
21
|
-
# Test function exists
|
|
22
|
-
test_start "keygen_function_exists"
|
|
23
|
-
assert_true "type keygen &>/dev/null" "keygen function should exist"
|
|
24
|
-
|
|
25
|
-
# Test no arguments shows usage
|
|
26
|
-
test_start "keygen_no_args"
|
|
27
|
-
if type keygen &>/dev/null; then
|
|
28
|
-
output=$(keygen 2>&1 || true)
|
|
29
|
-
# Should show usage or error - use direct check to avoid eval issues
|
|
30
|
-
if [[ -n "$output" ]]; then
|
|
31
|
-
((TESTS_PASSED++)) || true
|
|
32
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: no args should produce output"
|
|
33
|
-
else
|
|
34
|
-
((TESTS_FAILED++)) || true
|
|
35
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: no args should produce output"
|
|
36
|
-
fi
|
|
37
|
-
fi
|
|
38
|
-
|
|
39
|
-
# Test help flag
|
|
40
|
-
test_start "keygen_help_flag"
|
|
41
|
-
if type keygen &>/dev/null; then
|
|
42
|
-
output=$(keygen --help 2>&1 || keygen -h 2>&1 || echo "usage")
|
|
43
|
-
assert_true "true" "help flag check completed"
|
|
44
|
-
fi
|
|
45
|
-
|
|
46
|
-
# Test invalid key type
|
|
47
|
-
test_start "keygen_invalid_type"
|
|
48
|
-
if type keygen &>/dev/null; then
|
|
49
|
-
result=$(keygen --type invalid_type test_key 2>&1 || echo "error")
|
|
50
|
-
# Check for error messages (case insensitive)
|
|
51
|
-
if echo "$result" | grep -iqE "(error|invalid|unknown|usage)"; then
|
|
52
|
-
((TESTS_PASSED++))
|
|
53
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: invalid type shows error message"
|
|
54
|
-
else
|
|
55
|
-
((TESTS_FAILED++))
|
|
56
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: should show error for invalid type"
|
|
57
|
-
fi
|
|
58
|
-
fi
|
|
59
|
-
|
|
60
|
-
# Test output format (without actually creating keys)
|
|
61
|
-
test_start "keygen_dry_run"
|
|
62
|
-
if type keygen &>/dev/null; then
|
|
63
|
-
# Just verify it doesn't crash with common args
|
|
64
|
-
keygen --help 2>/dev/null || true
|
|
65
|
-
assert_true "true" "keygen help does not crash"
|
|
66
|
-
fi
|
|
67
|
-
|
|
68
|
-
print_summary
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# shellcheck disable=SC1090,SC1091
|
|
3
|
-
# Unit tests for install/lib/logging.sh
|
|
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
|
-
LOGGING_FILE="$REPO_ROOT/install/lib/logging.sh"
|
|
10
|
-
|
|
11
|
-
echo "Testing logging library..."
|
|
12
|
-
|
|
13
|
-
# Test: logging.sh exists
|
|
14
|
-
test_start "logging_file_exists"
|
|
15
|
-
assert_file_exists "$LOGGING_FILE" "logging.sh should exist"
|
|
16
|
-
|
|
17
|
-
# Test: logging.sh has valid syntax
|
|
18
|
-
test_start "logging_syntax"
|
|
19
|
-
assert_exit_code 0 "bash -n '$LOGGING_FILE'"
|
|
20
|
-
|
|
21
|
-
# Test: logging.sh has shebang
|
|
22
|
-
test_start "logging_shebang"
|
|
23
|
-
assert_file_contains "$LOGGING_FILE" "#!/usr/bin/env bash" "should have bash shebang"
|
|
24
|
-
|
|
25
|
-
# Test: logging.sh has double-source guard
|
|
26
|
-
test_start "logging_guard"
|
|
27
|
-
assert_file_contains "$LOGGING_FILE" "_DOTFILES_LOGGING_LOADED" "should have double-source guard"
|
|
28
|
-
|
|
29
|
-
# Test: log_info outputs to stdout with INFO prefix
|
|
30
|
-
test_start "log_info_output"
|
|
31
|
-
output=$(bash -c 'source "'"$LOGGING_FILE"'"; log_info "test message"' 2>&1)
|
|
32
|
-
if [[ "$output" == *"[INFO]"* && "$output" == *"test message"* ]]; then
|
|
33
|
-
((TESTS_PASSED++)) || true
|
|
34
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: log_info shows INFO prefix"
|
|
35
|
-
else
|
|
36
|
-
((TESTS_FAILED++)) || true
|
|
37
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: log_info should show INFO prefix"
|
|
38
|
-
echo -e " Output: $output"
|
|
39
|
-
fi
|
|
40
|
-
|
|
41
|
-
# Test: log_warn outputs with WARN prefix to stderr
|
|
42
|
-
test_start "log_warn_output"
|
|
43
|
-
output=$(bash -c 'source "'"$LOGGING_FILE"'"; log_warn "warn msg"' 2>&1)
|
|
44
|
-
if [[ "$output" == *"[WARN]"* && "$output" == *"warn msg"* ]]; then
|
|
45
|
-
((TESTS_PASSED++)) || true
|
|
46
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: log_warn shows WARN prefix"
|
|
47
|
-
else
|
|
48
|
-
((TESTS_FAILED++)) || true
|
|
49
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: log_warn should show WARN prefix"
|
|
50
|
-
echo -e " Output: $output"
|
|
51
|
-
fi
|
|
52
|
-
|
|
53
|
-
# Test: log_error outputs with ERROR prefix to stderr
|
|
54
|
-
test_start "log_error_output"
|
|
55
|
-
output=$(bash -c 'source "'"$LOGGING_FILE"'"; log_error "err msg"' 2>&1)
|
|
56
|
-
if [[ "$output" == *"[ERROR]"* && "$output" == *"err msg"* ]]; then
|
|
57
|
-
((TESTS_PASSED++)) || true
|
|
58
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: log_error shows ERROR prefix"
|
|
59
|
-
else
|
|
60
|
-
((TESTS_FAILED++)) || true
|
|
61
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: log_error should show ERROR prefix"
|
|
62
|
-
echo -e " Output: $output"
|
|
63
|
-
fi
|
|
64
|
-
|
|
65
|
-
# Test: die exits with code 1
|
|
66
|
-
test_start "die_exit_code"
|
|
67
|
-
assert_exit_code 1 "bash -c 'source \"$LOGGING_FILE\"; die \"fatal\"'"
|
|
68
|
-
|
|
69
|
-
# Test: die shows ERROR prefix
|
|
70
|
-
test_start "die_error_output"
|
|
71
|
-
output=$(bash -c 'source "'"$LOGGING_FILE"'"; die "fatal error"' 2>&1) || true
|
|
72
|
-
if [[ "$output" == *"[ERROR]"* && "$output" == *"fatal error"* ]]; then
|
|
73
|
-
((TESTS_PASSED++)) || true
|
|
74
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: die shows ERROR prefix"
|
|
75
|
-
else
|
|
76
|
-
((TESTS_FAILED++)) || true
|
|
77
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: die should show ERROR prefix"
|
|
78
|
-
echo -e " Output: $output"
|
|
79
|
-
fi
|
|
80
|
-
|
|
81
|
-
# Test: double-sourcing is idempotent
|
|
82
|
-
test_start "logging_idempotent"
|
|
83
|
-
output=$(bash -c '
|
|
84
|
-
source "'"$LOGGING_FILE"'"
|
|
85
|
-
source "'"$LOGGING_FILE"'"
|
|
86
|
-
log_info "still works"
|
|
87
|
-
' 2>&1)
|
|
88
|
-
if [[ "$output" == *"still works"* ]]; then
|
|
89
|
-
((TESTS_PASSED++)) || true
|
|
90
|
-
echo -e " ${GREEN}✓${NC} $CURRENT_TEST: double-sourcing is safe"
|
|
91
|
-
else
|
|
92
|
-
((TESTS_FAILED++)) || true
|
|
93
|
-
echo -e " ${RED}✗${NC} $CURRENT_TEST: double-sourcing should be safe"
|
|
94
|
-
fi
|
|
95
|
-
|
|
96
|
-
print_summary
|
|
@@ -1,388 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# shellcheck disable=SC2016
|
|
3
|
-
# SC2016: Single quotes are intentional for mock data containing literal $variables
|
|
4
|
-
# Comprehensive OS Detection Tests
|
|
5
|
-
# Achieves 100% line and branch coverage for os_detection.sh
|
|
6
|
-
|
|
7
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
-
source "$SCRIPT_DIR/../framework/assertions.sh"
|
|
9
|
-
source "$SCRIPT_DIR/../framework/mocks.sh"
|
|
10
|
-
|
|
11
|
-
# Source the function being tested
|
|
12
|
-
source "$REPO_ROOT/install/lib/os_detection.sh"
|
|
13
|
-
|
|
14
|
-
echo "Testing OS detection comprehensive coverage..."
|
|
15
|
-
|
|
16
|
-
# Test Darwin/macOS detection
|
|
17
|
-
test_start "detect_os_macos"
|
|
18
|
-
mock_init
|
|
19
|
-
mock_command "uname" "Darwin" 0
|
|
20
|
-
mock_env "OS" ""
|
|
21
|
-
mock_env "ARCH" ""
|
|
22
|
-
mock_env "target_os" ""
|
|
23
|
-
detect_os
|
|
24
|
-
assert_equals "macos" "$target_os" "should detect macOS"
|
|
25
|
-
assert_equals "Darwin" "$OS" "should set OS to Darwin"
|
|
26
|
-
mock_cleanup
|
|
27
|
-
|
|
28
|
-
# Test Linux with Microsoft/WSL detection via /proc/version
|
|
29
|
-
test_start "detect_os_wsl2_microsoft"
|
|
30
|
-
mock_init
|
|
31
|
-
mock_command "uname" "Linux" 0
|
|
32
|
-
mock_file "microsoft linux subsystem" "/proc/version"
|
|
33
|
-
mock_env "OS" ""
|
|
34
|
-
mock_env "ARCH" ""
|
|
35
|
-
mock_env "target_os" ""
|
|
36
|
-
detect_os
|
|
37
|
-
assert_equals "wsl2" "$target_os" "should detect WSL2 with Microsoft"
|
|
38
|
-
mock_cleanup
|
|
39
|
-
|
|
40
|
-
# Test Linux with WSL detection via /proc/version
|
|
41
|
-
test_start "detect_os_wsl2_wsl_keyword"
|
|
42
|
-
mock_init
|
|
43
|
-
mock_command "uname" "Linux" 0
|
|
44
|
-
mock_file "WSL2 kernel" "/proc/version"
|
|
45
|
-
mock_env "OS" ""
|
|
46
|
-
mock_env "ARCH" ""
|
|
47
|
-
mock_env "target_os" ""
|
|
48
|
-
detect_os
|
|
49
|
-
assert_equals "wsl2" "$target_os" "should detect WSL2 with WSL keyword"
|
|
50
|
-
mock_cleanup
|
|
51
|
-
|
|
52
|
-
# Test Ubuntu detection via os-release
|
|
53
|
-
test_start "detect_os_ubuntu"
|
|
54
|
-
mock_init
|
|
55
|
-
mock_command "uname" "Linux" 0
|
|
56
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
57
|
-
mock_file 'ID=ubuntu
|
|
58
|
-
NAME="Ubuntu"' "/etc/os-release"
|
|
59
|
-
mock_env "OS" ""
|
|
60
|
-
mock_env "ARCH" ""
|
|
61
|
-
mock_env "target_os" ""
|
|
62
|
-
detect_os
|
|
63
|
-
assert_equals "debian" "$target_os" "should detect Ubuntu as debian"
|
|
64
|
-
mock_cleanup
|
|
65
|
-
|
|
66
|
-
# Test Debian detection via os-release
|
|
67
|
-
test_start "detect_os_debian"
|
|
68
|
-
mock_init
|
|
69
|
-
mock_command "uname" "Linux" 0
|
|
70
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
71
|
-
mock_file 'ID=debian
|
|
72
|
-
NAME="Debian"' "/etc/os-release"
|
|
73
|
-
mock_env "OS" ""
|
|
74
|
-
mock_env "ARCH" ""
|
|
75
|
-
mock_env "target_os" ""
|
|
76
|
-
detect_os
|
|
77
|
-
assert_equals "debian" "$target_os" "should detect Debian"
|
|
78
|
-
mock_cleanup
|
|
79
|
-
|
|
80
|
-
# Test Pop!_OS detection via os-release
|
|
81
|
-
test_start "detect_os_pop"
|
|
82
|
-
mock_init
|
|
83
|
-
mock_command "uname" "Linux" 0
|
|
84
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
85
|
-
mock_file 'ID=pop
|
|
86
|
-
NAME="Pop!_OS"' "/etc/os-release"
|
|
87
|
-
mock_env "OS" ""
|
|
88
|
-
mock_env "ARCH" ""
|
|
89
|
-
mock_env "target_os" ""
|
|
90
|
-
detect_os
|
|
91
|
-
assert_equals "debian" "$target_os" "should detect Pop!_OS as debian"
|
|
92
|
-
mock_cleanup
|
|
93
|
-
|
|
94
|
-
# Test Linux Mint detection via os-release
|
|
95
|
-
test_start "detect_os_linuxmint"
|
|
96
|
-
mock_init
|
|
97
|
-
mock_command "uname" "Linux" 0
|
|
98
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
99
|
-
mock_file 'ID=linuxmint
|
|
100
|
-
NAME="Linux Mint"' "/etc/os-release"
|
|
101
|
-
mock_env "OS" ""
|
|
102
|
-
mock_env "ARCH" ""
|
|
103
|
-
mock_env "target_os" ""
|
|
104
|
-
detect_os
|
|
105
|
-
assert_equals "debian" "$target_os" "should detect Linux Mint as debian"
|
|
106
|
-
mock_cleanup
|
|
107
|
-
|
|
108
|
-
# Test Elementary OS detection via os-release
|
|
109
|
-
test_start "detect_os_elementary"
|
|
110
|
-
mock_init
|
|
111
|
-
mock_command "uname" "Linux" 0
|
|
112
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
113
|
-
mock_file 'ID=elementary
|
|
114
|
-
NAME="elementary OS"' "/etc/os-release"
|
|
115
|
-
mock_env "OS" ""
|
|
116
|
-
mock_env "ARCH" ""
|
|
117
|
-
mock_env "target_os" ""
|
|
118
|
-
detect_os
|
|
119
|
-
assert_equals "debian" "$target_os" "should detect Elementary as debian"
|
|
120
|
-
mock_cleanup
|
|
121
|
-
|
|
122
|
-
# Test Fedora detection via os-release
|
|
123
|
-
test_start "detect_os_fedora"
|
|
124
|
-
mock_init
|
|
125
|
-
mock_command "uname" "Linux" 0
|
|
126
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
127
|
-
mock_file 'ID=fedora
|
|
128
|
-
NAME="Fedora"' "/etc/os-release"
|
|
129
|
-
mock_env "OS" ""
|
|
130
|
-
mock_env "ARCH" ""
|
|
131
|
-
mock_env "target_os" ""
|
|
132
|
-
detect_os
|
|
133
|
-
assert_equals "fedora" "$target_os" "should detect Fedora"
|
|
134
|
-
mock_cleanup
|
|
135
|
-
|
|
136
|
-
# Test RHEL detection via os-release
|
|
137
|
-
test_start "detect_os_rhel"
|
|
138
|
-
mock_init
|
|
139
|
-
mock_command "uname" "Linux" 0
|
|
140
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
141
|
-
mock_file 'ID=rhel
|
|
142
|
-
NAME="Red Hat Enterprise Linux"' "/etc/os-release"
|
|
143
|
-
mock_env "OS" ""
|
|
144
|
-
mock_env "ARCH" ""
|
|
145
|
-
mock_env "target_os" ""
|
|
146
|
-
detect_os
|
|
147
|
-
assert_equals "fedora" "$target_os" "should detect RHEL as fedora"
|
|
148
|
-
mock_cleanup
|
|
149
|
-
|
|
150
|
-
# Test CentOS detection via os-release
|
|
151
|
-
test_start "detect_os_centos"
|
|
152
|
-
mock_init
|
|
153
|
-
mock_command "uname" "Linux" 0
|
|
154
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
155
|
-
mock_file 'ID=centos
|
|
156
|
-
NAME="CentOS"' "/etc/os-release"
|
|
157
|
-
mock_env "OS" ""
|
|
158
|
-
mock_env "ARCH" ""
|
|
159
|
-
mock_env "target_os" ""
|
|
160
|
-
detect_os
|
|
161
|
-
assert_equals "fedora" "$target_os" "should detect CentOS as fedora"
|
|
162
|
-
mock_cleanup
|
|
163
|
-
|
|
164
|
-
# Test Rocky Linux detection via os-release
|
|
165
|
-
test_start "detect_os_rocky"
|
|
166
|
-
mock_init
|
|
167
|
-
mock_command "uname" "Linux" 0
|
|
168
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
169
|
-
mock_file 'ID=rocky
|
|
170
|
-
NAME="Rocky Linux"' "/etc/os-release"
|
|
171
|
-
mock_env "OS" ""
|
|
172
|
-
mock_env "ARCH" ""
|
|
173
|
-
mock_env "target_os" ""
|
|
174
|
-
detect_os
|
|
175
|
-
assert_equals "fedora" "$target_os" "should detect Rocky as fedora"
|
|
176
|
-
mock_cleanup
|
|
177
|
-
|
|
178
|
-
# Test AlmaLinux detection via os-release
|
|
179
|
-
test_start "detect_os_alma"
|
|
180
|
-
mock_init
|
|
181
|
-
mock_command "uname" "Linux" 0
|
|
182
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
183
|
-
mock_file 'ID=alma
|
|
184
|
-
NAME="AlmaLinux"' "/etc/os-release"
|
|
185
|
-
mock_env "OS" ""
|
|
186
|
-
mock_env "ARCH" ""
|
|
187
|
-
mock_env "target_os" ""
|
|
188
|
-
detect_os
|
|
189
|
-
assert_equals "fedora" "$target_os" "should detect AlmaLinux as fedora"
|
|
190
|
-
mock_cleanup
|
|
191
|
-
|
|
192
|
-
# Test Arch Linux detection via os-release
|
|
193
|
-
test_start "detect_os_arch"
|
|
194
|
-
mock_init
|
|
195
|
-
mock_command "uname" "Linux" 0
|
|
196
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
197
|
-
mock_file 'ID=arch
|
|
198
|
-
NAME="Arch Linux"' "/etc/os-release"
|
|
199
|
-
mock_env "OS" ""
|
|
200
|
-
mock_env "ARCH" ""
|
|
201
|
-
mock_env "target_os" ""
|
|
202
|
-
detect_os
|
|
203
|
-
assert_equals "arch" "$target_os" "should detect Arch Linux"
|
|
204
|
-
mock_cleanup
|
|
205
|
-
|
|
206
|
-
# Test Manjaro detection via os-release
|
|
207
|
-
test_start "detect_os_manjaro"
|
|
208
|
-
mock_init
|
|
209
|
-
mock_command "uname" "Linux" 0
|
|
210
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
211
|
-
mock_file 'ID=manjaro
|
|
212
|
-
NAME="Manjaro"' "/etc/os-release"
|
|
213
|
-
mock_env "OS" ""
|
|
214
|
-
mock_env "ARCH" ""
|
|
215
|
-
mock_env "target_os" ""
|
|
216
|
-
detect_os
|
|
217
|
-
assert_equals "arch" "$target_os" "should detect Manjaro as arch"
|
|
218
|
-
mock_cleanup
|
|
219
|
-
|
|
220
|
-
# Test EndeavourOS detection via os-release
|
|
221
|
-
test_start "detect_os_endeavouros"
|
|
222
|
-
mock_init
|
|
223
|
-
mock_command "uname" "Linux" 0
|
|
224
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
225
|
-
mock_file 'ID=endeavouros
|
|
226
|
-
NAME="EndeavourOS"' "/etc/os-release"
|
|
227
|
-
mock_env "OS" ""
|
|
228
|
-
mock_env "ARCH" ""
|
|
229
|
-
mock_env "target_os" ""
|
|
230
|
-
detect_os
|
|
231
|
-
assert_equals "arch" "$target_os" "should detect EndeavourOS as arch"
|
|
232
|
-
mock_cleanup
|
|
233
|
-
|
|
234
|
-
# Test unknown Linux distribution via os-release
|
|
235
|
-
test_start "detect_os_unknown_linux_distro"
|
|
236
|
-
mock_init
|
|
237
|
-
mock_command "uname" "Linux" 0
|
|
238
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
239
|
-
mock_file 'ID=unknown-distro
|
|
240
|
-
NAME="Unknown Distribution"' "/etc/os-release"
|
|
241
|
-
mock_env "OS" ""
|
|
242
|
-
mock_env "ARCH" ""
|
|
243
|
-
mock_env "target_os" ""
|
|
244
|
-
detect_os
|
|
245
|
-
assert_equals "linux" "$target_os" "should detect unknown distro as linux"
|
|
246
|
-
mock_cleanup
|
|
247
|
-
|
|
248
|
-
# Test Linux without os-release file
|
|
249
|
-
test_start "detect_os_linux_no_os_release"
|
|
250
|
-
mock_init
|
|
251
|
-
mock_command "uname" "Linux" 0
|
|
252
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
253
|
-
# Don't create /etc/os-release file
|
|
254
|
-
mock_env "OS" ""
|
|
255
|
-
mock_env "ARCH" ""
|
|
256
|
-
mock_env "target_os" ""
|
|
257
|
-
detect_os
|
|
258
|
-
assert_equals "linux" "$target_os" "should detect linux without os-release"
|
|
259
|
-
mock_cleanup
|
|
260
|
-
|
|
261
|
-
# Test empty ID field in os-release
|
|
262
|
-
test_start "detect_os_empty_id_in_os_release"
|
|
263
|
-
mock_init
|
|
264
|
-
mock_command "uname" "Linux" 0
|
|
265
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
266
|
-
mock_file 'NAME="Some Distribution"' "/etc/os-release"
|
|
267
|
-
mock_env "OS" ""
|
|
268
|
-
mock_env "ARCH" ""
|
|
269
|
-
mock_env "target_os" ""
|
|
270
|
-
detect_os
|
|
271
|
-
assert_equals "linux" "$target_os" "should default to linux with empty ID"
|
|
272
|
-
mock_cleanup
|
|
273
|
-
|
|
274
|
-
# Test unknown operating system (not Darwin or Linux)
|
|
275
|
-
test_start "detect_os_unknown_os"
|
|
276
|
-
mock_init
|
|
277
|
-
mock_command "uname" "FreeBSD" 0
|
|
278
|
-
mock_env "OS" ""
|
|
279
|
-
mock_env "ARCH" ""
|
|
280
|
-
mock_env "target_os" ""
|
|
281
|
-
detect_os
|
|
282
|
-
assert_equals "unknown" "$target_os" "should detect unknown OS"
|
|
283
|
-
assert_equals "FreeBSD" "$OS" "should set OS to FreeBSD"
|
|
284
|
-
mock_cleanup
|
|
285
|
-
|
|
286
|
-
# Test architecture detection
|
|
287
|
-
test_start "detect_os_sets_arch"
|
|
288
|
-
mock_init
|
|
289
|
-
mock_command "uname" -e 'if [ "$1" = "-s" ]; then echo "Linux"; elif [ "$1" = "-m" ]; then echo "x86_64"; fi' 0
|
|
290
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
291
|
-
mock_file 'ID=ubuntu' "/etc/os-release"
|
|
292
|
-
mock_env "OS" ""
|
|
293
|
-
mock_env "ARCH" ""
|
|
294
|
-
mock_env "target_os" ""
|
|
295
|
-
detect_os
|
|
296
|
-
assert_equals "x86_64" "$ARCH" "should set ARCH variable"
|
|
297
|
-
mock_cleanup
|
|
298
|
-
|
|
299
|
-
# Test is_macos function when target_os is macos
|
|
300
|
-
test_start "is_macos_true"
|
|
301
|
-
target_os="macos"
|
|
302
|
-
assert_true "is_macos" "should return true when target_os is macos"
|
|
303
|
-
|
|
304
|
-
# Test is_macos function when target_os is not macos
|
|
305
|
-
test_start "is_macos_false"
|
|
306
|
-
target_os="linux"
|
|
307
|
-
assert_false "is_macos" "should return false when target_os is not macos"
|
|
308
|
-
|
|
309
|
-
# Test is_linux function when OS is Linux
|
|
310
|
-
test_start "is_linux_true"
|
|
311
|
-
OS="Linux"
|
|
312
|
-
assert_true "is_linux" "should return true when OS is Linux"
|
|
313
|
-
|
|
314
|
-
# Test is_linux function when OS is not Linux
|
|
315
|
-
test_start "is_linux_false"
|
|
316
|
-
OS="Darwin"
|
|
317
|
-
assert_false "is_linux" "should return false when OS is not Linux"
|
|
318
|
-
|
|
319
|
-
# Test is_wsl function when target_os is wsl2
|
|
320
|
-
test_start "is_wsl_true"
|
|
321
|
-
target_os="wsl2"
|
|
322
|
-
assert_true "is_wsl" "should return true when target_os is wsl2"
|
|
323
|
-
|
|
324
|
-
# Test is_wsl function when target_os is not wsl2
|
|
325
|
-
test_start "is_wsl_false"
|
|
326
|
-
target_os="linux"
|
|
327
|
-
assert_false "is_wsl" "should return false when target_os is not wsl2"
|
|
328
|
-
|
|
329
|
-
# Test is_debian function when target_os is debian
|
|
330
|
-
test_start "is_debian_true_debian"
|
|
331
|
-
target_os="debian"
|
|
332
|
-
assert_true "is_debian" "should return true when target_os is debian"
|
|
333
|
-
|
|
334
|
-
# Test is_debian function when target_os is wsl2 (also considered debian)
|
|
335
|
-
test_start "is_debian_true_wsl2"
|
|
336
|
-
target_os="wsl2"
|
|
337
|
-
assert_true "is_debian" "should return true when target_os is wsl2"
|
|
338
|
-
|
|
339
|
-
# Test is_debian function when target_os is not debian or wsl2
|
|
340
|
-
test_start "is_debian_false"
|
|
341
|
-
target_os="fedora"
|
|
342
|
-
assert_false "is_debian" "should return false when target_os is fedora"
|
|
343
|
-
|
|
344
|
-
# Test is_fedora function when target_os is fedora
|
|
345
|
-
test_start "is_fedora_true"
|
|
346
|
-
target_os="fedora"
|
|
347
|
-
assert_true "is_fedora" "should return true when target_os is fedora"
|
|
348
|
-
|
|
349
|
-
# Test is_fedora function when target_os is not fedora
|
|
350
|
-
test_start "is_fedora_false"
|
|
351
|
-
target_os="debian"
|
|
352
|
-
assert_false "is_fedora" "should return false when target_os is not fedora"
|
|
353
|
-
|
|
354
|
-
# Test is_arch function when target_os is arch
|
|
355
|
-
test_start "is_arch_true"
|
|
356
|
-
target_os="arch"
|
|
357
|
-
assert_true "is_arch" "should return true when target_os is arch"
|
|
358
|
-
|
|
359
|
-
# Test is_arch function when target_os is not arch
|
|
360
|
-
test_start "is_arch_false"
|
|
361
|
-
target_os="debian"
|
|
362
|
-
assert_false "is_arch" "should return false when target_os is not arch"
|
|
363
|
-
|
|
364
|
-
# Test print_os_info function
|
|
365
|
-
test_start "print_os_info_output"
|
|
366
|
-
OS="Linux"
|
|
367
|
-
ARCH="x86_64"
|
|
368
|
-
target_os="debian"
|
|
369
|
-
output=$(print_os_info)
|
|
370
|
-
assert_output_contains "OS: Linux" "echo '$output'"
|
|
371
|
-
assert_output_contains "Arch: x86_64" "echo '$output'"
|
|
372
|
-
assert_output_contains "Target: debian" "echo '$output'"
|
|
373
|
-
|
|
374
|
-
# Test variable export
|
|
375
|
-
test_start "detect_os_exports_variables"
|
|
376
|
-
mock_init
|
|
377
|
-
mock_command "uname" "Linux" 0
|
|
378
|
-
mock_file "regular linux kernel" "/proc/version"
|
|
379
|
-
mock_file 'ID=ubuntu' "/etc/os-release"
|
|
380
|
-
unset OS ARCH target_os
|
|
381
|
-
detect_os
|
|
382
|
-
# These should be set and exported after detect_os
|
|
383
|
-
assert_not_empty "$OS" "OS should be set"
|
|
384
|
-
assert_not_empty "$ARCH" "ARCH should be set"
|
|
385
|
-
assert_not_empty "$target_os" "target_os should be set"
|
|
386
|
-
mock_cleanup
|
|
387
|
-
|
|
388
|
-
echo "OS detection comprehensive coverage tests completed."
|