deb-bootc-image-builder/test-sudo-fix.sh
joe 0409f1d67c
Some checks failed
particle-os CI / Test particle-os (push) Failing after 1s
particle-os CI / Integration Test (push) Has been skipped
particle-os CI / Security & Quality (push) Failing after 1s
Test particle-os Basic Functionality / test-basic (push) Failing after 1s
Tests / test (1.21.x) (push) Failing after 1s
Tests / test (1.22.x) (push) Failing after 1s
particle-os CI / Build and Release (push) Has been skipped
Add comprehensive documentation, recipes, and testing framework
- Add extensive documentation covering current status, usage, and testing strategies
- Add recipe files for various image configurations (minimal, debug, kernel test, etc.)
- Add testing and management scripts for comprehensive testing workflows
- Add Go module configuration and updated Go code
- Add manual bootable image creation script
- Update todo with current project status and next steps
2025-08-19 20:50:20 -07:00

66 lines
2 KiB
Bash
Executable file

#!/bin/bash
set -e
echo "🧪 Testing sudo fix for file operations..."
# Create a test directory structure similar to the build environment
TEST_DIR="/tmp/test-sudo-fix"
ROOTFS_DIR="$TEST_DIR/rootfs/etc"
TEMP_DIR="/tmp/test-sudo-fix-temp"
echo "📁 Creating test directory structure..."
sudo rm -rf "$TEST_DIR" "$TEMP_DIR"
mkdir -p "$ROOTFS_DIR" "$TEMP_DIR"
# Set ownership to root:root (like in the build environment)
echo "🔐 Setting ownership to root:root for rootfs..."
sudo chown -R root:root "$TEST_DIR"
echo "👤 Current user: $(whoami)"
echo "📊 Directory ownership:"
ls -la "$TEST_DIR"
# Test 1: Direct file write (should fail)
echo -e "\n🧪 Test 1: Direct file write (should fail)..."
if echo "test content" > "$ROOTFS_DIR/test1.txt" 2>/dev/null; then
echo "❌ Direct write succeeded (unexpected)"
else
echo "✅ Direct write failed as expected (permission denied)"
fi
# Test 2: Sudo file write (should succeed)
echo -e "\n🧪 Test 2: Sudo file write (should succeed)..."
TEMP_FILE="$TEMP_DIR/temp_test2.txt"
echo "test content" > "$TEMP_FILE"
if sudo cp "$TEMP_FILE" "$ROOTFS_DIR/test2.txt"; then
echo "✅ Sudo file write succeeded"
sudo chmod 644 "$ROOTFS_DIR/test2.txt"
else
echo "❌ Sudo file write failed"
exit 1
fi
# Test 3: Sudo symlink creation (should succeed)
echo -e "\n🧪 Test 3: Sudo symlink creation (should succeed)..."
if sudo ln -sf "/usr/share/zoneinfo/UTC" "$ROOTFS_DIR/localtime"; then
echo "✅ Sudo symlink creation succeeded"
else
echo "❌ Sudo symlink creation failed"
exit 1
fi
# Test 4: Verify files were created
echo -e "\n📋 Verifying created files..."
echo "Files in $ROOTFS_DIR:"
ls -la "$ROOTFS_DIR"
echo -e "\n🎉 All sudo tests passed! The fix should work."
echo "💡 The issue was that files were owned by root:root but the Go code"
echo " was trying to write them directly as the current user."
echo "🔧 The solution is to use sudo for file operations in the rootfs."
# Cleanup
echo -e "\n🧹 Cleaning up..."
sudo rm -rf "$TEST_DIR" "$TEMP_DIR"
echo "✅ Cleanup completed"