'Generic Commit'
All checks were successful
Build-Test-Publish / build (linux/amd64) (push) Successful in 21s
Build-Test-Publish / build (linux/arm64) (push) Successful in 25s

This commit is contained in:
Your Name 2025-06-22 13:04:58 +12:00
parent 218cd8cabc
commit 84cda8039a

View File

@ -417,6 +417,112 @@ else
echo "To run full tests, set SOS_WRITE_TOKEN environment variable" echo "To run full tests, set SOS_WRITE_TOKEN environment variable"
fi fi
# Test 13d: Comprehensive uninstall test
if [ -n "${SOS_WRITE_TOKEN:-}" ]; then
echo -e "\nTest 13d: Comprehensive uninstall test"
TEST_UNINSTALL_TOOL="test-uninstall-$RANDOM"
UNINSTALL_DIR="${TEST_DIR}/${TEST_UNINSTALL_TOOL}"
mkdir -p "$UNINSTALL_DIR"
# Create test tool with multiple executables
cat > "$UNINSTALL_DIR/${TEST_UNINSTALL_TOOL}" << 'EOF'
#!/bin/bash
case "$1" in
version) echo "1.0.0" ;;
autocomplete) echo "help version" ;;
*) echo "Test uninstall tool" ;;
esac
EOF
chmod +x "$UNINSTALL_DIR/${TEST_UNINSTALL_TOOL}"
# Create a second executable in the tool
cat > "$UNINSTALL_DIR/${TEST_UNINSTALL_TOOL}-helper" << 'EOF'
#!/bin/bash
echo "Helper tool"
EOF
chmod +x "$UNINSTALL_DIR/${TEST_UNINSTALL_TOOL}-helper"
# Publish and install the tool
PUBLISH_OUTPUT=$(timeout 3 "$GETPKG" publish "${TEST_UNINSTALL_TOOL}:${TEST_ARCH}" "$UNINSTALL_DIR" 2>&1)
if [[ "$PUBLISH_OUTPUT" =~ Published! ]]; then
INSTALL_OUTPUT=$(timeout 3 "$GETPKG" install "$TEST_UNINSTALL_TOOL" 2>&1)
if [[ "$INSTALL_OUTPUT" =~ Installed\ ${TEST_UNINSTALL_TOOL}\ successfully ]]; then
# Count bashrc entries before uninstall
BASHRC_ENTRIES_BEFORE=$(grep -c "$TEST_UNINSTALL_TOOL" ~/.bashrc_getpkg 2>/dev/null || true)
BASHRC_ENTRIES_BEFORE=${BASHRC_ENTRIES_BEFORE:-0}
# Verify all components exist
CONFIG_EXISTS=false
TOOL_DIR_EXISTS=false
SYMLINK_EXISTS=false
HELPER_SYMLINK_EXISTS=false
[ -f ~/.config/getpkg/"${TEST_UNINSTALL_TOOL}.json" ] && CONFIG_EXISTS=true
[ -d ~/.getpkg/"$TEST_UNINSTALL_TOOL" ] && TOOL_DIR_EXISTS=true
[ -L ~/.local/bin/getpkg/"$TEST_UNINSTALL_TOOL" ] && SYMLINK_EXISTS=true
[ -L ~/.local/bin/getpkg/"${TEST_UNINSTALL_TOOL}-helper" ] && HELPER_SYMLINK_EXISTS=true
if $CONFIG_EXISTS && $TOOL_DIR_EXISTS && $SYMLINK_EXISTS; then
# Now uninstall
UNINSTALL_OUTPUT=$(timeout 3 "$GETPKG" uninstall "$TEST_UNINSTALL_TOOL" 2>&1)
if [[ "$UNINSTALL_OUTPUT" =~ Uninstalled\ ${TEST_UNINSTALL_TOOL}\ successfully ]]; then
# Check all components are removed
ALL_REMOVED=true
# Check config file removed
if [ -f ~/.config/getpkg/"${TEST_UNINSTALL_TOOL}.json" ]; then
echo "ERROR: Config file still exists after uninstall"
ALL_REMOVED=false
fi
# Check tool directory removed
if [ -d ~/.getpkg/"$TEST_UNINSTALL_TOOL" ]; then
echo "ERROR: Tool directory still exists after uninstall"
ALL_REMOVED=false
fi
# Check symlinks removed
if [ -L ~/.local/bin/getpkg/"$TEST_UNINSTALL_TOOL" ]; then
echo "ERROR: Main symlink still exists after uninstall"
ALL_REMOVED=false
fi
if [ -L ~/.local/bin/getpkg/"${TEST_UNINSTALL_TOOL}-helper" ]; then
echo "ERROR: Helper symlink still exists after uninstall"
ALL_REMOVED=false
fi
# Check bashrc entries removed
BASHRC_ENTRIES_AFTER=$(grep -c "$TEST_UNINSTALL_TOOL" ~/.bashrc_getpkg 2>/dev/null || true)
BASHRC_ENTRIES_AFTER=${BASHRC_ENTRIES_AFTER:-0}
if [ "$BASHRC_ENTRIES_AFTER" -ne 0 ]; then
echo "ERROR: Bashrc entries still exist after uninstall (found $BASHRC_ENTRIES_AFTER entries)"
ALL_REMOVED=false
fi
if $ALL_REMOVED; then
print_test_result "Complete uninstall removes all components" 0
else
print_test_result "Complete uninstall removes all components" 1
fi
else
print_test_result "Complete uninstall removes all components" 1
fi
else
echo "ERROR: Not all components were created during install"
print_test_result "Complete uninstall removes all components" 1
fi
# Cleanup from server
$GETPKG unpublish "${TEST_UNINSTALL_TOOL}:${TEST_ARCH}" 2>/dev/null || true
else
print_test_result "Complete uninstall removes all components" 1
fi
else
print_test_result "Complete uninstall removes all components" 1
fi
fi
# Test 14: Invalid tool name validation # Test 14: Invalid tool name validation
echo -e "\nTest 14: Invalid tool name validation" echo -e "\nTest 14: Invalid tool name validation"
INVALID_OUTPUT=$(timeout 3 "$GETPKG" install "../evil-tool" 2>&1) INVALID_OUTPUT=$(timeout 3 "$GETPKG" install "../evil-tool" 2>&1)