'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"
|
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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user