mirror of
https://github.com/Fission-AI/OpenSpec.git
synced 2026-10-02 05:24:34 +08:00
* fix: make shell completion install opt-in and fix PowerShell profile encoding corruption (#948) The postinstall hook silently modified users' shell profiles and corrupted UTF-16 LE PowerShell profiles by forcing all reads/writes through UTF-8. Now postinstall only prints a tip, and the PowerShell installer preserves file encoding via BOM detection on read/write. * Address review: skip profile on any read error, log warnings, clean up UTF-16 BE handling - configureProfile: skip profile on any non-ENOENT error instead of falling through with empty content (could overwrite real profile) - removeProfileConfig: log warning on unexpected read errors instead of silently swallowing - detectEncoding: throw directly for UTF-16 BE instead of using sentinel value - Add test for UTF-16 BE profile rejection
58 lines
1.5 KiB
Bash
Executable File
58 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Test script for postinstall.js
|
|
# Tests different scenarios: normal install, CI, opt-out
|
|
|
|
set -e
|
|
|
|
echo "======================================"
|
|
echo "Testing OpenSpec Postinstall Script"
|
|
echo "======================================"
|
|
echo ""
|
|
|
|
# Save original environment
|
|
ORIGINAL_CI="${CI:-}"
|
|
ORIGINAL_OPENSPEC_NO_COMPLETIONS="${OPENSPEC_NO_COMPLETIONS:-}"
|
|
|
|
# Test 1: Normal install
|
|
echo "Test 1: Normal install (should print tip about completions)"
|
|
echo "--------------------------------------"
|
|
unset CI
|
|
unset OPENSPEC_NO_COMPLETIONS
|
|
node scripts/postinstall.js
|
|
echo ""
|
|
|
|
# Test 2: CI environment (should skip silently)
|
|
echo "Test 2: CI=true (should skip silently)"
|
|
echo "--------------------------------------"
|
|
export CI=true
|
|
node scripts/postinstall.js
|
|
echo "[No output expected - skipped due to CI]"
|
|
echo ""
|
|
|
|
# Test 3: Opt-out flag (should skip silently)
|
|
echo "Test 3: OPENSPEC_NO_COMPLETIONS=1 (should skip silently)"
|
|
echo "--------------------------------------"
|
|
unset CI
|
|
export OPENSPEC_NO_COMPLETIONS=1
|
|
node scripts/postinstall.js
|
|
echo "[No output expected - skipped due to opt-out]"
|
|
echo ""
|
|
|
|
# Restore original environment
|
|
if [ -n "$ORIGINAL_CI" ]; then
|
|
export CI="$ORIGINAL_CI"
|
|
else
|
|
unset CI
|
|
fi
|
|
|
|
if [ -n "$ORIGINAL_OPENSPEC_NO_COMPLETIONS" ]; then
|
|
export OPENSPEC_NO_COMPLETIONS="$ORIGINAL_OPENSPEC_NO_COMPLETIONS"
|
|
else
|
|
unset OPENSPEC_NO_COMPLETIONS
|
|
fi
|
|
|
|
echo "======================================"
|
|
echo "All tests completed successfully!"
|
|
echo "======================================"
|