'Generic Commit'
This commit is contained in:
parent
218cd8cabc
commit
84cda8039a
106
getpkg/test.sh
106
getpkg/test.sh
@ -417,6 +417,112 @@ else
|
||||
echo "To run full tests, set SOS_WRITE_TOKEN environment variable"
|
||||
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
|
||||
echo -e "\nTest 14: Invalid tool name validation"
|
||||
INVALID_OUTPUT=$(timeout 3 "$GETPKG" install "../evil-tool" 2>&1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user