name: "SFTP Integration Tests" on: push: branches: [ master, main ] paths: - 'weed/sftpd/**' - 'weed/command/sftp.go' - 'test/sftp/**' - '.github/workflows/sftp-tests.yml' pull_request: branches: [ master, main ] paths: - 'weed/sftpd/**' - 'weed/command/sftp.go' - 'test/sftp/**' - '.github/workflows/sftp-tests.yml' concurrency: group: ${{ github.head_ref }}/sftp-tests cancel-in-progress: true permissions: contents: read env: GO_VERSION: '1.24' TEST_TIMEOUT: '15m' jobs: sftp-integration: name: SFTP Integration Testing runs-on: ubuntu-22.04 timeout-minutes: 20 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y openssh-client - name: Build SeaweedFS run: | cd weed go build -o weed . chmod +x weed ./weed version - name: Run SFTP Integration Tests run: | cd test/sftp echo "๐Ÿงช Running SFTP integration tests..." echo "============================================" # Install test dependencies go mod download # Run all SFTP tests go test -v -timeout=${{ env.TEST_TIMEOUT }} ./... echo "============================================" echo "โœ… SFTP integration tests completed" - name: Test Summary if: always() run: | echo "## ๐Ÿ” SFTP Integration Test Summary" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "### Test Coverage" >> $GITHUB_STEP_SUMMARY echo "- โœ… **HomeDir Path Translation**: User home directory mapping (fixes #7470)" >> $GITHUB_STEP_SUMMARY echo "- โœ… **File Operations**: Upload, download, delete" >> $GITHUB_STEP_SUMMARY echo "- โœ… **Directory Operations**: Create, list, remove" >> $GITHUB_STEP_SUMMARY echo "- โœ… **Large File Handling**: 1MB+ file support" >> $GITHUB_STEP_SUMMARY echo "- โœ… **Path Edge Cases**: Unicode, trailing slashes, .. paths" >> $GITHUB_STEP_SUMMARY echo "- โœ… **Admin Access**: Root user verification" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "### Test Configuration" >> $GITHUB_STEP_SUMMARY echo "| User | HomeDir | Permissions |" >> $GITHUB_STEP_SUMMARY echo "|------|---------|-------------|" >> $GITHUB_STEP_SUMMARY echo "| admin | / | Full access |" >> $GITHUB_STEP_SUMMARY echo "| testuser | /sftp/testuser | Home directory only |" >> $GITHUB_STEP_SUMMARY echo "| readonly | /public | Read-only |" >> $GITHUB_STEP_SUMMARY